1 | // RUN: %clang_cc1 %s -emit-llvm -o - |
2 | |
3 | union u_tag { |
4 | int a; |
5 | float b; |
6 | } u; |
7 | |
8 | void f() { |
9 | u.b = 11; |
10 | } |
11 | |
12 | float get_b(union u_tag *my_u) { |
13 | return my_u->b; |
14 | } |
15 | |
16 | int f2( float __x ) { |
17 | union{ |
18 | float __f; |
19 | unsigned int __u; |
20 | }__u; |
21 | return (int)(__u.__u >> 31); |
22 | } |
23 | |
24 | typedef union { int i; int *j; } value; |
25 | |
26 | int f3(value v) { |
27 | return *v.j; |
28 | } |
29 | |
30 | enum E9 { one, two }; |
31 | union S65 { enum E9 a; } ; union S65 s65; |
32 | void fS65() { enum E9 e = s65.a; } |
33 | |
34 | typedef union{ |
35 | unsigned char x[65536]; |
36 | } q; |
37 | int qfunc() {q buf; unsigned char* x = buf.x;} |
38 | |
39 | union RR {_Bool a : 1;} RRU; |
40 | int RRF(void) {return RRU.a;} |
41 | |
42 | // PR6164 |
43 | typedef union T0 { unsigned int : 0; } T0; |
44 | T0 t0; |
45 | |
46 | union { int large_bitfield: 31; char c } u2; |
47 | |
48 | struct dt_t_s { |
49 | union { |
50 | long long u : 56; |
51 | } __attribute__((packed)); |
52 | }; |
53 | struct { |
54 | struct { |
55 | struct { |
56 | struct dt_t_s t; |
57 | }; |
58 | }; |
59 | } a; |
60 | |