Home | History | Annotate | Download | only in CodeGenCXX
      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