111
|
1 /* { dg-do compile } */
|
|
2 /* { dg-options "-O2 -fdump-tree-profile_estimate" } */
|
|
3
|
|
4 extern int global;
|
|
5
|
|
6 int bar(int);
|
|
7
|
|
8 void foo (int bound)
|
|
9 {
|
|
10 int i, ret = 0;
|
|
11 for (i = 0; i <= bound; i++)
|
|
12 {
|
|
13 if (i < bound - 2)
|
|
14 global += bar (i);
|
|
15 /* The following test is redundant with the loop bound check in the
|
|
16 for stmt and thus eliminated by FRE which makes the controlled
|
|
17 stmt always executed and thus equivalent to 100%. Thus the
|
|
18 heuristic only applies three times. */
|
|
19 if (i <= bound)
|
|
20 global += bar (i);
|
|
21 if (i + 1 < bound)
|
|
22 global += bar (i);
|
|
23 if (i != bound)
|
|
24 global += bar (i);
|
|
25 }
|
|
26 }
|
|
27
|
131
|
28 /* { dg-final { scan-tree-dump-times "guess loop iv compare heuristics of edge\[^:\]*: 64.00%" 3 "profile_estimate"} } */
|