#include "analyzer-decls.h"

/* The example from store.h  */

void test_1 (char a, char b, char c, char d, char e, char f,
	     int i, int j)
{
  char arr[1024]; /* { dg-message "region created on stack here" } */
  arr[2] = a;  /* (1) */
  arr[3] = b;  /* (2) */

  __analyzer_eval (arr[2] == a); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[3] == b); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[4]); /* { dg-warning "UNKNOWN" "unknown" } */
  /* { dg-warning "use of uninitialized value 'arr\\\[4\\\]'" "uninit" { target *-*-* } .-1 } */

  /* Replace one concrete binding's value with a different value.  */
  arr[3] = c;  /* (3) */
  __analyzer_eval (arr[2] == a); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[3] == c); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[3] == b); /* { dg-warning "UNKNOWN" } */
  __analyzer_eval (arr[4]); /* { dg-warning "UNKNOWN" "unknown" } */
  /* { dg-warning "use of uninitialized value 'arr\\\[4\\\]'" "uninit" { target *-*-* } .-1 } */

  /* Symbolic binding.  */
  arr[i] = d;  /* (4) */
  __analyzer_eval (arr[i] == d); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[2] == a); /* { dg-warning "UNKNOWN" } */
  __analyzer_eval (arr[3] == c); /* { dg-warning "UNKNOWN" } */
  __analyzer_eval (arr[4]); /* { dg-warning "UNKNOWN" } */ /* Don't report uninit. */

  /* Replace symbolic binding with a different one.  */
  arr[j] = e;  /* (5) */
  __analyzer_eval (arr[j] == e); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[i] == d); /* { dg-warning "UNKNOWN" } */
  __analyzer_eval (arr[4]); /* { dg-warning "UNKNOWN" } */ /* Don't report uninit. */

  /* Add a concrete binding.  */
  arr[3] = f;  /* (6) */
  __analyzer_eval (arr[3] == f); /* { dg-warning "TRUE" } */
  __analyzer_eval (arr[j] == e); /* { dg-warning "UNKNOWN" } */
  __analyzer_eval (arr[4]); /* { dg-warning "UNKNOWN" } */ /* Don't report uninit. */
}

// TODO: as above, but with int rather than char so there's a cast
