1 // RUN: %clang_cc1 %s -std=c++11 -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s
2 
3 // PR10531.
4 
5 int make_a();
6 
7 static union {
8   int a = make_a();
9   char *b;
10 };
11 
f()12 int f() { return a; }
13 
14 // CHECK-LABEL: define internal void @__cxx_global_var_init
15 // CHECK-NOT: }
16 // CHECK: call {{.*}}@"[[CONSTRUCT_GLOBAL:.*]]C1Ev"
17 
18 
g()19 int g() {
20   union {
21     int a;
22     int b = 81;
23   };
24   // CHECK-LABEL: define {{.*}}_Z1gv
25   // CHECK-NOT: }
26   // CHECK: call {{.*}}@"[[CONSTRUCT_LOCAL:.*]]C1Ev"
27   return b;
28 }
29 
30 struct A {
31   A();
32 };
33 union B {
34   int k;
35   struct {
36     A x;
37     int y = 123;
38   };
B()39   B() {}
B(int n)40   B(int n) : k(n) {}
41 };
42 
43 B b1;
44 B b2(0);
45 
46 
47 // CHECK-LABEL: define {{.*}} @_ZN1BC2Ei(
48 // CHECK-NOT: call void @_ZN1AC1Ev(
49 // CHECK-NOT: store i32 123,
50 // CHECK: store i32 %
51 // CHECK-NOT: call void @_ZN1AC1Ev(
52 // CHECK-NOT: store i32 123,
53 // CHECK: }
54 
55 // CHECK-LABEL: define {{.*}} @_ZN1BC2Ev(
56 // CHECK: call void @_ZN1AC1Ev(
57 // CHECK: store i32 123,
58 // CHECK: }
59 
60 
61 // CHECK: define {{.*}}@"[[CONSTRUCT_LOCAL]]C2Ev"
62 // CHECK-NOT: }
63 // CHECK: store i32 81
64 
65 // CHECK: define {{.*}}@"[[CONSTRUCT_GLOBAL]]C2Ev"
66 // CHECK-NOT: }
67 // CHECK: call {{.*}}@_Z6make_a
68