1 /* { dg-options "-O2 -fdump-tree-pre-stats" } */
2
3 void baz();
4 int tem;
foo(int a,int b,int c,int d,int e,int x,int y,int z)5 void foo (int a, int b, int c, int d, int e, int x, int y, int z)
6 {
7 if (a)
8 {
9 if (b)
10 {
11 if (c)
12 {
13 if (d)
14 {
15 if (e)
16 {
17 tem = x + y;
18 }
19 else
20 {
21 if (z) baz ();
22 tem = x + y;
23 }
24 }
25 else
26 {
27 if (z) baz ();
28 tem = x + y;
29 }
30 }
31 else
32 {
33 if (z) baz ();
34 tem = x + y;
35 }
36 }
37 else
38 {
39 if (z) baz ();
40 tem = x + y;
41 }
42 }
43 else
44 {
45 if (z) baz ();
46 tem = x + y;
47 }
48 }
49
50 /* Now inserting x + y five times is unnecessary but the cascading
51 cannot be avoided with the simple-minded dataflow. But make sure
52 we do not iterate PRE insertion. */
53 /* { dg-final { scan-tree-dump "insert iterations == 1" "pre" } } */
54 /* { dg-final { scan-tree-dump "HOIST inserted: 5" "pre" } } */
55