xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenCXX/microsoft-abi-structors-alias.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 -fno-rtti -mconstructor-aliases -O1 -disable-llvm-optzns | FileCheck %s
2f4a2713aSLionel Sambuc 
3f4a2713aSLionel Sambuc namespace test1 {
4f4a2713aSLionel Sambuc template <typename T> class A {
~A()5f4a2713aSLionel Sambuc   ~A() {}
6f4a2713aSLionel Sambuc };
7f4a2713aSLionel Sambuc template class A<char>;
8*0a6a1f1dSLionel Sambuc // CHECK-DAG: define weak_odr x86_thiscallcc void @"\01??1?$A@D@test1@@AAE@XZ"
9*0a6a1f1dSLionel Sambuc }
10*0a6a1f1dSLionel Sambuc 
11*0a6a1f1dSLionel Sambuc namespace test2 {
12*0a6a1f1dSLionel Sambuc struct A {
13*0a6a1f1dSLionel Sambuc   virtual ~A();
14*0a6a1f1dSLionel Sambuc };
15*0a6a1f1dSLionel Sambuc struct B : A {
16*0a6a1f1dSLionel Sambuc   B();
17*0a6a1f1dSLionel Sambuc   virtual ~B();
18*0a6a1f1dSLionel Sambuc };
19*0a6a1f1dSLionel Sambuc 
~A()20*0a6a1f1dSLionel Sambuc A::~A() {}
~B()21*0a6a1f1dSLionel Sambuc B::~B() {}
foo()22*0a6a1f1dSLionel Sambuc void foo() {
23*0a6a1f1dSLionel Sambuc   B b;
24*0a6a1f1dSLionel Sambuc }
25*0a6a1f1dSLionel Sambuc // CHECK-DAG: @"\01??1B@test2@@UAE@XZ" = alias bitcast (void (%"struct.test2::A"*)* @"\01??1A@test2@@UAE@XZ" to void (%"struct.test2::B"*)*)
26f4a2713aSLionel Sambuc }
27