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