diff options
-rw-r--r-- | llvm/include/llvm/Support/AlignOf.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/include/llvm/Support/AlignOf.h b/llvm/include/llvm/Support/AlignOf.h index e6a61aec851..8600f42f495 100644 --- a/llvm/include/llvm/Support/AlignOf.h +++ b/llvm/include/llvm/Support/AlignOf.h @@ -244,6 +244,18 @@ union SizerImpl { /// 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 ten types can /// be added at the cost of more boilerplate. +#if __GNUC__ == 4 && __GNUC_MINOR__ == 7 +template <typename T1, + typename T2 = char, typename T3 = char, typename T4 = char, + typename T5 = char, typename T6 = char, typename T7 = char, + typename T8 = char, typename T9 = char, typename T10 = char> +struct AlignedCharArrayUnion : llvm::AlignedCharArray< + AlignOf<detail::AlignerImpl<T1, T2, T3, T4, T5, + T6, T7, T8, T9, T10> >::Alignment, + sizeof(::llvm::detail::SizerImpl<T1, T2, T3, T4, T5, + T6, T7, T8, T9, T10>)> { +}; +#else template <typename T1, typename T2 = char, typename T3 = char, typename T4 = char, typename T5 = char, typename T6 = char, typename T7 = char, @@ -254,5 +266,6 @@ struct AlignedCharArrayUnion : llvm::AlignedCharArray< sizeof(::llvm::detail::SizerImpl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>)> { }; +#endif } // end namespace llvm #endif |