blob: a6067d62c61d27acb5957b7afe9698e78b34afa5 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
Eli Friedman378fe062009-12-05 04:55:55 +00002
3template<class T> class A {
John McCall7002f4c2010-04-09 19:03:51 +00004public:
Eli Friedman378fe062009-12-05 04:55:55 +00005 A() {}
6 virtual void a() {}
7};
8class B : A<int> {
9 B();
10};
11B::B() {}
12
John McCall3d640e62010-08-03 07:24:12 +000013template class A<long>;
14
15extern template class A<short>;
16template class A<short>;
17
18
Anders Carlssonf502d932011-01-24 00:46:19 +000019// CHECK: @_ZTV1B = linkonce_odr unnamed_addr constant
Rafael Espindola9f959db2011-01-11 21:10:26 +000020// CHECK: @_ZTV1AIlE = weak_odr unnamed_addr constant
21// CHECK: @_ZTV1AIsE = weak_odr unnamed_addr constant
Anders Carlssonf502d932011-01-24 00:46:19 +000022// CHECK: @_ZTV1AIiE = linkonce_odr unnamed_addr constant
Richard Smithff817f72012-07-07 06:59:51 +000023
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(