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 }