summaryrefslogtreecommitdiff
path: root/test/Layout
diff options
context:
space:
mode:
authorWarren Hunt <whunt@google.com>2014-04-11 00:14:09 +0000
committerWarren Hunt <whunt@google.com>2014-04-11 00:14:09 +0000
commit854cecb0a497cd10ee4abb3cf43b2d24d874b4f9 (patch)
treee91758607bf107c67e06ac3856eac2cd70fefc9b /test/Layout
parent32a4ee77c9afa4dba3342113f6bfd0db3da3202a (diff)
[MS-ABI] Update virtual base padding rules to match MSVC 10+
In version 9 (VS2010) (and prior)? versions of msvc, if the last field in a record was a bitfield padding equal to the size of the storage class of that bitfield was added before each vbase and vtordisp. This patch removes that feature from clang and updates the lit tests to reflect it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206004 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Layout')
-rw-r--r--test/Layout/ms-x86-bitfields-vbases.cpp40
-rw-r--r--test/Layout/ms-x86-pack-and-align.cpp8
2 files changed, 24 insertions, 24 deletions
diff --git a/test/Layout/ms-x86-bitfields-vbases.cpp b/test/Layout/ms-x86-bitfields-vbases.cpp
index 7cffa8c8e4..5b54596bbb 100644
--- a/test/Layout/ms-x86-bitfields-vbases.cpp
+++ b/test/Layout/ms-x86-bitfields-vbases.cpp
@@ -13,17 +13,17 @@ struct A : virtual B0 { char a : 1; };
// CHECK-NEXT: 0 | struct A
// CHECK-NEXT: 0 | (A vbtable pointer)
// CHECK-NEXT: 4 | char a
-// CHECK-NEXT: 12 | struct B0 (virtual base)
-// CHECK-NEXT: 12 | int a
-// CHECK-NEXT: | [sizeof=16, align=4
+// CHECK-NEXT: 8 | struct B0 (virtual base)
+// CHECK-NEXT: 8 | int a
+// CHECK-NEXT: | [sizeof=12, align=4
// CHECK-NEXT: | nvsize=8, nvalign=4]
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64-NEXT: 0 | struct A
// CHECK-X64-NEXT: 0 | (A vbtable pointer)
// CHECK-X64-NEXT: 8 | char a
-// CHECK-X64-NEXT: 20 | struct B0 (virtual base)
-// CHECK-X64-NEXT: 20 | int a
+// CHECK-X64-NEXT: 16 | struct B0 (virtual base)
+// CHECK-X64-NEXT: 16 | int a
// CHECK-X64-NEXT: | [sizeof=24, align=8
// CHECK-X64-NEXT: | nvsize=16, nvalign=8]
@@ -33,16 +33,16 @@ struct B : virtual B0 { short a : 1; };
// CHECK-NEXT: 0 | struct B
// CHECK-NEXT: 0 | (B vbtable pointer)
// CHECK-NEXT: 4 | short a
-// CHECK-NEXT: 12 | struct B0 (virtual base)
-// CHECK-NEXT: 12 | int a
-// CHECK-NEXT: | [sizeof=16, align=4
+// CHECK-NEXT: 8 | struct B0 (virtual base)
+// CHECK-NEXT: 8 | int a
+// CHECK-NEXT: | [sizeof=12, align=4
// CHECK-NEXT: | nvsize=8, nvalign=4]
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64-NEXT: 0 | struct B
// CHECK-X64-NEXT: 0 | (B vbtable pointer)
// CHECK-X64-NEXT: 8 | short a
-// CHECK-X64-NEXT: 20 | struct B0 (virtual base)
-// CHECK-X64-NEXT: 20 | int a
+// CHECK-X64-NEXT: 16 | struct B0 (virtual base)
+// CHECK-X64-NEXT: 16 | int a
// CHECK-X64-NEXT: | [sizeof=24, align=8
// CHECK-X64-NEXT: | nvsize=16, nvalign=8]
@@ -94,22 +94,22 @@ struct E : virtual B0, virtual B1 { long long : 1; };
// CHECK-NEXT: 0 | struct E
// CHECK-NEXT: 0 | (E vbtable pointer)
// CHECK-NEXT: 8 | long long
-// CHECK-NEXT: 24 | struct B0 (virtual base)
-// CHECK-NEXT: 24 | int a
-// CHECK-NEXT: 36 | struct B1 (virtual base)
-// CHECK-NEXT: 36 | int a
-// CHECK-NEXT: | [sizeof=40, align=8
+// CHECK-NEXT: 16 | struct B0 (virtual base)
+// CHECK-NEXT: 16 | int a
+// CHECK-NEXT: 20 | struct B1 (virtual base)
+// CHECK-NEXT: 20 | int a
+// CHECK-NEXT: | [sizeof=24, align=8
// CHECK-NEXT: | nvsize=16, nvalign=8]
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64-NEXT: 0 | struct E
// CHECK-X64-NEXT: 0 | (E vbtable pointer)
// CHECK-X64-NEXT: 8 | long long
-// CHECK-X64-NEXT: 24 | struct B0 (virtual base)
-// CHECK-X64-NEXT: 24 | int a
-// CHECK-X64-NEXT: 36 | struct B1 (virtual base)
-// CHECK-X64-NEXT: 36 | int a
-// CHECK-X64-NEXT: | [sizeof=40, align=8
+// CHECK-X64-NEXT: 16 | struct B0 (virtual base)
+// CHECK-X64-NEXT: 16 | int a
+// CHECK-X64-NEXT: 20 | struct B1 (virtual base)
+// CHECK-X64-NEXT: 20 | int a
+// CHECK-X64-NEXT: | [sizeof=24, align=8
// CHECK-X64-NEXT: | nvsize=16, nvalign=8]
int a[
diff --git a/test/Layout/ms-x86-pack-and-align.cpp b/test/Layout/ms-x86-pack-and-align.cpp
index 0843b3e0bf..be0499c2cb 100644
--- a/test/Layout/ms-x86-pack-and-align.cpp
+++ b/test/Layout/ms-x86-pack-and-align.cpp
@@ -473,7 +473,7 @@ struct RE {
// CHECK-NEXT: 0 | struct RB2
// CHECK-NEXT: 0 | (RB2 vbtable pointer)
// CHECK-NEXT: 1024 | int b
-// CHECK-NEXT: 1032 | struct RA (virtual base) (empty)
+// CHECK-NEXT: 1028 | struct RA (virtual base) (empty)
// CHECK-NEXT: | [sizeof=1032, align=1024
// CHECK-NEXT: | nvsize=1028, nvalign=1024]
// CHECK: *** Dumping AST Record Layout
@@ -481,7 +481,7 @@ struct RE {
// CHECK-NEXT: 0 | (RB3 vftable pointer)
// CHECK-NEXT: 1024 | (RB3 vbtable pointer)
// CHECK-NEXT: 2048 | int b
-// CHECK-NEXT: 2056 | struct RA (virtual base) (empty)
+// CHECK-NEXT: 2052 | struct RA (virtual base) (empty)
// CHECK-NEXT: | [sizeof=2056, align=1024
// CHECK-NEXT: | nvsize=2052, nvalign=1024]
// CHECK: *** Dumping AST Record Layout
@@ -516,7 +516,7 @@ struct RE {
// CHECK-X64-NEXT: 0 | struct RB2
// CHECK-X64-NEXT: 0 | (RB2 vbtable pointer)
// CHECK-X64-NEXT: 1024 | int b
-// CHECK-X64-NEXT: 1032 | struct RA (virtual base) (empty)
+// CHECK-X64-NEXT: 1028 | struct RA (virtual base) (empty)
// CHECK-X64-NEXT: | [sizeof=1032, align=1024
// CHECK-X64-NEXT: | nvsize=1028, nvalign=1024]
// CHECK-X64: *** Dumping AST Record Layout
@@ -524,7 +524,7 @@ struct RE {
// CHECK-X64-NEXT: 0 | (RB3 vftable pointer)
// CHECK-X64-NEXT: 1024 | (RB3 vbtable pointer)
// CHECK-X64-NEXT: 2048 | int b
-// CHECK-X64-NEXT: 2056 | struct RA (virtual base) (empty)
+// CHECK-X64-NEXT: 2052 | struct RA (virtual base) (empty)
// CHECK-X64-NEXT: | [sizeof=2056, align=1024
// CHECK-X64-NEXT: | nvsize=2052, nvalign=1024]
// CHECK-X64: *** Dumping AST Record Layout