1 /* PR rtl-optimization/63804 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -g" } */
4 
5 struct A { int gen; } e;
6 int a, d;
7 long b;
8 enum B { C };
9 struct D
10 {
11   enum B type : 1;
12   int nr : 1;
13   struct { unsigned ud; } dw1;
14 };
15 enum B c;
16 
17 void
fn1(int p1)18 fn1 (int p1)
19 {
20   b = p1 & a;
21 }
22 
23 int fn2 ();
24 void fn3 ();
25 
26 void
fn4(struct D p1,unsigned p2,int p3)27 fn4 (struct D p1, unsigned p2, int p3)
28 {
29   struct D f, g, h, j = p1, l, m = l;
30   struct A i = e;
31   if (i.gen)
32     p2 = 0;
33   j.type = c;
34   g = j;
35   p1 = g;
36   fn3 ();
37   int k = p2, v = p1.nr, p = v;
38   m.dw1.ud = k;
39   f = m;
40   h = f;
41   struct D n = h;
42   fn3 (n);
43   {
44     d = fn2 ();
45     int o = d;
46     fn1 (o);
47   }
48   if (i.gen)
49     fn3 (p1);
50   b = p & a;
51   fn3 (p3);
52 }
53