1 // RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s 2 3 template<class T> class A { 4 public: 5 A() {} 6 virtual void a() {} 7 }; 8 class B : A<int> { 9 B(); 10 }; 11 B::B() {} 12 13 template class A<long>; 14 15 extern template class A<short>; 16 template class A<short>; 17 18 19 // CHECK: @_ZTV1B = linkonce_odr unnamed_addr constant 20 // CHECK: @_ZTV1AIlE = weak_odr unnamed_addr constant 21 // CHECK: @_ZTV1AIsE = weak_odr unnamed_addr constant 22 // CHECK: @_ZTV1AIiE = linkonce_odr unnamed_addr constant 23 24 template<class T> struct C { 25 virtual void c() {} 26 }; 27 struct D : C<int> { 28 virtual void d(); 29 }; 30 void D::d() {} 31 32 // CHECK: define {{.*}}@_ZN1CIiE1cEv( 33