1// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s 2// PR5697 3namespace PR5697 { 4struct 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 13A::A() { } 14A::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. 20template<typename T> 21struct Base { 22 virtual ~Base(); 23}; 24 25template<typename T> 26struct Derived : public Base<T> { }; 27 28template<> 29struct Derived<char> : public Base<char> { 30 virtual void anchor(); 31}; 32 33void Derived<char>::anchor() { } 34