1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
3 
4 void foo();
5 void bla();
6 void bar();
7 
8 /* Avoid threading in the following case, to prevent creating subloops.  */
9 
dont_thread_2(int first)10 void dont_thread_2 (int first)
11 {
12   int i = 0;
13 
14   do
15     {
16       bla ();
17       bla ();
18       bla ();
19       if (first)
20 	foo ();
21       else
22 	bar ();
23 
24       first = 0;
25       bla ();
26     } while (i++ < 100);
27 }
28 
29 /* Peeling off the first iteration would make threading through
30    the loop latch safe, but we don't do that currently.  */
31 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp1"} } */
32 /* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
33