1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2 // PR5697
3 namespace PR5697 {
4 struct A {
fPR5697::A5 virtual void f() { }
6 A();
7 A(int);
8 };
9
10 // A does not have a key function, so the first constructor we emit should
11 // cause the vtable to be defined (without assertions.)
12 // CHECK: @_ZTVN6PR56971AE = linkonce_odr unnamed_addr constant
A()13 A::A() { }
A(int)14 A::A(int) { }
15 }
16
17 // Make sure that we don't assert when building the vtable for a class
18 // template specialization or explicit instantiation with a key
19 // function.
20 template<typename T>
21 struct Base {
22 virtual ~Base();
23 };
24
25 template<typename T>
26 struct Derived : public Base<T> { };
27
28 template<>
29 struct Derived<char> : public Base<char> {
30 virtual void anchor();
31 };
32
anchor()33 void Derived<char>::anchor() { }
34