1202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O2 -o - | FileCheck %s
2202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlssonstatic int count = 0;
36b48720ae0ae977ca052472562fadb498a6dcb6fFariborz Jahanian
40880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanianstruct S {
5202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  S() { count++; }
6202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  ~S() { count--; }
70880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian};
80880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian
9202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlssonstruct P {
10202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  P() { count++; }
11202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  ~P() { count--; }
120880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian};
130880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian
14202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlssonstruct Q {
15202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  Q() { count++; }
16202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  ~Q() { count--; }
170880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian};
180880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian
19202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlssonstruct M : Q, P {
200880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian  S s;
210880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian  Q q;
22202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  P p;
23202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  P p_arr[3];
24202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  Q q_arr[2][3];
250880bacf8fdb7de9d9c5b53b81ea0e53afccafb5Fariborz Jahanian};
26202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson
27be9e8bfef6ee7f81ea30e9d358101b4f8d560c6bBill Wendling// CHECK: define i32 @_Z1fv() [[NUW:#[0-9]+]]
28202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlssonint f() {
29202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  {
30202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson    count = 1;
31202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson    M a;
32202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  }
33202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson
34202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  // CHECK: ret i32 1
35202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson  return count;
36202e42b9bf622cd474191cbcdece658d5ef3fd8fAnders Carlsson}
37f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
38be9e8bfef6ee7f81ea30e9d358101b4f8d560c6bBill Wendling// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
39