| // RUN: %clang_cc1 %s -emit-llvm -o - | 
 |  | 
 | #pragma pack(push, 2) | 
 | struct H { | 
 |   unsigned long f1; | 
 |   unsigned long f2; | 
 |   union { | 
 |     struct opaque1 *f3; | 
 |     struct opaque2 *f4; | 
 |     struct { | 
 |       struct opaque3 *f5; | 
 |       unsigned short  f6; | 
 |     } f7; | 
 |   } f8; | 
 | }; | 
 | #pragma pack(pop) | 
 |  | 
 | struct E { | 
 |   unsigned long f1; | 
 |   unsigned long f2; | 
 | }; | 
 |  | 
 | typedef long (*FuncPtr) (void); | 
 |  | 
 | extern long bork(FuncPtr handler, const struct E *list); | 
 |  | 
 | static long hndlr(void) | 
 | { | 
 |   struct H cmd = { 4, 412 }; | 
 |   struct H cmd2 = { 4, 412, 0 }; | 
 |   return 0; | 
 | } | 
 | void foo(void *inWindow) { | 
 |   static const struct E events[] = { | 
 |     { 123124, 1 } | 
 |   }; | 
 |   bork(hndlr, events); | 
 | } |