blob: 26d9d1df93a38be5ed6bf1c067eb6284d94d4bb4 [file] [log] [blame]
#include "../../gcc.dg/analyzer/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 = (struct st_1 *) 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 = (struct st_1 *) 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 = (struct st_1 *) 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 = (struct st_2 *) 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 = (struct st_2 *) 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" } */
}