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 Livoid f() { 9*67e74705SXin Li u.b = 11; 10*67e74705SXin Li } 11*67e74705SXin Li get_b(union u_tag * my_u)12*67e74705SXin Lifloat 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 Liint 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 Liint 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 Livoid 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 Liint qfunc() {q buf; unsigned char* x = buf.x;} 38*67e74705SXin Li 39*67e74705SXin Li union RR {_Bool a : 1;} RRU; RRF(void)40*67e74705SXin Liint 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