1// RUN: %clang_cc1 %s -std=c++11 -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s 2 3// PR10531. 4 5int make_a(); 6 7static union { 8 int a = make_a(); 9 char *b; 10}; 11 12int 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 19int 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 30struct A { 31 A(); 32}; 33union B { 34 int k; 35 struct { 36 A x; 37 int y = 123; 38 }; 39 B() {} 40 B(int n) : k(n) {} 41}; 42 43B b1; 44B 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