1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdisable-tree-evrp -fdump-tree-vrp1" } */
3
4 int baz (void);
5
6 int
foo(int i,int j,int a)7 foo (int i, int j, int a)
8 {
9 if (i >= 10)
10 if (i <= 30)
11 if (i == j)
12 {
13 a--;
14
15 /* This should fold to 'if (0)'. */
16 if (i < 0)
17 i = baz ();
18
19 /* This should fold to 'if (1)'. */
20 if (j > 0)
21 a--;
22
23 /* This should fold to 'if (0)'. */
24 if (i != j)
25 return 0;
26 }
27
28 return i + a + j;
29 }
30
31 /* { dg-final { scan-tree-dump-times "Folding predicate \[i|j\]_\[0-9\]+.*0 to 0" 1 "vrp1" } } */
32 /* { dg-final { scan-tree-dump-times "Folding predicate \[i|j\]_\[0-9\]+.*0 to 1" 1 "vrp1" } } */
33 /* { dg-final { scan-tree-dump-times "Folding predicate i_\[0-9]+.*j_\[0-9\]+.* to 0" 1 "vrp1" } } */
34