blob: 87f8698b84c3a75a77c139607511ad0193e4e203 [file] [log] [blame]
John McCall9c82afc2010-04-20 02:18:25 +00001// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
Anders Carlsson60e282c2009-08-16 21:13:42 +00002
3void t1(int *a) {
4 delete a;
5}
6
7struct S {
8 int a;
9};
10
11// POD types.
12void t3(S *s) {
13 delete s;
14}
15
16// Non-POD
17struct T {
18 ~T();
19 int a;
20};
21
John McCall9c82afc2010-04-20 02:18:25 +000022// CHECK: define void @_Z2t4P1T
Anders Carlsson60e282c2009-08-16 21:13:42 +000023void t4(T *t) {
John McCall9c82afc2010-04-20 02:18:25 +000024 // CHECK: call void @_ZN1TD1Ev
25 // CHECK-NEXT: bitcast
26 // CHECK-NEXT: call void @_ZdlPv
Anders Carlsson60e282c2009-08-16 21:13:42 +000027 delete t;
28}
Douglas Gregord69dd782009-10-01 05:49:51 +000029
30// PR5102
31template <typename T>
32class A {
33 operator T *() const;
34};
35
36void f() {
37 A<char*> a;
38
39 delete a;
40}
John McCall9c82afc2010-04-20 02:18:25 +000041
42namespace test0 {
43 struct A {
44 void *operator new(__SIZE_TYPE__ sz);
45 void operator delete(void *p) { ::operator delete(p); }
46 ~A() {}
47 };
48
49 // CHECK: define void @_ZN5test04testEPNS_1AE(
50 void test(A *a) {
51 // CHECK: call void @_ZN5test01AD1Ev
52 // CHECK-NEXT: bitcast
53 // CHECK-NEXT: call void @_ZN5test01AdlEPv
54 delete a;
55 }
56
57 // CHECK: define linkonce_odr void @_ZN5test01AD1Ev
58 // CHECK: define linkonce_odr void @_ZN5test01AdlEPv
59}