diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-11-05 21:37:29 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-11-05 21:37:29 +0000 |
commit | 61a0a7519ee0d26334d30a001501b8c443d36975 (patch) | |
tree | 11daf573cf4ecdeda026b96f7aa8648ae78c1649 /test/CodeGenCXX/ctor-dtor-alias.cpp | |
parent | 93b97a8737e867d3ea193ca46db0615f9ff73592 (diff) |
Produce direct calls instead of alias to linkonce_odr functions.
This is a small optimization on linux, but should help more on windows
where msvc only outputs one destructor if there would be two identical ones.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194095 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/ctor-dtor-alias.cpp')
-rw-r--r-- | test/CodeGenCXX/ctor-dtor-alias.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/test/CodeGenCXX/ctor-dtor-alias.cpp b/test/CodeGenCXX/ctor-dtor-alias.cpp index e658522d79..ff9bd7c5c5 100644 --- a/test/CodeGenCXX/ctor-dtor-alias.cpp +++ b/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() {} |