diff options
Diffstat (limited to 'unittests/Support/AlignOfTest.cpp')
-rw-r--r-- | unittests/Support/AlignOfTest.cpp | 92 |
1 files changed, 48 insertions, 44 deletions
diff --git a/unittests/Support/AlignOfTest.cpp b/unittests/Support/AlignOfTest.cpp index b86f2bd9c5..c413451f90 100644 --- a/unittests/Support/AlignOfTest.cpp +++ b/unittests/Support/AlignOfTest.cpp @@ -67,50 +67,54 @@ struct V7 : virtual V2, virtual V6 { virtual ~V7(); }; struct V8 : V5, virtual V6, V7 { double zz; virtual ~V8(); }; // Ensure alignment is a compile-time constant. -char LLVM_ATTRIBUTE_UNUSED test_arr - [AlignOf<char>::Alignment] - [AlignOf<short>::Alignment] - [AlignOf<int>::Alignment] - [AlignOf<long>::Alignment] - [AlignOf<long long>::Alignment] - [AlignOf<float>::Alignment] - [AlignOf<double>::Alignment] - [AlignOf<long double>::Alignment] - [AlignOf<void *>::Alignment] - [AlignOf<int *>::Alignment] - [AlignOf<double (*)(double)>::Alignment] - [AlignOf<double (S6::*)()>::Alignment] - [AlignOf<A1>::Alignment] - [AlignOf<A2>::Alignment] - [AlignOf<A4>::Alignment] - [AlignOf<A8>::Alignment] - [AlignOf<SA1>::Alignment] - [AlignOf<SA2>::Alignment] - [AlignOf<SA4>::Alignment] - [AlignOf<SA8>::Alignment] - [AlignOf<S1>::Alignment] - [AlignOf<S2>::Alignment] - [AlignOf<S3>::Alignment] - [AlignOf<S4>::Alignment] - [AlignOf<S5>::Alignment] - [AlignOf<S6>::Alignment] - [AlignOf<D1>::Alignment] - [AlignOf<D2>::Alignment] - [AlignOf<D3>::Alignment] - [AlignOf<D4>::Alignment] - [AlignOf<D5>::Alignment] - [AlignOf<D6>::Alignment] - [AlignOf<D7>::Alignment] - [AlignOf<D8>::Alignment] - [AlignOf<D9>::Alignment] - [AlignOf<V1>::Alignment] - [AlignOf<V2>::Alignment] - [AlignOf<V3>::Alignment] - [AlignOf<V4>::Alignment] - [AlignOf<V5>::Alignment] - [AlignOf<V6>::Alignment] - [AlignOf<V7>::Alignment] - [AlignOf<V8>::Alignment]; +char LLVM_ATTRIBUTE_UNUSED test_arr1 + [AlignOf<char>::Alignment > 0] + [AlignOf<short>::Alignment > 0] + [AlignOf<int>::Alignment > 0] + [AlignOf<long>::Alignment > 0] + [AlignOf<long long>::Alignment > 0] + [AlignOf<float>::Alignment > 0] + [AlignOf<double>::Alignment > 0] + [AlignOf<long double>::Alignment > 0] + [AlignOf<void *>::Alignment > 0] + [AlignOf<int *>::Alignment > 0] + [AlignOf<double (*)(double)>::Alignment > 0] + [AlignOf<double (S6::*)()>::Alignment > 0]; +char LLVM_ATTRIBUTE_UNUSED test_arr2 + [AlignOf<A1>::Alignment > 0] + [AlignOf<A2>::Alignment > 0] + [AlignOf<A4>::Alignment > 0] + [AlignOf<A8>::Alignment > 0] + [AlignOf<SA1>::Alignment > 0] + [AlignOf<SA2>::Alignment > 0] + [AlignOf<SA4>::Alignment > 0] + [AlignOf<SA8>::Alignment > 0]; +char LLVM_ATTRIBUTE_UNUSED test_arr3 + [AlignOf<S1>::Alignment > 0] + [AlignOf<S2>::Alignment > 0] + [AlignOf<S3>::Alignment > 0] + [AlignOf<S4>::Alignment > 0] + [AlignOf<S5>::Alignment > 0] + [AlignOf<S6>::Alignment > 0]; +char LLVM_ATTRIBUTE_UNUSED test_arr4 + [AlignOf<D1>::Alignment > 0] + [AlignOf<D2>::Alignment > 0] + [AlignOf<D3>::Alignment > 0] + [AlignOf<D4>::Alignment > 0] + [AlignOf<D5>::Alignment > 0] + [AlignOf<D6>::Alignment > 0] + [AlignOf<D7>::Alignment > 0] + [AlignOf<D8>::Alignment > 0] + [AlignOf<D9>::Alignment > 0]; +char LLVM_ATTRIBUTE_UNUSED test_arr5 + [AlignOf<V1>::Alignment > 0] + [AlignOf<V2>::Alignment > 0] + [AlignOf<V3>::Alignment > 0] + [AlignOf<V4>::Alignment > 0] + [AlignOf<V5>::Alignment > 0] + [AlignOf<V6>::Alignment > 0] + [AlignOf<V7>::Alignment > 0] + [AlignOf<V8>::Alignment > 0]; TEST(AlignOfTest, BasicAlignmentInvariants) { // For a very strange reason, many compilers do not support this. Both Clang |