1  #include "analyzer-decls.h"
       2  
       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  }