anonymous-union-member-initializer.cpp revision f1860e5c381a2710fcebe6d55d799c6b25c21041
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s
2
3struct A {
4  union {
5    int a;
6    void* b;
7  };
8
9  A() : a(0) { }
10};
11
12A a;
13
14namespace PR7021 {
15  struct X
16  {
17    union { long l; };
18  };
19
20  // CHECK: define void @_ZN6PR70211fENS_1XES0_
21  void f(X x, X z) {
22    X x1;
23
24    // CHECK: store i64 1, i64
25    x1.l = 1;
26
27    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
28    X x2(x1);
29
30    X x3;
31    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
32    x3 = x1;
33
34    // CHECK: ret void
35  }
36}
37
38namespace test2 {
39  struct A {
40    struct {
41      union {
42        int b;
43      };
44    };
45
46    A();
47  };
48
49  A::A() : b(10) { }
50  // CHECK: define void @_ZN5test21AC2Ev(
51  // CHECK-NOT: }
52  // CHECK: store i32 10
53  // CHECK: }
54}
55