// RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s | |
template<class T> class A { | |
public: | |
A() {} | |
virtual void a() {} | |
}; | |
class B : A<int> { | |
B(); | |
}; | |
B::B() {} | |
template class A<long>; | |
extern template class A<short>; | |
template class A<short>; | |
// CHECK: @_ZTV1B = linkonce_odr {{(dso_local )?}}unnamed_addr constant | |
// CHECK: @_ZTV1AIlE = weak_odr {{(dso_local )?}}unnamed_addr constant | |
// CHECK: @_ZTV1AIsE = weak_odr {{(dso_local )?}}unnamed_addr constant | |
// CHECK: @_ZTV1AIiE = linkonce_odr {{(dso_local )?}}unnamed_addr constant | |
template<class T> struct C { | |
virtual void c() {} | |
}; | |
struct D : C<int> { | |
virtual void d(); | |
}; | |
void D::d() {} | |
// CHECK: define {{.*}}@_ZN1CIiE1cEv( |