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 | |