111
|
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 /* This is a TODO -- it is correct to thread both entry and latch edge through
|
|
9 the header, but we do not handle this case yet. */
|
|
10
|
|
11 void dont_thread_1 (void)
|
|
12 {
|
|
13 int i = 0;
|
|
14 int first = 1;
|
|
15
|
|
16 do
|
|
17 {
|
|
18 bla ();
|
|
19 bla ();
|
|
20 bla ();
|
|
21 if (first)
|
|
22 foo ();
|
|
23 else
|
|
24 bar ();
|
|
25
|
|
26 first = 0;
|
|
27 bla ();
|
|
28 } while (i++ < 100);
|
|
29 }
|
|
30
|
|
31 /* In this case we can thread if and only if we thread through the
|
|
32 header and around the latch. If one is done without the other, then
|
|
33 we create an irreducible CFG. */
|
|
34 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp1"} } */
|
|
35 /* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
|