1*67e74705SXin Li// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-optzns -o - %s | FileCheck %s 2*67e74705SXin Li// rdar://18249673 3*67e74705SXin Li 4*67e74705SXin Li@class MyObject; 5*67e74705SXin Listruct base { 6*67e74705SXin Li ~base() = default; 7*67e74705SXin Li}; 8*67e74705SXin Listruct derived : public base { 9*67e74705SXin Li MyObject *myobject; 10*67e74705SXin Li}; 11*67e74705SXin Li 12*67e74705SXin Livoid test1() { 13*67e74705SXin Li derived d1; 14*67e74705SXin Li} 15*67e74705SXin Li// CHECK-LABEL: define void @_Z5test1v() 16*67e74705SXin Li// CHECK: call void @_ZN7derivedC1Ev 17*67e74705SXin Li// CHECK: call void @_ZN7derivedD1Ev 18*67e74705SXin Li 19*67e74705SXin Livoid test2() { 20*67e74705SXin Li derived *d2 = new derived; 21*67e74705SXin Li delete d2; 22*67e74705SXin Li} 23*67e74705SXin Li// CHECK-LABEL: define void @_Z5test2v() 24*67e74705SXin Li// CHECK: call void @_ZN7derivedC1Ev 25*67e74705SXin Li// CHECK: call void @_ZN7derivedD1Ev 26*67e74705SXin Li 27*67e74705SXin Litemplate <typename T> 28*67e74705SXin Listruct tderived : public base { 29*67e74705SXin Li MyObject *myobject; 30*67e74705SXin Li}; 31*67e74705SXin Livoid test3() { 32*67e74705SXin Li tderived<int> d1; 33*67e74705SXin Li} 34*67e74705SXin Li// CHECK-LABEL: define void @_Z5test3v() 35*67e74705SXin Li// CHECK: call void @_ZN8tderivedIiEC1Ev 36*67e74705SXin Li// CHECK: call void @_ZN8tderivedIiED1Ev 37*67e74705SXin Li 38*67e74705SXin Livoid test4() { 39*67e74705SXin Li tderived<int> *d2 = new tderived<int>; 40*67e74705SXin Li delete d2; 41*67e74705SXin Li} 42*67e74705SXin Li// CHECK-LABEL: define void @_Z5test4v() 43*67e74705SXin Li// CHECK: call void @_ZN8tderivedIiEC1Ev 44*67e74705SXin Li// CHECK: call void @_ZN8tderivedIiED1Ev 45*67e74705SXin Li 46*67e74705SXin Li// CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev 47*67e74705SXin Li// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null) 48*67e74705SXin Li 49*67e74705SXin Li// CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev 50*67e74705SXin Li// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null) 51