| #include "analyzer-decls.h" |
| |
| static int __analyzer_called_function(int j) |
| { |
| int k; |
| |
| __analyzer_eval (j > 4); /* { dg-warning "TRUE" } */ |
| |
| k = j - 1; |
| |
| __analyzer_eval (k > 3); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ |
| /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ |
| /* TODO(xfail): we're not then updating based on the assignment. */ |
| |
| return k; |
| } |
| |
| void test(int i) |
| { |
| __analyzer_eval (i > 4); /* { dg-warning "UNKNOWN" } */ |
| |
| if (i > 4) { |
| |
| __analyzer_eval (i > 4); /* { dg-warning "TRUE" } */ |
| |
| i = __analyzer_called_function(i); |
| |
| __analyzer_eval (i > 3); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ |
| /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ |
| /* TODO(xfail): we're not updating from the returned value. */ |
| } |
| |
| __analyzer_eval (i > 3); /* { dg-warning "UNKNOWN" } */ |
| } |