blob: 4da46a4358a6f4233cb2825b22d99b6bfacd60c3 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 %s -emit-llvm -o %t
Fariborz Jahanian6ca0b322009-08-03 20:20:07 +00002
3extern "C" int printf(...);
4
5static int val;
6
7struct B {
8 B() : iB(++val) { printf("B()\n"); }
9 int iB;
10 ~B() { printf("~B(%d)\n", iB); --val; }
11};
12
13struct M : B {
14 M() : iM(++val) { printf("M()\n"); }
15 int iM;
16 ~M() { printf("~M(%d)\n", iM); --val; }
17};
18
19struct P {
20 P() : iP(++val) { printf("P()\n"); }
21 int iP;
22 ~P() { printf("~P(%d)\n", iP); --val; }
23};
24
25struct N : M, P {
26 N() { printf("N()\n"); iN = ++val; }
27 ~N() { printf("~N(%d) val = %d\n", iN, --val); }
28 int iN;
29 M m;
30 P p;
31};
32
Anders Carlssonc33e4ba2009-10-06 18:09:57 +000033struct O : B {
34 ~O() { return; }
35};
36
Fariborz Jahanian6ca0b322009-08-03 20:20:07 +000037int main() {
38 N n1;
39 N n2;
Anders Carlssonc33e4ba2009-10-06 18:09:57 +000040 O o;
Fariborz Jahanian6ca0b322009-08-03 20:20:07 +000041}