| #include "analyzer-decls.h" |
| |
| void external_fn(void); |
| |
| struct st_1 |
| { |
| char *name; |
| unsigned size; |
| }; |
| |
| void test_1a (void *p, unsigned next_off) |
| { |
| struct st_1 *r = p; |
| |
| external_fn(); |
| |
| if (next_off >= r->size) |
| return; |
| |
| if (next_off >= r->size) |
| /* We should have already returned if this is the case. */ |
| __analyzer_dump_path (); /* { dg-bogus "path" } */ |
| } |
| |
| void test_1b (void *p, unsigned next_off) |
| { |
| struct st_1 *r = p; |
| |
| if (next_off >= r->size) |
| return; |
| |
| if (next_off >= r->size) |
| /* We should have already returned if this is the case. */ |
| __analyzer_dump_path (); /* { dg-bogus "path" } */ |
| } |
| |
| void test_1c (struct st_1 *r, unsigned next_off) |
| { |
| if (next_off >= r->size) |
| return; |
| |
| if (next_off >= r->size) |
| /* We should have already returned if this is the case. */ |
| __analyzer_dump_path (); /* { dg-bogus "path" } */ |
| } |
| |
| void test_1d (struct st_1 *r, unsigned next_off) |
| { |
| external_fn(); |
| |
| if (next_off >= r->size) |
| return; |
| |
| if (next_off >= r->size) |
| /* We should have already returned if this is the case. */ |
| __analyzer_dump_path (); /* { dg-bogus "path" } */ |
| } |
| |
| void test_1e (void *p, unsigned next_off) |
| { |
| struct st_1 *r = p; |
| |
| while (1) |
| { |
| external_fn(); |
| |
| if (next_off >= r->size) |
| return; |
| |
| __analyzer_dump_path (); /* { dg-message "path" } */ |
| } |
| } |
| |
| struct st_2 |
| { |
| char *name; |
| unsigned arr[10]; |
| }; |
| |
| void test_2a (void *p, unsigned next_off) |
| { |
| struct st_2 *r = p; |
| |
| external_fn(); |
| |
| if (next_off >= r->arr[5]) |
| return; |
| |
| if (next_off >= r->arr[5]) |
| /* We should have already returned if this is the case. */ |
| __analyzer_dump_path (); /* { dg-bogus "path" } */ |
| } |
| |
| void test_2b (void *p, unsigned next_off, int idx) |
| { |
| struct st_2 *r = p; |
| |
| external_fn(); |
| |
| if (next_off >= r->arr[idx]) |
| return; |
| |
| if (next_off >= r->arr[idx]) |
| /* We should have already returned if this is the case. */ |
| __analyzer_dump_path (); /* { dg-bogus "path" } */ |
| } |