(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
paths-4.c
       1  #include "analyzer-decls.h"
       2  
       3  struct state
       4  {
       5    int mode;
       6    int data;
       7  };
       8  
       9  extern void do_stuff (struct state *, int);
      10  
      11  int test_1 (struct state *s)
      12  {
      13    __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      14    while (1)
      15      {
      16        __analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
      17        __analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
      18        /* TODO: why does the above need an extra stmt to merge state?  */
      19        do_stuff (s, s->mode);
      20      }
      21  }
      22  
      23  int test_2 (struct state *s)
      24  {
      25    __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      26    while (1)
      27      {
      28        __analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
      29        __analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
      30        /* TODO: why does the above need an extra stmt to merge state?  */
      31        switch (s->mode)
      32  	{
      33  	case 0:
      34  	  __analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enode" } */
      35  	  do_stuff (s, 0);
      36  	  break;
      37  	case 1:
      38  	  __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      39  	  do_stuff (s, 17);
      40  	  break;
      41  	case 2:
      42  	  __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      43  	  do_stuff (s, 5);
      44  	  break;
      45  	case 3:
      46  	  __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      47  	  return 42;
      48  	case 4:
      49  	  __analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
      50  	  return -3;
      51  	}
      52      }
      53  }