xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenCXX/virt-template-vtable.cpp (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1 // RUN: %clang_cc1 %s -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