(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
pattern-test-1.c
       1  /* { dg-additional-options "-fanalyzer-checker=pattern-test" } */
       2  
       3  #include <stdlib.h>
       4  
       5  extern void foo(void *);
       6  extern void bar(void *);
       7  
       8  void test1(void *ptr)
       9  {
      10    if (ptr) { /* { dg-warning "pattern match on 'ptr != 0'" "ptr != 0" } */
      11    /* { dg-warning "pattern match on 'ptr == 0'" "ptr == 0" { target *-*-* } .-1 } */
      12      foo(ptr);
      13    } else {
      14      bar(ptr);
      15    }
      16  }
      17  
      18  void test_2 (void *p, void *q)
      19  {
      20    if (p == NULL || q == NULL) /* { dg-line cond_2 }  */
      21      return;
      22    foo(p);
      23  
      24    /* { dg-warning "pattern match on 'p == 0'" "p == 0" { target *-*-* } cond_2 } */
      25    /* { dg-warning "pattern match on 'q == 0'" "q == 0" { target *-*-* } cond_2 } */
      26    /* { dg-warning "pattern match on 'p != 0'" "p != 0" { target *-*-* } cond_2 } */
      27    /* { dg-warning "pattern match on 'q != 0'" "q != 0" { target *-*-* } cond_2 } */
      28  }