Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Tests/LabelledExit.c

    r2871210 rb1d6dd5  
    11int main() {
    2         int i;
    3         int x, y;
     2    int i;
     3    int x, y;
    44
    5         x = 0; y = 0;
     5    x = 0; y = 0;
    66
    7         // block, labelled exits
     7// block, labelled exits
    88
    99  Block: {
    10                 if ( x == y ) {
    11                         for ( ; i < y; ) {
    12                                 y += 1;
    13                                 if ( y < 10 ) break Block;
    14                         }
    15                 }
    16         }
     10        if ( x == y ) {
     11            for ( ; i < y; ) {
     12                y += 1;
     13                if ( y < 10 ) break Block;
     14            }
     15        }
     16    }
    1717
    18         // loops, labelled exits
     18// loops, labelled exits
    1919
    2020  w1: while ( y == 10 );
    2121
    2222  w2: while ( x < 10 ) {
    23                 while (y < 5 ) {
    24                         if ( y == 3 ) break w2;
    25                 }
    26                 x += 1;
    27         }
     23      while (y < 5 ) {
     24          if ( y == 3 ) break w2;
     25      }
     26      x += 1;
     27  }
    2828
    2929  A: for ( i = 0; i < 10; i += 1 ) {
    30           B: for ( i = 0; i < 10; i += 1 ) {
    31                   C: for ( i = 0; i < 10; i += 1 ) {
    32                                 goto A;
    33                                 goto B;
    34                                 goto C;
    35                                 continue A;
    36                                 continue B;
    37                                 continue C;
    38                                 continue;
    39                                 break A;
    40                                 break B;
    41                                 break C;
    42                                 break;
    43                         }
    44                 }
    45         }
     30    B: for ( i = 0; i < 10; i += 1 ) {
     31      C: for ( i = 0; i < 10; i += 1 ) {
     32          goto A;
     33          goto B;
     34          goto C;
     35          continue A;
     36          continue B;
     37          continue C;
     38          continue;
     39          break A;
     40          break B;
     41          break C;
     42          break;
     43      }
     44    }
     45  }
    4646
    4747  D: for ( ;; ) {
    48                 break D;
    49                 continue D;
    50         }
     48      break D;
     49      continue D;
     50  }
    5151
    52   Z : i += 1;
    53         goto Z;
     52    Z : i += 1;
     53    goto Z;
    5454  X: Y: for ( ;; ) {
    55                 i += 1;
    56                 if ( i > 5 ) continue X;
    57                 if ( i < 5 ) break X;
    58                 if ( i < 5 ) break Y;
    59                 break;
    60         }
     55      i += 1;
     56      if ( i > 5 ) continue X;
     57      if ( i < 5 ) break X;
     58      if ( i < 5 ) break Y;
     59      break;
     60  }
    6161  XX: for ( ;; ) {
    62           YY: for ( ;; ) {
    63                   ZZ: for ( ;; ) {
    64                                 i += 1;
    65                                 if ( i > 5 ) continue XX;
    66                                 if ( i < 5 ) continue YY;
    67                                 if ( i < 5 ) continue ZZ;
    68                                 if ( i > 5 ) break XX;
    69                                 if ( i < 5 ) break YY;
    70                                 if ( i < 5 ) break ZZ;
    71                                 break;
    72                         }
    73                 }
    74         }
     62    YY: for ( ;; ) {
     63      ZZ: for ( ;; ) {
     64          i += 1;
     65          if ( i > 5 ) continue XX;
     66          if ( i < 5 ) continue YY;
     67          if ( i < 5 ) continue ZZ;
     68          if ( i > 5 ) break XX;
     69          if ( i < 5 ) break YY;
     70          if ( i < 5 ) break ZZ;
     71          break;
     72      }
     73    }
     74  }
    7575
    76         for ( ;; ) ;
    77         for ( int i = 0 ;; ) ;
    78         for (  ; i < 0; ) ;
    79         for (  ; ; i += 1 ) ;
     76    for ( ;; ) ;
     77    for ( int i = 0 ;; ) ;
     78    for (  ; i < 0; ) ;
     79    for (  ; ; i += 1 ) ;
    8080  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
    8181  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
    8282  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
    8383  L31: L32: L33: L34:
    84         for ( ;; ) {
    85                 break L0;
    86         }
     84    for ( ;; ) {
     85        break L0;
     86    }
    8787
    88         // switch/choose, labelled exits
     88// switch/choose, labelled exits
    8989
    9090  Switch: switch ( i ) {
    91           default:
    92                 i += 1;
    93           case 0:
    94                 i += 1;
    95                 break Switch;
    96           case 1:
    97                 switch ( i ) {
    98                   case 0:
    99                         break Switch;
    100                   default:
    101                         ; break;
    102                 }
    103         }
     91    default:
     92      i += 1;
     93    case 0:
     94      i += 1;
     95      break Switch;
     96    case 1:
     97      switch ( i ) {
     98        case 0:
     99          break Switch;
     100        default:
     101          break;
     102      }
     103  }
    104104
    105105  Choose: choose ( i ) {
    106           default:
    107                 i += 1;
    108           case 0:
    109                 i += 1;
    110                 break Choose;
    111           case 1:
    112                 choose ( i ) {
    113                   case 0:
    114                         break;
    115                   default:
    116                         break Choose;
    117                 }
    118                 fallthru;
    119           case 2:
    120                 i += 1;
    121         }
     106    default:
     107      i += 1;
     108    case 0:
     109      i += 1;
     110      break Choose;
     111    case 1:
     112      choose ( i ) {
     113        case 0:
     114          break;
     115        default:
     116          break Choose;
     117      }
     118      fallthru;
     119    case 2:
     120      i += 1;
     121  }
     122#if 0
     123// computed goto
    122124
    123         // computed goto
    124         {
    125                 void *array[] = { &&foo, &&bar, &&hack };
    126           foo: bar: hack:
    127                 &&foo;
    128                 &&bar;
    129                 goto *array[i];
    130         }
     125    {
     126        static void *array[] = { &&foo, &&bar, &&hack };
    131127
     128      foo: bar: hack:
     129        goto *array[i];
     130    }
     131#endif
    132132#if 0
    133133  Q: if ( i > 5 ) {
    134                 i += 1;
    135                 break Q;
    136         } else
    137                 i += 1;
     134      i += 1;
     135      break Q;
     136  } else
     137      i += 1;
    138138#endif
    139139}
    140 
    141 // Local Variables: //
    142 // tab-width: 4 //
    143 // compile-command: "cfa LabelledExit.c" //
    144 // End: //
Note: See TracChangeset for help on using the changeset viewer.