diff options
author | Warren Hunt <whunt@google.com> | 2014-03-24 21:37:27 +0000 |
---|---|---|
committer | Warren Hunt <whunt@google.com> | 2014-03-24 21:37:27 +0000 |
commit | c89450e0546154f69e1afc9b0bdf5a660ee4d558 (patch) | |
tree | b059c683985d56cc42c6b5c8fb4d8caa4d64ac99 /clang/test/Layout/ms-x86-vfvb-alignment.cpp | |
parent | c95ec91e2a2e0166a281071f8b0fcf7eec665af3 (diff) | |
download | bcm5719-llvm-c89450e0546154f69e1afc9b0bdf5a660ee4d558.tar.gz bcm5719-llvm-c89450e0546154f69e1afc9b0bdf5a660ee4d558.zip |
[MS-ABI] Drop Special Layout in 64-bit mode.
As of cl.exe version 18, the special layout rules for structs with
alignment 16 or greater has been dropped. This patch drops the behavior
from clang. This patch also updates the lit tests to reflect the
change.
llvm-svn: 204674
Diffstat (limited to 'clang/test/Layout/ms-x86-vfvb-alignment.cpp')
-rw-r--r-- | clang/test/Layout/ms-x86-vfvb-alignment.cpp | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/clang/test/Layout/ms-x86-vfvb-alignment.cpp b/clang/test/Layout/ms-x86-vfvb-alignment.cpp index f65adc15a66..54f74ac16d1 100644 --- a/clang/test/Layout/ms-x86-vfvb-alignment.cpp +++ b/clang/test/Layout/ms-x86-vfvb-alignment.cpp @@ -33,14 +33,14 @@ struct A : B0, virtual B1 { __declspec(align(16)) int a; A() : a(0xf000000A) {} // CHECK-X64: *** Dumping AST Record Layout // CHECK-X64-NEXT: 0 | struct A // CHECK-X64-NEXT: 0 | (A vftable pointer) -// CHECK-X64-NEXT: 8 | struct B0 (base) -// CHECK-X64-NEXT: 8 | int a -// CHECK-X64-NEXT: 16 | (A vbtable pointer) -// CHECK-X64-NEXT: 32 | int a -// CHECK-X64-NEXT: 48 | struct B1 (virtual base) -// CHECK-X64-NEXT: 48 | char a -// CHECK-X64-NEXT: | [sizeof=64, align=16 -// CHECK-X64-NEXT: | nvsize=48, nvalign=16] +// CHECK-X64-NEXT: 16 | struct B0 (base) +// CHECK-X64-NEXT: 16 | int a +// CHECK-X64-NEXT: 24 | (A vbtable pointer) +// CHECK-X64-NEXT: 48 | int a +// CHECK-X64-NEXT: 64 | struct B1 (virtual base) +// CHECK-X64-NEXT: 64 | char a +// CHECK-X64-NEXT: | [sizeof=80, align=16 +// CHECK-X64-NEXT: | nvsize=64, nvalign=16] struct B : A, B2 { int a; B() : a(0xf000000B) {} virtual void f() { printf("B"); } }; @@ -66,18 +66,18 @@ struct B : A, B2 { int a; B() : a(0xf000000B) {} virtual void f() { printf("B"); // CHECK-X64-NEXT: 0 | struct B // CHECK-X64-NEXT: 0 | struct A (primary base) // CHECK-X64-NEXT: 0 | (A vftable pointer) -// CHECK-X64-NEXT: 8 | struct B0 (base) -// CHECK-X64-NEXT: 8 | int a -// CHECK-X64-NEXT: 16 | (A vbtable pointer) -// CHECK-X64-NEXT: 32 | int a -// CHECK-X64-NEXT: 48 | struct B2 (base) -// CHECK-X64-NEXT: 48 | (B2 vbtable pointer) -// CHECK-X64-NEXT: 56 | int a -// CHECK-X64-NEXT: 64 | int a -// CHECK-X64-NEXT: 80 | struct B1 (virtual base) -// CHECK-X64-NEXT: 80 | char a -// CHECK-X64-NEXT: | [sizeof=96, align=16 -// CHECK-X64-NEXT: | nvsize=80, nvalign=16] +// CHECK-X64-NEXT: 16 | struct B0 (base) +// CHECK-X64-NEXT: 16 | int a +// CHECK-X64-NEXT: 24 | (A vbtable pointer) +// CHECK-X64-NEXT: 48 | int a +// CHECK-X64-NEXT: 64 | struct B2 (base) +// CHECK-X64-NEXT: 64 | (B2 vbtable pointer) +// CHECK-X64-NEXT: 72 | int a +// CHECK-X64-NEXT: 80 | int a +// CHECK-X64-NEXT: 96 | struct B1 (virtual base) +// CHECK-X64-NEXT: 96 | char a +// CHECK-X64-NEXT: | [sizeof=112, align=16 +// CHECK-X64-NEXT: | nvsize=96, nvalign=16] struct C : B4 { int a; C() : a(0xf000000C) {} virtual void f() { printf("C"); } }; @@ -189,11 +189,11 @@ struct F : B3, virtual B0 { int a; F() : a(0xf000000F) {} virtual void f() { pri // CHECK-X64-NEXT: 16 | struct B3 (base) // CHECK-X64-NEXT: 16 | int a // CHECK-X64-NEXT: 32 | (F vbtable pointer) -// CHECK-X64-NEXT: 40 | int a -// CHECK-X64-NEXT: 48 | struct B0 (virtual base) -// CHECK-X64-NEXT: 48 | int a -// CHECK-X64-NEXT: | [sizeof=64, align=16 -// CHECK-X64-NEXT: | nvsize=48, nvalign=16] +// CHECK-X64-NEXT: 48 | int a +// CHECK-X64-NEXT: 64 | struct B0 (virtual base) +// CHECK-X64-NEXT: 64 | int a +// CHECK-X64-NEXT: | [sizeof=80, align=16 +// CHECK-X64-NEXT: | nvsize=64, nvalign=16] struct G : B2, B6, virtual B1 { int a; G() : a(0xf0000010) {} }; @@ -274,8 +274,8 @@ struct I : B0, virtual B1 { int a; int a1; __declspec(align(16)) int a2; I() : a // CHECK-X64-NEXT: 0 | struct B0 (base) // CHECK-X64-NEXT: 0 | int a // CHECK-X64-NEXT: 8 | (I vbtable pointer) -// CHECK-X64-NEXT: 16 | int a -// CHECK-X64-NEXT: 20 | int a1 +// CHECK-X64-NEXT: 20 | int a +// CHECK-X64-NEXT: 24 | int a1 // CHECK-X64-NEXT: 32 | int a2 // CHECK-X64-NEXT: 48 | struct B1 (virtual base) // CHECK-X64-NEXT: 48 | char a @@ -304,12 +304,12 @@ struct J : B0, B3, virtual B1 { int a; int a1; J() : a(0xf0000012), a1(0xf000001 // CHECK-X64-NEXT: 16 | struct B3 (base) // CHECK-X64-NEXT: 16 | int a // CHECK-X64-NEXT: 32 | (J vbtable pointer) -// CHECK-X64-NEXT: 40 | int a -// CHECK-X64-NEXT: 44 | int a1 -// CHECK-X64-NEXT: 48 | struct B1 (virtual base) -// CHECK-X64-NEXT: 48 | char a -// CHECK-X64-NEXT: | [sizeof=64, align=16 -// CHECK-X64-NEXT: | nvsize=48, nvalign=16] +// CHECK-X64-NEXT: 48 | int a +// CHECK-X64-NEXT: 52 | int a1 +// CHECK-X64-NEXT: 64 | struct B1 (virtual base) +// CHECK-X64-NEXT: 64 | char a +// CHECK-X64-NEXT: | [sizeof=80, align=16 +// CHECK-X64-NEXT: | nvsize=64, nvalign=16] struct K { int a; K() : a(0xf0000013) {} virtual void f() { printf("K"); } }; |