OSDN Git Service

2007-07-06 Daniel Berlin <dberlin@dberlin.org>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / tree-ssa / vrp07.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-vrp1-details" } */
3
4 foo (int i, int *p)
5 {
6   int j;
7
8   if (i > 10)
9     {
10       if (p)
11         {
12           j = *p;
13           /* This should be folded to if (1) because of the parent 'if
14              (p)'.  But the dereference of p above does not need an
15              assertion.  */
16           if (p)
17             return j + 1;
18         }
19     }
20   else
21     {
22       j = *p - 3;
23       /* This should be folded to if (0), because p has just been
24          dereferenced.  But we were not inserting enough ASSERT_EXPRs
25          to figure it out.  */
26       if (!p)
27         return j - 4;
28     }
29
30   return i;
31 }
32
33 /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" } } */
34 /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 0" 1 "vrp1" } } */
35 /* { dg-final { scan-tree-dump-times "PREDICATE: p_\[0-9\]" 2 "vrp1" } } */
36 /* { dg-final { cleanup-tree-dump "vrp1" } } */