diff options
Diffstat (limited to 'test/CodeGenCXX/ctor-dtor-alias.cpp')
-rw-r--r-- | test/CodeGenCXX/ctor-dtor-alias.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/test/CodeGenCXX/ctor-dtor-alias.cpp b/test/CodeGenCXX/ctor-dtor-alias.cpp index 54dfe87..a7bafb8 100644 --- a/test/CodeGenCXX/ctor-dtor-alias.cpp +++ b/test/CodeGenCXX/ctor-dtor-alias.cpp @@ -22,7 +22,10 @@ namespace test1 { // CHECK1-NOT: comdat // COFF doesn't support comdats with arbitrary names (C5/D5). -// COFF-NOT: comdat +// COFF: define weak_odr {{.*}} void @_ZN5test16foobarIvEC2Ev({{.*}} comdat align +// COFF: define weak_odr {{.*}} void @_ZN5test16foobarIvEC1Ev({{.*}} comdat align +// COFF: define weak_odr {{.*}} void @_ZN5test16foobarIvED2Ev({{.*}} comdat align +// COFF: define weak_odr {{.*}} void @_ZN5test16foobarIvED0Ev({{.*}} comdat align template <typename T> struct foobar { @@ -39,7 +42,7 @@ namespace test2 { // CHECK1: define internal void @__cxx_global_var_init() // CHECK1: call void @_ZN5test26foobarIvEC2Ev -// CHECK1: define linkonce_odr void @_ZN5test26foobarIvEC2Ev( +// CHECK1: define linkonce_odr void @_ZN5test26foobarIvEC2Ev({{.*}} comdat align void g(); template <typename T> struct foobar { foobar() { g(); } @@ -51,7 +54,7 @@ namespace test3 { // test that instead of an internal alias we just use the other destructor // directly. -// CHECK1: define internal void @__cxx_global_var_init1() +// CHECK1: define internal void @__cxx_global_var_init.1() // CHECK1: call i32 @__cxa_atexit{{.*}}_ZN5test312_GLOBAL__N_11AD2Ev // CHECK1: define internal void @_ZN5test312_GLOBAL__N_11AD2Ev( namespace { @@ -70,15 +73,15 @@ namespace test4 { // guarantee that they will be present in every TU. Instead, we just call // A's destructor directly. - // CHECK1: define internal void @__cxx_global_var_init2() + // CHECK1: define internal void @__cxx_global_var_init.2() // CHECK1: call i32 @__cxa_atexit{{.*}}_ZN5test41AD2Ev - // CHECK1: define linkonce_odr void @_ZN5test41AD2Ev( + // CHECK1: define linkonce_odr void @_ZN5test41AD2Ev({{.*}} comdat align // test that we don't do this optimization at -O0 so that the debugger can // see both destructors. - // NOOPT: define internal void @__cxx_global_var_init2() + // NOOPT: define internal void @__cxx_global_var_init.2() // NOOPT: call i32 @__cxa_atexit{{.*}}@_ZN5test41BD2Ev - // NOOPT: define linkonce_odr void @_ZN5test41BD2Ev + // NOOPT: define linkonce_odr void @_ZN5test41BD2Ev({{.*}} comdat align struct A { virtual ~A() {} }; @@ -91,9 +94,9 @@ namespace test4 { namespace test5 { // similar to test4, but with an internal B. - // CHECK2: define internal void @__cxx_global_var_init3() + // CHECK2: define internal void @__cxx_global_var_init.3() // CHECK2: call i32 @__cxa_atexit{{.*}}_ZN5test51AD2Ev - // CHECK2: define linkonce_odr void @_ZN5test51AD2Ev( + // CHECK2: define linkonce_odr void @_ZN5test51AD2Ev({{.*}} comdat align struct A { virtual ~A() {} }; @@ -117,7 +120,7 @@ namespace test6 { }; } B X; - // CHECK3: define internal void @__cxx_global_var_init4() + // CHECK3: define internal void @__cxx_global_var_init.4() // CHECK3: call i32 @__cxa_atexit({{.*}}@_ZN5test61AD2Ev } @@ -139,7 +142,7 @@ namespace test7 { namespace test8 { // Test that we replace ~zed with ~bar which is an alias to ~foo. // CHECK4: @_ZN5test83barD2Ev = alias {{.*}} @_ZN5test83fooD2Ev - // CHECK4: define internal void @__cxx_global_var_init5() + // CHECK4: define internal void @__cxx_global_var_init.5() // CHECK4: call i32 @__cxa_atexit({{.*}}@_ZN5test83barD2Ev struct foo { ~foo(); |