diff options
Diffstat (limited to 'test/Modules/Inputs/lsv-debuginfo/A/ADT.h')
| -rw-r--r-- | test/Modules/Inputs/lsv-debuginfo/A/ADT.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/Modules/Inputs/lsv-debuginfo/A/ADT.h b/test/Modules/Inputs/lsv-debuginfo/A/ADT.h new file mode 100644 index 000000000000..f48d4f7820a8 --- /dev/null +++ b/test/Modules/Inputs/lsv-debuginfo/A/ADT.h @@ -0,0 +1,45 @@ +#ifndef ADT +#define ADT + +#ifdef WITH_NAMESPACE +namespace llvm { +#endif +template <unsigned Alignment, unsigned Size> +struct AlignedCharArray { + alignas(Alignment) char buffer[Size]; +}; + +template <typename T1> +class AlignerImpl { + T1 t1; +}; + +template <typename T1> +union SizerImpl { + char arr1[sizeof(T1)]; +}; + +template <typename T1> +struct AlignedCharArrayUnion + : AlignedCharArray<alignof(AlignerImpl<T1>), sizeof(SizerImpl<T1>)> {}; + +template <typename T, unsigned N> +struct SmallVectorStorage { + AlignedCharArrayUnion<T> InlineElts[N]; +}; +template <typename T, unsigned N> +class SmallVector : SmallVectorStorage<T, N> {}; + +template <typename T> +struct OptionalStorage { + AlignedCharArrayUnion<T> storage; +}; +template <typename T> +class Optional { + OptionalStorage<T> Storage; +}; + +#ifdef WITH_NAMESPACE +} // namespace llvm +#endif +#endif |
