#include "analyzer-decls.h" void test (int i, int j) { int k, m; if (i > 42) { __analyzer_eval (i > 42); /* { dg-warning "TRUE" } */ i += 3; __analyzer_eval (i > 45); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ /* TODO(xfail): do we really know this? what about overflow? */ i -= 1; __analyzer_eval (i > 44); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ /* TODO(xfail): do we really know this? what about overflow? */ i = 3 * i; __analyzer_eval (i > 132); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ /* TODO(xfail): do we really know this? what about overflow? */ i /= 2; __analyzer_eval (i > 66); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ /* TODO(xfail): do we really know this? what about overflow? */ /* We don't know anything about j, so we don't know anything about k: */ k = i + j; __analyzer_eval (k == 0); /* { dg-warning "UNKNOWN" } */ /* However, we should now know that m > 67: */ m = i + 1; __analyzer_eval (m > 67); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */ /* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */ /* TODO(xfail): do we really know this? what about overflow? */ } }