1  /* { dg-do compile } */
       2  /* { dg-options "-Wimplicit-fallthrough" } */
       3  
       4  void bar (int);
       5  
       6  void
       7  foo (int i)
       8  {
       9    switch (i)
      10      {
      11      case 1:
      12        bar (1);			/* { dg-bogus "this statement may \[laf]* through" } */
      13        /* FALLTHROUGH */
      14      case 2:
      15        bar (2);
      16        break;
      17      case 3:
      18        bar (3);			/* { dg-bogus "this statement may \[laf]* through" } */
      19        /* FALLS THRU.  */
      20        /* Some other comment.  */
      21      case 4:
      22        bar (4);
      23        break;
      24      case 5:
      25        bar (5);			/* { dg-bogus "this statement may \[laf]* through" } */
      26        /* Else Fall-Thru!  */
      27      case 6:
      28        bar (6);
      29        break;
      30      case 7:
      31        bar (7);			/* { dg-bogus "this statement may \[laf]* through" } */
      32        /* Some comment.  */
      33        /* ... fallthrough ...  */
      34        /* Some other comment.  */
      35        /* And yet another.  */
      36      case 8:
      37        bar (8);
      38        break;
      39      case 9:
      40        bar (9);			/* { dg-bogus "this statement may \[laf]* through" } */
      41        /* Intentional Fallthru */
      42      case 10:
      43        bar (10);
      44        break;
      45      case 11:
      46        bar (11);			/* { dg-bogus "this statement may \[laf]* through" } */
      47        /* intentionally fall through  */
      48      case 12:
      49        bar (12);
      50        break;
      51      case 13:
      52        bar (13);			/* { dg-bogus "this statement may \[laf]* through" } */
      53        /* Falls Through - for reasons known only to the author.  */
      54      case 14:
      55        bar (14);
      56        break;
      57      case 15:
      58        bar (15);			/* { dg-bogus "this statement may \[laf]* through" } */
      59        /*-fallthrough*/
      60      case 16:
      61        bar (16);
      62        break;
      63      case 17:
      64        bar (17);			/* { dg-bogus "this statement may \[laf]* through" } */
      65        /*@fallthrough@*/
      66      case 18:
      67        bar (18);
      68        break;
      69      case 19:
      70        bar (19);			/* { dg-bogus "this statement may \[laf]* through" } */
      71        /*lint -fallthrough*/
      72      case 20:
      73        bar (20);
      74        break;
      75      case 21:
      76        bar (21);			/* { dg-bogus "this statement may \[laf]* through" } */
      77        /*lint -fallthrough */
      78      case 22:
      79        bar (22);
      80        break;
      81      case 23:
      82        bar (23);			/* { dg-bogus "this statement may \[laf]* through" } */
      83        /*fallthru*/
      84      case 24:
      85        bar (24);
      86        break;
      87      case 25:
      88        bar (25);			/* { dg-bogus "this statement may \[laf]* through" } */
      89        /*Else fallthru*/
      90      case 26:
      91        bar (26);
      92        break;
      93      case 27:
      94        bar (27);			/* { dg-bogus "this statement may \[laf]* through" } */
      95        /*Intentional fallthru*/
      96      case 28:
      97        bar (28);
      98        break;
      99      case 29:
     100        bar (29);			/* { dg-bogus "this statement may \[laf]* through" } */
     101        /*Intentionally fallthru*/
     102      case 30:
     103        bar (30);
     104        break;
     105      case 31:
     106        bar (31);			/* { dg-bogus "this statement may \[laf]* through" } */
     107        /*Falls thru*/
     108      case 32:
     109        bar (32);
     110        break;
     111      case 33:
     112        bar (33);			/* { dg-bogus "this statement may \[laf]* through" } */
     113        /*Fall-through*/
     114      case 34:
     115        bar (34);
     116        break;
     117      case 35:
     118        bar (35);			/* { dg-bogus "this statement may \[laf]* through" } */
     119        /* Else, fall-through. */
     120      case 36:
     121        bar (36);
     122        break;
     123      default:
     124        break;
     125      }
     126    switch (i)
     127      {
     128      case 1:
     129        bar (1);			/* { dg-bogus "this statement may \[laf]* through" } */
     130        // FALLTHROUGH
     131      case 2:
     132        bar (2);
     133        break;
     134      case 3:
     135        bar (3);			/* { dg-bogus "this statement may \[laf]* through" } */
     136        // FALLS THRU.  
     137        // Some other comment.
     138      case 4:
     139        bar (4);
     140        break;
     141      case 5:
     142        bar (5);			/* { dg-bogus "this statement may \[laf]* through" } */
     143        // Else Fall-Thru!
     144      case 6:
     145        bar (6);
     146        break;
     147      case 7:
     148        bar (7);			/* { dg-bogus "this statement may \[laf]* through" } */
     149        // Some comment.
     150        // ... fallthrough ...
     151        // Some other comment.
     152        // And yet another.
     153      case 8:
     154        bar (8);
     155        break;
     156      case 9:
     157        bar (9);			/* { dg-bogus "this statement may \[laf]* through" } */
     158        // Intentional Fallthru
     159      case 10:
     160        bar (10);
     161        break;
     162      case 11:
     163        bar (11);			/* { dg-bogus "this statement may \[laf]* through" } */
     164        // intentionally fall through 
     165      case 12:
     166        bar (12);
     167        break;
     168      case 13:
     169        bar (13);			/* { dg-bogus "this statement may \[laf]* through" } */
     170        // Falls Through - for reasons known only to the author.
     171      case 14:
     172        bar (14);
     173        break;
     174      case 15:
     175        bar (15);			/* { dg-bogus "this statement may \[laf]* through" } */
     176        //-fallthrough
     177      case 16:
     178        bar (16);
     179        break;
     180      case 17:
     181        bar (17);			/* { dg-bogus "this statement may \[laf]* through" } */
     182        //@fallthrough@
     183      case 18:
     184        bar (18);
     185        break;
     186      case 19:
     187        bar (19);			/* { dg-bogus "this statement may \[laf]* through" } */
     188        //lint -fallthrough
     189      case 20:
     190        bar (20);
     191        break;
     192      case 21:
     193        bar (21);			/* { dg-bogus "this statement may \[laf]* through" } */
     194        //lint -fallthrough 
     195      case 22:
     196        bar (22);
     197        break;
     198      case 23:
     199        bar (23);			/* { dg-bogus "this statement may \[laf]* through" } */
     200        //fallthru
     201      case 24:
     202        bar (24);
     203        break;
     204      case 25:
     205        bar (25);			/* { dg-bogus "this statement may \[laf]* through" } */
     206        //Else fallthru
     207      case 26:
     208        bar (26);
     209        break;
     210      case 27:
     211        bar (27);			/* { dg-bogus "this statement may \[laf]* through" } */
     212        //Intentional fallthru
     213      case 28:
     214        bar (28);
     215        break;
     216      case 29:
     217        bar (29);			/* { dg-bogus "this statement may \[laf]* through" } */
     218        //Intentionally fallthru
     219      case 30:
     220        bar (30);
     221        break;
     222      case 31:
     223        bar (31);			/* { dg-bogus "this statement may \[laf]* through" } */
     224        //Falls thru
     225      case 32:
     226        bar (32);
     227        break;
     228      case 33:
     229        bar (33);			/* { dg-bogus "this statement may \[laf]* through" } */
     230        //Fall-through
     231      case 34:
     232        bar (34);
     233        break;
     234      case 35:
     235        bar (35);			/* { dg-bogus "this statement may \[laf]* through" } */
     236        // Else, fall-through
     237      case 36:
     238        bar (36);
     239        break;
     240      default:
     241        break;
     242      }
     243  }