(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
Wswitch-unreachable-1.c
       1  /* PR c/49859 */
       2  /* { dg-do compile } */
       3  
       4  extern void foo (int);
       5  extern int j;
       6  
       7  void
       8  fn0 (int i)
       9  {
      10    switch (i)
      11      {
      12      int k;
      13      case 1:
      14        k = 11;
      15        foo (k);
      16      }
      17  
      18    switch (i)
      19      j = 10; /* { dg-warning "statement will never be executed" } */
      20  
      21    switch (i)
      22      ;
      23  
      24    switch (i)
      25      {
      26      j = 12; /* { dg-warning "statement will never be executed" } */
      27      default:
      28        foo (j);
      29      }
      30  
      31    int o;
      32    switch (i)
      33      {
      34      o = 333; /* { dg-warning "statement will never be executed" } */
      35      case 4: break;
      36      default:
      37        foo (o);
      38      }
      39  
      40    switch (i)
      41      switch (j) /* { dg-warning "statement will never be executed" } */
      42        {
      43        o = 42; /* { dg-warning "statement will never be executed" } */
      44        case 8:;
      45        }
      46  
      47    switch (i)
      48      {
      49        int l = 3; /* { dg-warning "statement will never be executed" } */
      50        o = 5;
      51        j = 7;
      52        ++l;
      53      }
      54  
      55    switch (i)
      56      {
      57        int x;
      58        int l = 3; /* { dg-warning "statement will never be executed" } */
      59        ++l, ++x;
      60      }
      61  
      62    switch (i)
      63      if (j != 3) /* { dg-warning "statement will never be executed" } */
      64        foo (j);
      65  
      66    switch (i)
      67      while (1)
      68       foo (0);
      69  
      70    switch (i)
      71      while (i > 5) { }
      72  
      73    switch (i)
      74      goto X; /* { dg-warning "statement will never be executed" } */
      75  X:
      76  
      77    switch (i)
      78      do
      79        foo (1);
      80      while (1);
      81  
      82    switch (i)
      83      for (;;)
      84        foo (-1);
      85  
      86    switch (i)
      87      default:
      88        j = 6;
      89  
      90    switch (i)
      91      {
      92      typedef int T;
      93      case 3:
      94        {
      95  	T x = 5;
      96  	foo (x);
      97        }
      98      }
      99  
     100    switch (i)
     101      {
     102        static int g;
     103        default:
     104  	foo (g);
     105      }
     106  
     107    switch (i)
     108      {
     109  L:
     110        j = 16;
     111        default:
     112  	if (j < 5)
     113  	  goto L;
     114  	break;
     115      }
     116  }