From: Benjamin Kramer Date: Fri, 21 Oct 2016 09:15:57 +0000 (+0000) Subject: [Support] Fix AlignOf test on i386-linux. X-Git-Tag: llvmorg-4.0.0-rc1~6610 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa48572b9d9649f81715bb90ea8cd6b7fa60b924;p=platform%2Fupstream%2Fllvm.git [Support] Fix AlignOf test on i386-linux. On i386 alignof(double) = 8 is not the same as alignof(struct { double }) = 4. This used to be not an issue because the old implementation always measured alignment inside of structs. Wrap a dummy struct around the test to avoid this issue. llvm-svn: 284812 --- diff --git a/llvm/unittests/Support/AlignOfTest.cpp b/llvm/unittests/Support/AlignOfTest.cpp index c046846..388ca11 100644 --- a/llvm/unittests/Support/AlignOfTest.cpp +++ b/llvm/unittests/Support/AlignOfTest.cpp @@ -89,6 +89,8 @@ V6::~V6() {} V7::~V7() {} V8::~V8() {} +template struct T { M m; }; + TEST(AlignOfTest, BasicAlignedArray) { EXPECT_LE(1u, alignof(AlignedCharArrayUnion)); EXPECT_LE(2u, alignof(AlignedCharArrayUnion)); @@ -124,19 +126,20 @@ TEST(AlignOfTest, BasicAlignedArray) { // For other tests we simply assert that the alignment of the union mathes // that of the fundamental type and hope that we have any weird type // productions that would trigger bugs. - EXPECT_EQ(alignof(char), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(short), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(int), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(long), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(long long), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(float), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(double), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(long double), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(void *), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(int *), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(double (*)(double)), + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), + alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); - EXPECT_EQ(alignof(double (S6::*)()), + EXPECT_EQ(alignof(T), alignof(AlignedCharArrayUnion)); EXPECT_EQ(alignof(S1), alignof(AlignedCharArrayUnion)); EXPECT_EQ(alignof(S2), alignof(AlignedCharArrayUnion));