66 lines · cpp
1// RUN: %clang_cc1 %s -std=c++11 -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s2 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_init15// 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 {{.*}}_Z1gv25 // 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// CHECK: define {{.*}}@"[[CONSTRUCT_GLOBAL]]C2Ev"47// CHECK-NOT: }48// CHECK: call {{.*}}@_Z6make_a49 50// CHECK: define {{.*}}@"[[CONSTRUCT_LOCAL]]C2Ev"51// CHECK-NOT: }52// CHECK: store i32 8153 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