13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 %s -emit-llvm -o - 23883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher#pragma pack(push, 2) 43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct H { 53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned long f1; 63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned long f2; 73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher union { 83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct opaque1 *f3; 93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct opaque2 *f4; 103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct { 113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct opaque3 *f5; 123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned short f6; 133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } f7; 143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } f8; 153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher#pragma pack(pop) 173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstruct E { 193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned long f1; 203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher unsigned long f2; 213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher}; 223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 233883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophertypedef long (*FuncPtr) (); 243883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 253883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherextern long bork(FuncPtr handler, const struct E *list); 263883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 273883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstatic long hndlr() 283883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher{ 293883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher struct H cmd = { 4, 412 }; 302d6a5670465cb3f1d811695a9f23e372508240d2Richard Smith struct H cmd2 = { 4, 412, 0 }; 313883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return 0; 323883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 333883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophervoid foo(void *inWindow) { 343883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher static const struct E events[] = { 353883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher { 123124, 1 } 363883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher }; 373883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher bork(hndlr, events); 383883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 39