50 lines · plain
1// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-passes -o - %s | FileCheck %s2 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 @_ZN7derivedC1Ev16// CHECK: call void @_ZN7derivedD1Ev17 18void test2() {19 derived *d2 = new derived;20 delete d2;21}22// CHECK-LABEL: define{{.*}} void @_Z5test2v()23// CHECK: call void @_ZN7derivedC1Ev24// CHECK: call void @_ZN7derivedD1Ev25 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 @_ZN8tderivedIiEC1Ev35// CHECK: call void @_ZN8tderivedIiED1Ev36 37void test4() {38 tderived<int> *d2 = new tderived<int>;39 delete d2;40}41// CHECK-LABEL: define{{.*}} void @_Z5test4v()42// CHECK: call void @_ZN8tderivedIiEC1Ev43// CHECK: call void @_ZN8tderivedIiED1Ev44 45// CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev46// CHECK: call void @llvm.objc.storeStrong(ptr {{.*}}, ptr null)47 48// CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev49// CHECK: call void @llvm.objc.storeStrong(ptr {{.*}}, ptr null)50