aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/data-model-23.c
blob: d10dd057d965444fb7d70a0e264a129a76b4a865 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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" } */
}