1 #include "analyzer-decls.h"
2
test(int i,int j)3 void test (int i, int j)
4 {
5 int k, m;
6
7 if (i > 42) {
8 __analyzer_eval (i > 42); /* { dg-warning "TRUE" } */
9
10 i += 3;
11
12 __analyzer_eval (i > 45); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */
13 /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */
14 /* TODO(xfail): do we really know this? what about overflow? */
15
16 i -= 1;
17
18 __analyzer_eval (i > 44); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */
19 /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */
20 /* TODO(xfail): do we really know this? what about overflow? */
21
22 i = 3 * i;
23
24 __analyzer_eval (i > 132); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */
25 /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */
26 /* TODO(xfail): do we really know this? what about overflow? */
27
28 i /= 2;
29
30 __analyzer_eval (i > 66); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */
31 /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */
32 /* TODO(xfail): do we really know this? what about overflow? */
33
34 /* We don't know anything about j, so we don't know anything about k: */
35 k = i + j;
36 __analyzer_eval (k == 0); /* { dg-warning "UNKNOWN" } */
37
38 /* However, we should now know that m > 67: */
39 m = i + 1;
40 __analyzer_eval (m > 67); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */
41 /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */
42 /* TODO(xfail): do we really know this? what about overflow? */
43 }
44 }
45