diff options
Diffstat (limited to 'clang/test/CodeGenCXX')
-rw-r--r-- | clang/test/CodeGenCXX/ctor-dtor-alias.cpp | 9 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/destructors.cpp | 10 |
2 files changed, 9 insertions, 10 deletions
diff --git a/clang/test/CodeGenCXX/ctor-dtor-alias.cpp b/clang/test/CodeGenCXX/ctor-dtor-alias.cpp index e658522d799..ff9bd7c5c5c 100644 --- a/clang/test/CodeGenCXX/ctor-dtor-alias.cpp +++ b/clang/test/CodeGenCXX/ctor-dtor-alias.cpp @@ -13,12 +13,11 @@ template struct foobar<void>; } namespace test2 { -// test that we produce an alias when the destrucor is linkonce_odr. Note that -// the alias itself is weak_odr to make sure we don't get a translation unit -// with just _ZN5test26foobarIvEC2Ev in it. +// test that when the destrucor is linkonce_odr we just replace every use of +// C1 with C2. -// CHECK-DAG: @_ZN5test26foobarIvEC1Ev = alias weak_odr void (%"struct.test2::foobar"*)* @_ZN5test26foobarIvEC2Ev // CHECK-DAG: define linkonce_odr void @_ZN5test26foobarIvEC2Ev( +// CHECK-DAG: call void @_ZN5test26foobarIvEC2Ev void g(); template <typename T> struct foobar { foobar() { g(); } @@ -48,9 +47,7 @@ namespace test4 { // Test that we don't produce aliases from B to A. We cannot because we cannot // guarantee that they will be present in every TU. - // CHECK-DAG: @_ZN5test41BD1Ev = alias weak_odr void (%"struct.test4::B"*)* @_ZN5test41BD2Ev // CHECK-DAG: define linkonce_odr void @_ZN5test41BD2Ev( - // CHECK-DAG: @_ZN5test41AD1Ev = alias weak_odr void (%"struct.test4::A"*)* @_ZN5test41AD2Ev // CHECK-DAG: define linkonce_odr void @_ZN5test41AD2Ev( struct A { virtual ~A() {} diff --git a/clang/test/CodeGenCXX/destructors.cpp b/clang/test/CodeGenCXX/destructors.cpp index 472a229a9be..887b73fcc59 100644 --- a/clang/test/CodeGenCXX/destructors.cpp +++ b/clang/test/CodeGenCXX/destructors.cpp @@ -9,8 +9,6 @@ // CHECK-DAG: @_ZN5test312_GLOBAL__N_11DD1Ev = alias internal {{.*}} @_ZN5test312_GLOBAL__N_11DD2Ev // CHECK-DAG: @_ZN5test312_GLOBAL__N_11DD2Ev = alias internal bitcast {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev // CHECK-DAG: @_ZN5test312_GLOBAL__N_11CD1Ev = alias internal {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev -// CHECK-DAG: @_ZN6PR752617allocator_derivedD1Ev = alias weak_odr void (%"struct.PR7526::allocator_derived"*)* @_ZN6PR752617allocator_derivedD2Ev -// CHECK-DAG: @_ZN6test106OptionD1Ev = alias weak_odr void (%"struct.test10::Option"*)* @_ZN6test106OptionD2Ev struct A { int a; @@ -46,6 +44,9 @@ namespace PR7526 { // CHECK: call void @__cxa_call_unexpected allocator::~allocator() throw() { foo(); } + // CHECK-LABEL: define void @_ZN6PR75263fooEv() + // CHECK: call void @_ZN6PR752617allocator_derivedD2Ev + void foo() { allocator_derived ad; } @@ -367,14 +368,15 @@ namespace test9 { namespace test10 { // We used to crash trying to replace _ZN6test106OptionD1Ev with - // _ZN6test106OptionD2Ev twice. For now check that we don't try and produce - // an alias instead (check at the top of the file). + // _ZN6test106OptionD2Ev twice. struct Option { virtual ~Option() {} }; template <class DataType> class opt : public Option {}; template class opt<int>; + // CHECK-LABEL: define zeroext i1 @_ZN6test1016handleOccurrenceEv( bool handleOccurrence() { + // CHECK: call void @_ZN6test106OptionD2Ev( Option x; return true; } |