summaryrefslogtreecommitdiffstats
path: root/clang/test/Layout/ms-x86-vtordisp.cpp
diff options
context:
space:
mode:
authorWarren Hunt <whunt@google.com>2013-10-14 20:14:09 +0000
committerWarren Hunt <whunt@google.com>2013-10-14 20:14:09 +0000
commit42be77672a93fb07ece46cd6b253f08dc79740e1 (patch)
tree75c4ac6a74c925ea26aad4675067f1dca8c86d0e /clang/test/Layout/ms-x86-vtordisp.cpp
parenta443563ff09cd4a93257326b685167e36935af49 (diff)
downloadbcm5719-llvm-42be77672a93fb07ece46cd6b253f08dc79740e1.tar.gz
bcm5719-llvm-42be77672a93fb07ece46cd6b253f08dc79740e1.zip
Correctly check for distructors when realizing vtordisps
This patch fixes the distructor test when checking for vtordisp requirements in microsoft record layout. A test case is also included. Addresses: http://llvm.org/bugs/show_bug.cgi?id=16406#c7 llvm-svn: 192616
Diffstat (limited to 'clang/test/Layout/ms-x86-vtordisp.cpp')
-rw-r--r--clang/test/Layout/ms-x86-vtordisp.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/clang/test/Layout/ms-x86-vtordisp.cpp b/clang/test/Layout/ms-x86-vtordisp.cpp
index 45ac6496821..06ace3221a6 100644
--- a/clang/test/Layout/ms-x86-vtordisp.cpp
+++ b/clang/test/Layout/ms-x86-vtordisp.cpp
@@ -91,7 +91,24 @@ struct __declspec(align(32)) D : virtual B0, virtual B1 {
// CHECK: | [sizeof=96, align=32
// CHECK: | nvsize=12, nvalign=4]
+struct AT {
+ virtual ~AT(){}
+};
+struct CT : virtual AT {
+ virtual ~CT();
+};
+CT::~CT(){}
+
+// CHECK: *** Dumping AST Record Layout
+// CHECK: 0 | struct CT
+// CHECK: 0 | (CT vbtable pointer)
+// CHECK: 4 | struct AT (virtual base)
+// CHECK: 4 | (AT vftable pointer)
+// CHECK: | [sizeof=8, align=4
+// CHECK: | nvsize=4, nvalign=4]
+
int a[
sizeof(A)+
sizeof(C)+
-sizeof(D)];
+sizeof(D)+
+sizeof(CT)];
OpenPOWER on IntegriCloud