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