1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2 // PR5697
3 namespace PR5697 {
4 struct A {
5   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
13 A::A() { }
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 
33 void Derived<char>::anchor() { }
34