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