blob: 665e0b645d393effef5a8f4eca5c1c15bcef213b [file] [log] [blame]
#include "analyzer-decls.h"
extern void maybe_write (int *);
void test_1 (int i)
{
/* An array with purely concrete bindings. */
int arr[2];
arr[0] = 1066;
arr[1] = 1776;
/* Concrete reads. */
__analyzer_eval (arr[0] == 1066); /* { dg-warning "TRUE" } */
__analyzer_eval (arr[1] == 1776); /* { dg-warning "TRUE" } */
/* Symbolic read. */
__analyzer_describe (0, arr[i]); /* { dg-warning "svalue: 'UNKNOWN\\(int\\)'" } */
__analyzer_eval (arr[i] == 1776); /* { dg-warning "UNKNOWN" } */
}
void test_2 (int i)
{
/* An array that could have been touched. */
int arr[2];
maybe_write (arr);
/* Concrete reads. */
__analyzer_eval (arr[0] == 42); /* { dg-warning "UNKNOWN" } */
/* Symbolic read. */
__analyzer_eval (arr[i] == 42); /* { dg-warning "UNKNOWN" } */
}
void test_3 (int i)
{
/* An array that can't have been touched. */
int arr[2];
/* Concrete reads. */
__analyzer_eval (arr[0] == 42); /* { dg-warning "UNKNOWN" "unknown" } */
/* { dg-warning "use of uninitialized value 'arr\\\[0\\\]'" "uninit" { target *-*-* } .-1 } */
/* Symbolic read. */
__analyzer_eval (arr[i] == 42); /* { dg-warning "UNKNOWN" "unknown" } */
/* { dg-warning "use of uninitialized value 'arr\\\[i\\\]'" "uninit" { target *-*-* } .-1 } */
}