1 /* { dg-do compile } */
2 
3 union U {
4     double val;
5     union U *ptr;
6 };
7 
8 union U *d;
9 double a;
10 int b;
11 int c;
12 
fn1(union U * p1,int p2,_Bool p3)13 static void fn1(union U *p1, int p2, _Bool p3)
14 {
15     union U *e;
16 
17     if (p2 == 0)
18 	a = ((union U*)((__SIZE_TYPE__)p1 & ~1))->val;
19 
20     if (b) {
21 	e = p1;
22     } else if (c) {
23 	e = ((union U*)((__SIZE_TYPE__)p1 & ~1))->ptr;
24 	d = e;
25     } else {
26 	e = 0;
27 	d = ((union U*)0)->ptr;
28     }
29 
30     fn1 (e, 0, 0);
31     fn1 (0, 0, p3);
32 }
33 
fn2(void)34 void fn2 (void)
35 {
36   fn1 (0, 0, 0);
37 }
38