(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
torture/
conditionals-2.c
       1  /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
       2  
       3  #include "../analyzer-decls.h"
       4  
       5  #define Z_NULL 0
       6  
       7  static void __attribute__((noinline))
       8  __analyzer_test_1_callee (void *p, void *q)
       9  {
      10    __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      11  
      12    __analyzer_eval (p == Z_NULL); /* { dg-warning "FALSE" } */
      13    __analyzer_eval (p != Z_NULL); /* { dg-warning "TRUE" } */
      14  
      15    __analyzer_eval (q == Z_NULL); /* { dg-warning "FALSE" } */ 
      16    __analyzer_eval (q != Z_NULL); /* { dg-warning "TRUE" } */ 
      17  }
      18  
      19  void test_1 (void *p, void *q)
      20  {
      21    if (p == Z_NULL || q == Z_NULL)
      22      return;
      23  
      24    __analyzer_test_1_callee (p, q);
      25  }
      26  
      27  static void __attribute__((noinline))
      28  __analyzer_test_2_callee (void *p, void *q)
      29  {
      30    __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      31  
      32    __analyzer_eval (p == Z_NULL); /* { dg-warning "FALSE" } */
      33    __analyzer_eval (p != Z_NULL); /* { dg-warning "TRUE" } */
      34  
      35    __analyzer_eval (q == Z_NULL); /* { dg-warning "FALSE" } */ 
      36    __analyzer_eval (q != Z_NULL); /* { dg-warning "TRUE" } */ 
      37  }
      38  
      39  void test_2 (void *p, void *q)
      40  {
      41    if (p != Z_NULL && q != Z_NULL)
      42      __analyzer_test_2_callee (p, q);
      43  }