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 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 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 }; 39 B() {} 40 B(int n) : k(n) {} 41 }; 42 43 B b1; 44 B b2(0); 45 46 // CHECK: define {{.*}}@"[[CONSTRUCT_GLOBAL]]C2Ev" 47 // CHECK-NOT: } 48 // CHECK: call {{.*}}@_Z6make_a 49 50 // CHECK: define {{.*}}@"[[CONSTRUCT_LOCAL]]C2Ev" 51 // CHECK-NOT: } 52 // CHECK: store i32 81 53 54 // CHECK-LABEL: define {{.*}} @_ZN1BC2Ev( 55 // CHECK: call void @_ZN1AC1Ev( 56 // CHECK: store i32 123, 57 // CHECK: } 58 59 // CHECK-LABEL: define {{.*}} @_ZN1BC2Ei( 60 // CHECK-NOT: call void @_ZN1AC1Ev( 61 // CHECK-NOT: store i32 123, 62 // CHECK: store i32 % 63 // CHECK-NOT: call void @_ZN1AC1Ev( 64 // CHECK-NOT: store i32 123, 65 // CHECK: } 66