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