xref: /llvm-project/clang/test/CodeGenCXX/array-operator-delete-call.cpp (revision a1226fc722e7b231ad3b22c54e58dd723e5bedf0)
1*a1226fc7SRafael Espindola // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
2*a1226fc7SRafael Espindola // RUN: FileCheck %s
3*a1226fc7SRafael Espindola // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
4*a1226fc7SRafael Espindola // RUN: FileCheck %s
56814eaa2SFariborz Jahanian 
66814eaa2SFariborz Jahanian extern "C" int printf(...);
76814eaa2SFariborz Jahanian 
86814eaa2SFariborz Jahanian int count;
96814eaa2SFariborz Jahanian 
106814eaa2SFariborz Jahanian struct S {
SS116814eaa2SFariborz Jahanian   S() : iS (++count) { printf("S::S(%d)\n", iS); }
~SS126814eaa2SFariborz Jahanian   ~S() { printf("S::~S(%d)\n", iS); }
136814eaa2SFariborz Jahanian   int iS;
146814eaa2SFariborz Jahanian };
156814eaa2SFariborz Jahanian 
16ebea0058SFariborz Jahanian struct V {
VV17ebea0058SFariborz Jahanian   V() : iV (++count) { printf("V::V(%d)\n", iV); }
~VV18ebea0058SFariborz Jahanian   virtual ~V() { printf("V::~V(%d)\n", iV); }
19ebea0058SFariborz Jahanian   int iV;
20ebea0058SFariborz Jahanian };
21ebea0058SFariborz Jahanian 
226814eaa2SFariborz Jahanian struct COST
236814eaa2SFariborz Jahanian {
246814eaa2SFariborz Jahanian   S *cost;
25ebea0058SFariborz Jahanian   V *vcost;
266814eaa2SFariborz Jahanian   unsigned *cost_val;
276814eaa2SFariborz Jahanian 
286814eaa2SFariborz Jahanian   ~COST();
296814eaa2SFariborz Jahanian   COST();
306814eaa2SFariborz Jahanian };
316814eaa2SFariborz Jahanian 
326814eaa2SFariborz Jahanian 
COST()336814eaa2SFariborz Jahanian COST::COST()
346814eaa2SFariborz Jahanian {
356814eaa2SFariborz Jahanian   cost = new S[3];
36ebea0058SFariborz Jahanian   vcost = new V[4];
376814eaa2SFariborz Jahanian   cost_val = new unsigned[10];
386814eaa2SFariborz Jahanian }
396814eaa2SFariborz Jahanian 
~COST()406814eaa2SFariborz Jahanian COST::~COST()
416814eaa2SFariborz Jahanian {
426814eaa2SFariborz Jahanian   if (cost) {
436814eaa2SFariborz Jahanian    delete [] cost;
446814eaa2SFariborz Jahanian   }
45ebea0058SFariborz Jahanian   if (vcost) {
46ebea0058SFariborz Jahanian    delete [] vcost;
47ebea0058SFariborz Jahanian   }
486814eaa2SFariborz Jahanian   if (cost_val)
496814eaa2SFariborz Jahanian     delete [] cost_val;
506814eaa2SFariborz Jahanian }
516814eaa2SFariborz Jahanian 
526814eaa2SFariborz Jahanian COST c1;
536814eaa2SFariborz Jahanian 
main()546814eaa2SFariborz Jahanian int main()
556814eaa2SFariborz Jahanian {
566814eaa2SFariborz Jahanian   COST c3;
576814eaa2SFariborz Jahanian }
586814eaa2SFariborz Jahanian COST c2;
596814eaa2SFariborz Jahanian 
60*a1226fc7SRafael Espindola // CHECK: call void @_ZdaPv
616814eaa2SFariborz Jahanian 
62