1  /* PR c/7652 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-Wimplicit-fallthrough" } */
       4  
       5  extern void grace (int);
       6  
       7  void
       8  fn1 (int i)
       9  {
      10    switch (i)
      11      case 1:
      12      if (i == 5)
      13        grace (0);
      14      else
      15        goto done;
      16  done:;
      17  }
      18  
      19  void
      20  fn2 (int i)
      21  {
      22    switch (i)
      23      {
      24      case 1:
      25        if (i == 5) /* { dg-warning "statement may fall through" } */
      26  	grace (0);
      27        else
      28  	goto done;
      29      case 2:
      30        --i;
      31      }
      32  done:;
      33  }
      34  
      35  void
      36  fn3 (int i)
      37  {
      38    switch (i)
      39      {
      40      case 1:
      41      if (i == 5)
      42        goto done;
      43      else
      44        goto done;
      45      }
      46  done:;
      47  }
      48  
      49  void
      50  fn4 (int i)
      51  {
      52    switch (i)
      53      {
      54      case 1:
      55        if (i == 5)
      56  	{
      57  	  grace (1);
      58  	  goto done;
      59  	}
      60        else
      61  	goto done;
      62      case 2:;
      63      }
      64  done:;
      65  }
      66  
      67  void
      68  fn5 (int i)
      69  {
      70    switch (i)
      71      {
      72      case 1:
      73        if (i == 5)
      74  	{
      75  	  grace (1);
      76  	  goto done;
      77  	}
      78        else
      79  	grace (4); /* { dg-warning "statement may fall through" } */
      80      case 2:
      81        grace (9);
      82      }
      83  done:;
      84  }
      85  
      86  void
      87  fn6 (int i)
      88  {
      89    switch (i)
      90      {
      91      case 1:
      92        if (i == 5) /* { dg-warning "statement may fall through" } */
      93  	{
      94  	  grace (1);
      95  	  goto done;
      96  	}
      97      case 2:
      98        grace (8);
      99      }
     100  done:;
     101  }