blob: b72e658739e148dea3ec05351b9aecbc8d4a5a55 [file] [log] [blame]
#include "analyzer-decls.h"
struct state
{
int mode;
int data;
};
extern void do_stuff (struct state *, int);
int test_1 (struct state *s)
{
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
while (1)
{
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
/* TODO: why does the above need an extra stmt to merge state? */
do_stuff (s, s->mode);
}
}
int test_2 (struct state *s)
{
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
while (1)
{
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
/* TODO: why does the above need an extra stmt to merge state? */
switch (s->mode)
{
case 0:
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
do_stuff (s, 0);
break;
case 1:
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
do_stuff (s, 17);
break;
case 2:
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
do_stuff (s, 5);
break;
case 3:
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
return 42;
case 4:
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
return -3;
}
}
}