14 #ifndef LLVM_SUPPORT_ALIGNOF_H
15 #define LLVM_SUPPORT_ALIGNOF_H
35 template<std::
size_t Alignment, std::
size_t Size>
43 template<std::
size_t Alignment, std::
size_t Size>
54 template<std::
size_t Size>
62 template<std::
size_t Size>
63 struct AlignedCharArray<2, Size> {
70 template<std::
size_t Size>
71 struct AlignedCharArray<4, Size> {
78 template<std::
size_t Size>
79 struct AlignedCharArray<8, Size> {
90 #define LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(x) \
91 template<std::size_t Size> \
92 struct AlignedCharArray<x, Size> { \
93 __declspec(align(x)) char buffer[Size]; \
96 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(16)
97 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(32)
98 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(64)
99 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(128)
101 #undef LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT
106 template <
typename T1,
107 typename T2 = char,
typename T3 = char,
typename T4 = char,
108 typename T5 = char,
typename T6 = char,
typename T7 = char,
109 typename T8 = char,
typename T9 = char,
typename T10 =
char>
111 T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7;
T8 t8; T9 t9; T10 t10;
116 template <
typename T1,
117 typename T2 = char,
typename T3 = char,
typename T4 = char,
118 typename T5 = char,
typename T6 = char,
typename T7 = char,
119 typename T8 = char,
typename T9 = char,
typename T10 =
char>
134 template <
typename T1,
135 typename T2 = char,
typename T3 = char,
typename T4 = char,
136 typename T5 = char,
typename T6 = char,
typename T7 = char,
137 typename T8 = char,
typename T9 = char,
typename T10 =
char>
139 alignof(llvm::detail::AlignerImpl<T1, T2, T3, T4, T5,
140 T6, T7, T8, T9, T10>),
141 sizeof(::llvm::detail::SizerImpl<T1, T2, T3, T4, T5,
142 T6, T7, T8, T9, T10>)> {
146 #endif // LLVM_SUPPORT_ALIGNOF_H
LLVM_ALIGNAS(Alignment) char buffer[Size]
This union template exposes a suitably aligned and sized character array member which can hold elemen...
Helper for building an aligned character array type.