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