blob: 97a546f8c932c6c464fc6ca0972f99e82e54e7cd [file] [log] [blame]
Shih-wei Liaof8fd82b2010-02-10 11:10:31 -08001// 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 = weak_odr 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() { }