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