1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fno-tree-fre -fdisable-tree-evrp -fdump-tree-vrp1 -std=gnu89" } */
3 
foo(int * p)4 foo (int *p)
5 {
6   int x = baz ();
7 
8   if (p == 0)
9     goto L78;
10   else
11     {
12       x = *p;
13       /* This should be folded to if (1).  */
14       if (p)
15 	x = x + 1;
16 L78:
17       /* This should not be folded to if (1).  */
18       if (p)
19 	{
20 	  x = baz (*p);
21 	  /* This should be folded to if (1).  */
22 	  if (p)
23 	    return x + 3;
24 	}
25 
26       return x - 3;
27     }
28 }
29 
30 /* { dg-final { scan-tree-dump-times "Folding predicate p_.. != 0B to 1" 2 "vrp1" } } */
31