blob: d10dd057d965444fb7d70a0e264a129a76b4a865 [file] [log] [blame]
#include "analyzer-decls.h"
#define NULL ((void *)0)
void * __attribute__((noinline))
hide (void *ptr)
{
return ptr;
}
void test_1 (void)
{
int a;
__analyzer_eval (hide (&a) == NULL); /* { dg-warning "FALSE" } */
__analyzer_eval (hide (&a) + 1 != NULL); /* { dg-warning "TRUE" } */
__analyzer_eval (hide (&a) + 1 == NULL); /* { dg-warning "FALSE" } */
__analyzer_eval (hide (&a) - 1 != NULL); /* { dg-warning "TRUE" } */
__analyzer_eval (hide (&a) - 1 == NULL); /* { dg-warning "FALSE" } */
}
void test_2 (void)
{
__analyzer_eval (hide (NULL) == NULL); /* { dg-warning "TRUE" } */
__analyzer_eval (hide (NULL) - 1 == NULL); /* { dg-warning "FALSE" } */
__analyzer_eval (hide (NULL) + 1 == NULL); /* { dg-warning "FALSE" } */
}
void test_3 (void *p)
{
if (!p)
return;
__analyzer_eval (hide (p) == NULL); /* { dg-warning "FALSE" } */
__analyzer_eval (hide (p) + 1 != NULL); /* { dg-warning "TRUE" } */
__analyzer_eval (hide (p) + 1 == NULL); /* { dg-warning "FALSE" } */
__analyzer_eval (hide (p) - 1 != NULL); /* { dg-warning "TRUE" } */
__analyzer_eval (hide (p) - 1 == NULL); /* { dg-warning "FALSE" } */
}