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