// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-passes -o - %s | FileCheck %s // rdar://18249673 @class MyObject; struct base { ~base() = default; }; struct derived : public base { MyObject *myobject; }; void test1() { derived d1; } // CHECK-LABEL: define void @_Z5test1v() // CHECK: call void @_ZN7derivedC1Ev // CHECK: call void @_ZN7derivedD1Ev void test2() { derived *d2 = new derived; delete d2; } // CHECK-LABEL: define void @_Z5test2v() // CHECK: call void @_ZN7derivedC1Ev // CHECK: call void @_ZN7derivedD1Ev template struct tderived : public base { MyObject *myobject; }; void test3() { tderived d1; } // CHECK-LABEL: define void @_Z5test3v() // CHECK: call void @_ZN8tderivedIiEC1Ev // CHECK: call void @_ZN8tderivedIiED1Ev void test4() { tderived *d2 = new tderived; delete d2; } // CHECK-LABEL: define void @_Z5test4v() // CHECK: call void @_ZN8tderivedIiEC1Ev // CHECK: call void @_ZN8tderivedIiED1Ev // CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev // CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null) // CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev // CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null)