xref: /aosp_15_r20/external/clang/test/CodeGen/2007-09-28-PackedUnionMember.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o -
2*67e74705SXin Li 
3*67e74705SXin Li #pragma pack(push, 2)
4*67e74705SXin Li struct H {
5*67e74705SXin Li   unsigned long f1;
6*67e74705SXin Li   unsigned long f2;
7*67e74705SXin Li   union {
8*67e74705SXin Li     struct opaque1 *f3;
9*67e74705SXin Li     struct opaque2 *f4;
10*67e74705SXin Li     struct {
11*67e74705SXin Li       struct opaque3 *f5;
12*67e74705SXin Li       unsigned short  f6;
13*67e74705SXin Li     } f7;
14*67e74705SXin Li   } f8;
15*67e74705SXin Li };
16*67e74705SXin Li #pragma pack(pop)
17*67e74705SXin Li 
18*67e74705SXin Li struct E {
19*67e74705SXin Li   unsigned long f1;
20*67e74705SXin Li   unsigned long f2;
21*67e74705SXin Li };
22*67e74705SXin Li 
23*67e74705SXin Li typedef long (*FuncPtr) ();
24*67e74705SXin Li 
25*67e74705SXin Li extern long bork(FuncPtr handler, const struct E *list);
26*67e74705SXin Li 
hndlr()27*67e74705SXin Li static long hndlr()
28*67e74705SXin Li {
29*67e74705SXin Li   struct H cmd = { 4, 412 };
30*67e74705SXin Li   struct H cmd2 = { 4, 412, 0 };
31*67e74705SXin Li   return 0;
32*67e74705SXin Li }
foo(void * inWindow)33*67e74705SXin Li void foo(void *inWindow) {
34*67e74705SXin Li   static const struct E events[] = {
35*67e74705SXin Li     { 123124, 1 }
36*67e74705SXin Li   };
37*67e74705SXin Li   bork(hndlr, events);
38*67e74705SXin Li }
39