blob: af780044d193bb9d902547fde7625696e73f32e2 [file] [log] [blame]
Anders Carlsson29f899d2010-01-27 03:03:08 +00001// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O2 -o - | FileCheck %s
2static int count = 0;
Fariborz Jahanian9c0d0542009-08-20 23:33:31 +00003
Fariborz Jahaniand172e912009-08-17 19:04:50 +00004struct S {
Anders Carlsson29f899d2010-01-27 03:03:08 +00005 S() { count++; }
6 ~S() { count--; }
Fariborz Jahaniand172e912009-08-17 19:04:50 +00007};
8
9struct P {
Anders Carlsson29f899d2010-01-27 03:03:08 +000010 P() { count++; }
11 ~P() { count--; }
Fariborz Jahaniand172e912009-08-17 19:04:50 +000012};
13
Anders Carlsson29f899d2010-01-27 03:03:08 +000014struct Q {
15 Q() { count++; }
16 ~Q() { count--; }
17};
18
19struct M : Q, P {
Fariborz Jahaniand172e912009-08-17 19:04:50 +000020 S s;
Fariborz Jahaniand172e912009-08-17 19:04:50 +000021 Q q;
Anders Carlsson29f899d2010-01-27 03:03:08 +000022 P p;
23 P p_arr[3];
24 Q q_arr[2][3];
Fariborz Jahaniand172e912009-08-17 19:04:50 +000025};
Anders Carlsson29f899d2010-01-27 03:03:08 +000026
Bill Wendling706469b2013-02-28 22:49:57 +000027// CHECK: define i32 @_Z1fv() [[NUW:#[0-9]+]]
Anders Carlsson29f899d2010-01-27 03:03:08 +000028int f() {
29 {
30 count = 1;
31 M a;
32 }
Fariborz Jahaniand172e912009-08-17 19:04:50 +000033
Anders Carlsson29f899d2010-01-27 03:03:08 +000034 // CHECK: ret i32 1
35 return count;
36}
Bill Wendlingc33fc4c2013-02-20 07:22:19 +000037
Bill Wendling706469b2013-02-28 22:49:57 +000038// CHECK: attributes [[NUW]] = { nounwind{{.*}} }