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