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