13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 -emit-llvm %s -o /dev/null 23883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherunion X; 43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct Empty {}; 53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherunion F {}; 63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherunion Q { union Q *X; }; 73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherunion X { 83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher char C; 93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher int A, Z; 103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher long long B; 113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher void *b1; 123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct { int A; long long Z; } Q; 133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherunion X foo(union X A) { 163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher A.C = 123; 173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher A.A = 39249; 183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher //A.B = (void*)123040123321; 193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher A.B = 12301230123123LL; 203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher A.Z = 1; 213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return A; 223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 23