Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / Inputs / lsv-debuginfo / A / ADT.h
blobf48d4f7820a86dc30438f36a1f0692976635cabc
1 #ifndef ADT
2 #define ADT
4 #ifdef WITH_NAMESPACE
5 namespace llvm {
6 #endif
7 template <unsigned Alignment, unsigned Size>
8 struct AlignedCharArray {
9 alignas(Alignment) char buffer[Size];
12 template <typename T1>
13 class AlignerImpl {
14 T1 t1;
17 template <typename T1>
18 union SizerImpl {
19 char arr1[sizeof(T1)];
22 template <typename T1>
23 struct AlignedCharArrayUnion
24 : AlignedCharArray<alignof(AlignerImpl<T1>), sizeof(SizerImpl<T1>)> {};
26 template <typename T, unsigned N>
27 struct SmallVectorStorage {
28 AlignedCharArrayUnion<T> InlineElts[N];
30 template <typename T, unsigned N>
31 class SmallVector : SmallVectorStorage<T, N> {};
33 template <typename T>
34 struct OptionalStorage {
35 AlignedCharArrayUnion<T> storage;
37 template <typename T>
38 class Optional {
39 OptionalStorage<T> Storage;
42 #ifdef WITH_NAMESPACE
43 } // namespace llvm
44 #endif
45 #endif