1// RUN: %clang_cc1 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s 2 3template<class T> class A { 4public: 5 A() {} 6 virtual void a() {} 7}; 8class B : A<int> { 9 B(); 10}; 11B::B() {} 12 13template class A<long>; 14 15extern template class A<short>; 16template 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 24template<class T> struct C { 25 virtual void c() {} 26}; 27struct D : C<int> { 28 virtual void d(); 29}; 30void D::d() {} 31 32// CHECK: define {{.*}}@_ZN1CIiE1cEv( 33