blob: 38ceeffbe371fe96caf08559ff25e2ad49dadfee [file] [log] [blame]
#include "analyzer-decls.h"
extern void escape (int *p);
int a;
void test (int *p, int x)
{
int y;
a = 17;
x = 42;
y = 13;
__analyzer_eval (a == 17); /* { dg-warning "TRUE" } */
__analyzer_eval (x == 42); /* { dg-warning "TRUE" } */
__analyzer_eval (y == 13); /* { dg-warning "TRUE" } */
escape (&x);
__analyzer_eval (a == 17); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (x == 42); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (y == 13); /* { dg-warning "TRUE" } */
__analyzer_eval (p == &a); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (p == &x); /* { dg-warning "FALSE" } */
__analyzer_eval (p == &y); /* { dg-warning "FALSE" } */
*p = 73;
__analyzer_eval (a == 17); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (x == 42); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (y == 13); /* { dg-warning "TRUE" } */
}