1 typedef struct
2 {
3   void *p;
4 } Ptr;
5 
6 struct A
7 {
8   int i;
9   union
10   {
11     Ptr p;
12     char *q;
13   } u;
14 };
15 
16 extern Ptr get_stuff (void);
17 extern void use_stuff (char *);
18 
foo(struct A p,char * q)19 static void foo(struct A p, char *q)
20 {
21   if (p.i)
22     p.u.p = get_stuff ();
23   else
24     p.u.q = q;
25 
26   use_stuff (p.u.q);
27 }
28 
bar(struct A * p,char * q)29 void bar(struct A *p, char *q)
30 {
31   foo(*p, q);
32 }
33