blob: d7c50de9f2706ce3569d81781be72fa43b19148a [file] [log] [blame]
#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" } */
}