[clang][lex] NFCI: Use DirectoryEntryRef in ModuleMap::inferFrameworkModule()
[llvm-project.git] / clang / test / CodeGenObjCXX / destroy.mm
blobd9f62e64848ecb831cd2c44c633139e4b97c9db9
1 // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-passes -o - %s | FileCheck %s
2 // rdar://18249673
4 @class MyObject;
5 struct base {
6   ~base() = default;
7 };
8 struct derived : public base {
9   MyObject *myobject;
12 void test1() {
13   derived d1;
15 // CHECK-LABEL: define{{.*}} void @_Z5test1v()
16 // CHECK: call void @_ZN7derivedC1Ev
17 // CHECK: call void @_ZN7derivedD1Ev
19 void test2() {
20   derived *d2 = new derived;
21   delete d2;
23 // CHECK-LABEL: define{{.*}} void @_Z5test2v()
24 // CHECK:   call void @_ZN7derivedC1Ev
25 // CHECK:   call void @_ZN7derivedD1Ev
27 template <typename T>
28 struct tderived : public base {
29   MyObject *myobject;
31 void test3() {
32   tderived<int> d1;
34 // CHECK-LABEL: define{{.*}} void @_Z5test3v()
35 // CHECK: call void @_ZN8tderivedIiEC1Ev
36 // CHECK: call void @_ZN8tderivedIiED1Ev
38 void test4() {
39   tderived<int> *d2 = new tderived<int>;
40   delete d2;
42 // CHECK-LABEL: define{{.*}} void @_Z5test4v()
43 // CHECK: call void @_ZN8tderivedIiEC1Ev
44 // CHECK: call void @_ZN8tderivedIiED1Ev
46 // CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev
47 // CHECK: call void @llvm.objc.storeStrong(ptr {{.*}}, ptr null)
49 // CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev
50 // CHECK: call void @llvm.objc.storeStrong(ptr {{.*}}, ptr null)