(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
uninit-8.c
       1  struct st
       2  {
       3    int a, b, c, d, e;
       4  };
       5  
       6  int
       7  test_1 (int flag, struct st *p)
       8  {
       9    struct st *q;
      10    int result = 0;
      11    if (flag)
      12      q = p;
      13    /* We should only warn about the first use of uninit for 'q':  */
      14    result += q->a; /* { dg-warning "use of uninitialized value 'q'" } */
      15    /* ...and not for these:  */
      16    result += q->b; /* { dg-bogus "use of uninitialized value 'q'" } */
      17    result += q->c; /* { dg-bogus "use of uninitialized value 'q'" } */
      18    result += q->d; /* { dg-bogus "use of uninitialized value 'q'" } */
      19    result += q->e; /* { dg-bogus "use of uninitialized value 'q'" } */
      20    return result;
      21  }
      22  
      23  int
      24  test_2 (int flag, struct st *p, struct st *r)
      25  {
      26    struct st *q;
      27    int result = 0;
      28    if (flag)
      29      q = p;
      30    /* We should only warn about the first use of uninit for 'q':  */
      31    if (q == r) /* { dg-warning "use of uninitialized value 'q'" } */
      32      result += 1;
      33    /* ...and not for these, after a conditional:  */
      34    result += q->b; /* { dg-bogus "use of uninitialized value 'q'" } */
      35    result += q->c; /* { dg-bogus "use of uninitialized value 'q'" } */
      36    result += q->d; /* { dg-bogus "use of uninitialized value 'q'" } */
      37    result += q->e; /* { dg-bogus "use of uninitialized value 'q'" } */
      38    return result;
      39  }
      40  
      41  int
      42  test_3 (int flag, int val)
      43  {
      44    int result = 0;
      45    int idx;
      46    if (flag)
      47      idx = val;
      48    switch (idx) /* { dg-warning "use of uninitialized value 'idx'" } */
      49      {
      50      case 0:
      51        result = 3;
      52        break;
      53      case 1:
      54        result = 4;
      55        break;
      56      default:
      57        result = 5;
      58        break;      
      59      }
      60    switch (idx) /* { dg-bogus "use of uninitialized value 'idx'" } */
      61      {
      62      case 0:
      63        result += 3;
      64        break;
      65      case 1:
      66        result += 4;
      67        break;
      68      default:
      69        result += 5;
      70        break;
      71      }
      72    return result;
      73  }