// RUN: %clang_cc1 %s -emit-llvm -o - union u_tag { int a; float b; } u; void f(void) { u.b = 11; } float get_b(union u_tag *my_u) { return my_u->b; } int f2( float __x ) { union{ float __f; unsigned int __u; }__u; return (int)(__u.__u >> 31); } typedef union { int i; int *j; } value; int f3(value v) { return *v.j; } enum E9 { one, two }; union S65 { enum E9 a; } ; union S65 s65; void fS65(void) { enum E9 e = s65.a; } typedef union{ unsigned char x[65536]; } q; int qfunc(void) {q buf; unsigned char* x = buf.x;} union RR {_Bool a : 1;} RRU; int RRF(void) {return RRU.a;} // PR6164 typedef union T0 { unsigned int : 0; } T0; T0 t0; union { int large_bitfield: 31; char c } u2; struct dt_t_s { union { long long u : 56; } __attribute__((packed)); }; struct { struct { struct { struct dt_t_s t; }; }; } a;