From 42be77672a93fb07ece46cd6b253f08dc79740e1 Mon Sep 17 00:00:00 2001 From: Warren Hunt Date: Mon, 14 Oct 2013 20:14:09 +0000 Subject: 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 --- clang/test/Layout/ms-x86-vtordisp.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'clang/test/Layout/ms-x86-vtordisp.cpp') 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)]; -- cgit v1.2.3