diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-12-09 14:51:17 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-12-09 14:51:17 +0000 |
commit | c3cde36ead0f088c3948329ac0e6f493a9422a86 (patch) | |
tree | 22838f109cebb21d0f664d6dbf4aca597504be6d /clang/test/CodeGenCXX/destructors.cpp | |
parent | 63af7c482d4482fb7f93044b96aa5a148895aca9 (diff) | |
download | bcm5719-llvm-c3cde36ead0f088c3948329ac0e6f493a9422a86.tar.gz bcm5719-llvm-c3cde36ead0f088c3948329ac0e6f493a9422a86.zip |
Output destructors and constructors in a more natural order.
With this patch we output the in the order
C2
C1
D2
D1
D0
Which means that a destructor or constructor that call another is output after
the callee. This is a bit easier to read IHMO and a tiny bit more efficient
as we don't put a decl in DeferredDeclsToEmit.
llvm-svn: 196784
Diffstat (limited to 'clang/test/CodeGenCXX/destructors.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/destructors.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/clang/test/CodeGenCXX/destructors.cpp b/clang/test/CodeGenCXX/destructors.cpp index 799cca28b4a..f0e5a124eee 100644 --- a/clang/test/CodeGenCXX/destructors.cpp +++ b/clang/test/CodeGenCXX/destructors.cpp @@ -102,19 +102,19 @@ namespace test0 { B::~B() try { } catch (int i) {} // It will suppress the delegation optimization here, though. -// CHECK-LABEL: define void @_ZN5test01BD1Ev(%"struct.test0::B"* %this) unnamed_addr +// CHECK-LABEL: define void @_ZN5test01BD2Ev(%"struct.test0::B"* %this, i8** %vtt) unnamed_addr // CHECK: invoke void @_ZN5test06MemberD1Ev // CHECK: unwind label [[MEM_UNWIND:%[a-zA-Z0-9.]+]] // CHECK: invoke void @_ZN5test04BaseD2Ev // CHECK: unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]] -// CHECK: invoke void @_ZN5test05VBaseD2Ev -// CHECK: unwind label [[VBASE_UNWIND:%[a-zA-Z0-9.]+]] -// CHECK-LABEL: define void @_ZN5test01BD2Ev(%"struct.test0::B"* %this, i8** %vtt) unnamed_addr +// CHECK-LABEL: define void @_ZN5test01BD1Ev(%"struct.test0::B"* %this) unnamed_addr // CHECK: invoke void @_ZN5test06MemberD1Ev // CHECK: unwind label [[MEM_UNWIND:%[a-zA-Z0-9.]+]] // CHECK: invoke void @_ZN5test04BaseD2Ev // CHECK: unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]] +// CHECK: invoke void @_ZN5test05VBaseD2Ev +// CHECK: unwind label [[VBASE_UNWIND:%[a-zA-Z0-9.]+]] } // Test base-class aliasing. @@ -272,14 +272,6 @@ namespace test6 { // FIXME: way too much EH cleanup code follows C::~C() { opaque(); } - // CHECK-LABEL: define void @_ZN5test61CD1Ev(%"struct.test6::C"* %this) unnamed_addr - // CHECK: invoke void @_ZN5test61CD2Ev - // CHECK: invoke void @_ZN5test61BILj3EED2Ev - // CHECK: call void @_ZN5test61BILj2EED2Ev - // CHECK: ret void - // CHECK: invoke void @_ZN5test61BILj3EED2Ev - // CHECK: invoke void @_ZN5test61BILj2EED2Ev - // CHECK-LABEL: define void @_ZN5test61CD2Ev(%"struct.test6::C"* %this, i8** %vtt) unnamed_addr // CHECK: invoke void @_ZN5test66opaqueEv // CHECK: invoke void @_ZN5test61AD1Ev @@ -293,6 +285,14 @@ namespace test6 { // CHECK: invoke void @_ZN5test61AD1Ev // CHECK: invoke void @_ZN5test61BILj1EED2Ev // CHECK: invoke void @_ZN5test61BILj0EED2Ev + + // CHECK-LABEL: define void @_ZN5test61CD1Ev(%"struct.test6::C"* %this) unnamed_addr + // CHECK: invoke void @_ZN5test61CD2Ev + // CHECK: invoke void @_ZN5test61BILj3EED2Ev + // CHECK: call void @_ZN5test61BILj2EED2Ev + // CHECK: ret void + // CHECK: invoke void @_ZN5test61BILj3EED2Ev + // CHECK: invoke void @_ZN5test61BILj2EED2Ev } // PR 9197 |