1*67e74705SXin Li // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -std=c++11 | FileCheck %s 2*67e74705SXin Li // PR13424 3*67e74705SXin Li 4*67e74705SXin Li namespace Test1 { 5*67e74705SXin Li struct X { 6*67e74705SXin Li virtual ~X(); // Key function. 7*67e74705SXin Li virtual void f(); // Not a key function. 8*67e74705SXin Li }; 9*67e74705SXin Li 10*67e74705SXin Li X::~X() = default; 11*67e74705SXin Li 12*67e74705SXin Li // Verify that the vtable is emitted. 13*67e74705SXin Li // CHECK-DAG: @_ZTVN5Test11XE = unnamed_addr constant 14*67e74705SXin Li } 15*67e74705SXin Li 16*67e74705SXin Li namespace Test2 { 17*67e74705SXin Li struct X { 18*67e74705SXin Li virtual ~X() = default; // Not a key function. 19*67e74705SXin Li virtual void f(); // Key function. 20*67e74705SXin Li }; 21*67e74705SXin Li f()22*67e74705SXin Livoid X::f() {} 23*67e74705SXin Li 24*67e74705SXin Li // Verify that the vtable is emitted. 25*67e74705SXin Li // CHECK-DAG: @_ZTVN5Test21XE = unnamed_addr constant 26*67e74705SXin Li } 27*67e74705SXin Li 28*67e74705SXin Li namespace Test3 { 29*67e74705SXin Li struct X { 30*67e74705SXin Li virtual ~X() = delete; // Not a key function. 31*67e74705SXin Li virtual void f(); // Key function. 32*67e74705SXin Li }; 33*67e74705SXin Li f()34*67e74705SXin Livoid X::f() {} 35*67e74705SXin Li 36*67e74705SXin Li // Verify that the vtable is emitted. 37*67e74705SXin Li // CHECK-DAG: @_ZTVN5Test31XE = unnamed_addr constant 38*67e74705SXin Li } 39