From b1349fa3c52f328896a4182a8e7b90bce75f1e1e Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Wed, 9 Jan 2013 10:39:16 +0000 Subject: [PATCH] Incrase the number of parameters for AlignedCharArrayUnion. We need this to correctly fix ASTMatchers/ASTTypeTraits.h in clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171965 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/AlignOf.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/include/llvm/Support/AlignOf.h b/include/llvm/Support/AlignOf.h index 0894316f065..bba34248569 100644 --- a/include/llvm/Support/AlignOf.h +++ b/include/llvm/Support/AlignOf.h @@ -169,17 +169,20 @@ LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(128) namespace detail { template + typename T2 = char, typename T3 = char, typename T4 = char, + typename T5 = char, typename T6 = char, typename T7 = char> class AlignerImpl { - T1 t1; T2 t2; T3 t3; T4 t4; + T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7; AlignerImpl(); // Never defined or instantiated. }; template + typename T2 = char, typename T3 = char, typename T4 = char, + typename T5 = char, typename T6 = char, typename T7 = char> union SizerImpl { - char arr1[sizeof(T1)], arr2[sizeof(T2)], arr3[sizeof(T3)], arr4[sizeof(T4)]; + char arr1[sizeof(T1)], arr2[sizeof(T2)], arr3[sizeof(T3)], arr4[sizeof(T4)], + arr5[sizeof(T5)], arr6[sizeof(T6)], arr7[sizeof(T7)]; }; } // end namespace detail @@ -188,14 +191,14 @@ union SizerImpl { /// /// These types may be arrays, structs, or any other types. The goal is to /// expose a char array buffer member which can be used as suitable storage for -/// a placement new of any of these types. Support for more than four types can +/// a placement new of any of these types. Support for more than seven types can /// be added at the cost of more boiler plate. template -struct AlignedCharArrayUnion : - llvm::AlignedCharArray > - ::Alignment, - sizeof(detail::SizerImpl)> { + typename T2 = char, typename T3 = char, typename T4 = char, + typename T5 = char, typename T6 = char, typename T7 = char> +struct AlignedCharArrayUnion : llvm::AlignedCharArray< + AlignOf >::Alignment, + sizeof(detail::SizerImpl)> { }; } // end namespace llvm #endif -- 2.34.1