blob: 5d797d32d42e4dbb29301acdba0ef29585096896 [file] [log] [blame]
Stephen Hines176edba2014-12-01 14:53:08 -08001// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -disable-llvm-optzns -o - %s | FileCheck %s
2// rdar://18249673
3
4@class MyObject;
5struct base {
6 ~base() = default;
7};
8struct derived : public base {
9 MyObject *myobject;
10};
11
12void test1() {
13 derived d1;
14}
15// CHECK-LABEL: define void @_Z5test1v()
16// CHECK: call void @_ZN7derivedC1Ev
17// CHECK: call void @_ZN7derivedD1Ev
18
19void test2() {
20 derived *d2 = new derived;
21 delete d2;
22}
23// CHECK-LABEL: define void @_Z5test2v()
24// CHECK: call void @_ZN7derivedC1Ev
25// CHECK: call void @_ZN7derivedD1Ev
26
27template <typename T>
28struct tderived : public base {
29 MyObject *myobject;
30};
31void test3() {
32 tderived<int> d1;
33}
34// CHECK-LABEL: define void @_Z5test3v()
35// CHECK: call void @_ZN8tderivedIiEC1Ev
36// CHECK: call void @_ZN8tderivedIiED1Ev
37
38void test4() {
39 tderived<int> *d2 = new tderived<int>;
40 delete d2;
41}
42// CHECK-LABEL: define void @_Z5test4v()
43// CHECK: call void @_ZN8tderivedIiEC1Ev
44// CHECK: call void @_ZN8tderivedIiED1Ev
45
Stephen Hines0e2c34f2015-03-23 12:09:02 -070046// CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev
Stephen Hines176edba2014-12-01 14:53:08 -080047// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null)
48
Stephen Hines0e2c34f2015-03-23 12:09:02 -070049// CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev
Stephen Hines176edba2014-12-01 14:53:08 -080050// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null)