(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
data-model-23.c
       1  #include "analyzer-decls.h"
       2  
       3  #define NULL ((void *)0)
       4  
       5  void * __attribute__((noinline))
       6  hide (void *ptr)
       7  {
       8    return ptr;
       9  }
      10  
      11  void test_1 (void)
      12  {
      13    int a;
      14    __analyzer_eval (hide (&a) == NULL); /* { dg-warning "FALSE" } */
      15    __analyzer_eval (hide (&a) + 1 != NULL); /* { dg-warning "TRUE" } */
      16    __analyzer_eval (hide (&a) + 1 == NULL); /* { dg-warning "FALSE" } */
      17    __analyzer_eval (hide (&a) - 1 != NULL); /* { dg-warning "TRUE" } */
      18    __analyzer_eval (hide (&a) - 1 == NULL); /* { dg-warning "FALSE" } */
      19  }
      20  
      21  void test_2 (void)
      22  {
      23    __analyzer_eval (hide (NULL) == NULL); /* { dg-warning "TRUE" } */
      24    __analyzer_eval (hide (NULL) - 1 == NULL); /* { dg-warning "FALSE" } */
      25    __analyzer_eval (hide (NULL) + 1 == NULL); /* { dg-warning "FALSE" } */
      26  }
      27  
      28  void test_3 (void *p)
      29  {
      30    if (!p)
      31      return;
      32    __analyzer_eval (hide (p) == NULL); /* { dg-warning "FALSE" } */
      33    __analyzer_eval (hide (p) + 1 != NULL); /* { dg-warning "TRUE" } */
      34    __analyzer_eval (hide (p) + 1 == NULL); /* { dg-warning "FALSE" } */
      35    __analyzer_eval (hide (p) - 1 != NULL); /* { dg-warning "TRUE" } */
      36    __analyzer_eval (hide (p) - 1 == NULL); /* { dg-warning "FALSE" } */
      37  }