xref: /aosp_15_r20/external/clang/test/CodeGenCXX/array-operator-delete-call.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
2*67e74705SXin Li // RUN: FileCheck %s
3*67e74705SXin Li // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
4*67e74705SXin Li // RUN: FileCheck %s
5*67e74705SXin Li 
6*67e74705SXin Li extern "C" int printf(...);
7*67e74705SXin Li 
8*67e74705SXin Li int count;
9*67e74705SXin Li 
10*67e74705SXin Li struct S {
SS11*67e74705SXin Li   S() : iS (++count) { printf("S::S(%d)\n", iS); }
~SS12*67e74705SXin Li   ~S() { printf("S::~S(%d)\n", iS); }
13*67e74705SXin Li   int iS;
14*67e74705SXin Li };
15*67e74705SXin Li 
16*67e74705SXin Li struct V {
VV17*67e74705SXin Li   V() : iV (++count) { printf("V::V(%d)\n", iV); }
~VV18*67e74705SXin Li   virtual ~V() { printf("V::~V(%d)\n", iV); }
19*67e74705SXin Li   int iV;
20*67e74705SXin Li };
21*67e74705SXin Li 
22*67e74705SXin Li struct COST
23*67e74705SXin Li {
24*67e74705SXin Li   S *cost;
25*67e74705SXin Li   V *vcost;
26*67e74705SXin Li   unsigned *cost_val;
27*67e74705SXin Li 
28*67e74705SXin Li   ~COST();
29*67e74705SXin Li   COST();
30*67e74705SXin Li };
31*67e74705SXin Li 
32*67e74705SXin Li 
COST()33*67e74705SXin Li COST::COST()
34*67e74705SXin Li {
35*67e74705SXin Li   cost = new S[3];
36*67e74705SXin Li   vcost = new V[4];
37*67e74705SXin Li   cost_val = new unsigned[10];
38*67e74705SXin Li }
39*67e74705SXin Li 
~COST()40*67e74705SXin Li COST::~COST()
41*67e74705SXin Li {
42*67e74705SXin Li   if (cost) {
43*67e74705SXin Li    delete [] cost;
44*67e74705SXin Li   }
45*67e74705SXin Li   if (vcost) {
46*67e74705SXin Li    delete [] vcost;
47*67e74705SXin Li   }
48*67e74705SXin Li   if (cost_val)
49*67e74705SXin Li     delete [] cost_val;
50*67e74705SXin Li }
51*67e74705SXin Li 
52*67e74705SXin Li COST c1;
53*67e74705SXin Li 
main()54*67e74705SXin Li int main()
55*67e74705SXin Li {
56*67e74705SXin Li   COST c3;
57*67e74705SXin Li }
58*67e74705SXin Li COST c2;
59*67e74705SXin Li 
60*67e74705SXin Li // CHECK: call void @_ZdaPv
61*67e74705SXin Li 
62