| /* { dg-options "-O2 -fdump-tree-pre-stats" } */ |
| |
| void baz(); |
| int tem; |
| void foo (int a, int b, int c, int d, int e, int x, int y, int z) |
| { |
| if (a) |
| { |
| if (b) |
| { |
| if (c) |
| { |
| if (d) |
| { |
| if (e) |
| { |
| tem = x + y; |
| } |
| else |
| { |
| if (z) baz (); |
| tem = x + y; |
| } |
| } |
| else |
| { |
| if (z) baz (); |
| tem = x + y; |
| } |
| } |
| else |
| { |
| if (z) baz (); |
| tem = x + y; |
| } |
| } |
| else |
| { |
| if (z) baz (); |
| tem = x + y; |
| } |
| } |
| else |
| { |
| if (z) baz (); |
| tem = x + y; |
| } |
| } |
| |
| /* Now inserting x + y five times is unnecessary but the cascading |
| cannot be avoided with the simple-minded dataflow. But make sure |
| we do not iterate PRE insertion. */ |
| /* { dg-final { scan-tree-dump "insert iterations == 1" "pre" } } */ |
| /* { dg-final { scan-tree-dump "HOIST inserted: 5" "pre" } } */ |