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 SambucA::~A() {} ~B()21*0a6a1f1dSLionel SambucB::~B() {} foo()22*0a6a1f1dSLionel Sambucvoid 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