| #define NULL ((void*)0) |
| |
| #define MY_ASSERT(COND) \ |
| do { \ |
| if (!(COND)) { __builtin_abort(); } \ |
| } while (0) |
| |
| int test_1 (int *p) |
| { |
| int result = *p; |
| MY_ASSERT (p); /* { dg-warning "check of 'p' for NULL after already dereferencing it" "" { xfail *-*-* } } */ |
| /* Due to lack of locations for gimple arguments we can't get |
| at the location of the condition separately from the |
| gimple_cond stmt, and thus can't distinguish if it's in the |
| macro definition or in the supplied params; we defer to |
| rejecting the diagnostic. */ |
| return result; |
| } |
| |
| int test_2 (int *p) |
| { |
| int result = *p; |
| MY_ASSERT (p != NULL); /* { dg-warning "check of 'p' for NULL after already dereferencing it" "" { xfail *-*-* } } */ |
| return result; |
| } |