34 lines
		
	
	
		
			772 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			772 B
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
 | 
						|
// PR5697
 | 
						|
namespace PR5697 {
 | 
						|
struct A {
 | 
						|
  virtual void f() { } 
 | 
						|
  A();
 | 
						|
  A(int);
 | 
						|
};
 | 
						|
 | 
						|
// A does not have a key function, so the first constructor we emit should
 | 
						|
// cause the vtable to be defined (without assertions.)
 | 
						|
// CHECK: @_ZTVN6PR56971AE = linkonce_odr unnamed_addr constant
 | 
						|
A::A() { }
 | 
						|
A::A(int) { }
 | 
						|
}
 | 
						|
 | 
						|
// Make sure that we don't assert when building the vtable for a class
 | 
						|
// template specialization or explicit instantiation with a key
 | 
						|
// function.
 | 
						|
template<typename T>
 | 
						|
struct Base {
 | 
						|
  virtual ~Base();
 | 
						|
};
 | 
						|
 | 
						|
template<typename T>
 | 
						|
struct Derived : public Base<T> { };
 | 
						|
 | 
						|
template<>
 | 
						|
struct Derived<char> : public Base<char> {
 | 
						|
  virtual void anchor();
 | 
						|
};
 | 
						|
 | 
						|
void Derived<char>::anchor() { }
 |