Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/ctrl-flow/labelledExit.cfa

    rbada452 rd96f7c4  
    1 //
     1// 
    22// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
    33//
    44// The contents of this file are covered under the licence agreement in the
    55// file "LICENCE" distributed with Cforall.
    6 //
    7 // labelledExit.cfa --
    8 //
     6// 
     7// labelledExit.cfa -- 
     8// 
    99// Author           : Peter A. Buhr
    1010// Created On       : Wed Aug 10 07:29:39 2016
     
    1212// Last Modified On : Fri Jan 17 14:18:15 2025
    1313// Update Count     : 14
    14 //
     14// 
    1515
    1616int foo() {
    17         int i = 0;
    18         int x = 0, y = 0;
     17        int i;
     18        int x, y;
    1919
    20         // block, labelled exits
     20        x = 0; y = 0;
     21
     22        // block, labelled exits
    2123
    2224  Block: {
    23                 if ( x == y ) {
    24                         for ( ; i < y; ) {
    25                                 y += 1;
    26                                 if ( y < 10 ) break Block;
    27                         }
    28                 }
    29         }
     25                if ( x == y ) {
     26                        for ( ; i < y; ) {
     27                                y += 1;
     28                                if ( y < 10 ) break Block;
     29                        }
     30                }
     31        }
    3032
    31         // loops, labelled exits
     33        // loops, labelled exits
    3234
    33   w1: while ( y == 10 ) break w1;
     35  w1: while ( y == 10 );
    3436
    3537  w2: while ( x < 10 ) {
    36                 while (y < 5 ) {
    37                         if ( y == 3 ) break w2;
    38                 }
    39                 x += 1;
    40         }
     38                while (y < 5 ) {
     39                        if ( y == 3 ) break w2;
     40                }
     41                x += 1;
     42        }
    4143
    4244  A: for ( i = 0; i < 10; i += 1 ) {
    43           B: for ( i = 0; i < 10; i += 1 ) {
    44                   C: for ( i = 0; i < 10; i += 1 ) {
    45                                 goto A;
    46                                 goto B;
    47                                 goto C;
    48                                 continue A;
    49                                 continue B;
    50                                 continue C;
    51                                 continue;
    52                                 break A;
    53                                 break B;
    54                                 break C;
    55                                 break;
    56                         }
    57                 }
    58         }
     45          B: for ( i = 0; i < 10; i += 1 ) {
     46                  C: for ( i = 0; i < 10; i += 1 ) {
     47                                goto A;
     48                                goto B;
     49                                goto C;
     50                                continue A;
     51                                continue B;
     52                                continue C;
     53                                continue;
     54                                break A;
     55                                break B;
     56                                break C;
     57                                break;
     58                        }
     59                }
     60        }
    5961
    6062  D: for () {
    61                 break D;
    62                 continue D;
    63         }
     63                break D;
     64                continue D;
     65        }
    6466
    6567  Z : i += 1;
    66         goto Z;
     68        goto Z;
    6769  X: Y: for () {
    68                 i += 1;
    69                 if ( i > 5 ) continue X;
    70                 if ( i < 5 ) break X;
    71                 if ( i < 5 ) break Y;
    72                 break;
    73         }
     70                i += 1;
     71                if ( i > 5 ) continue X;
     72                if ( i < 5 ) break X;
     73                if ( i < 5 ) break Y;
     74                break;
     75        }
    7476  XX: for () {
    75           YY: for () {
    76                   ZZ: for () {
    77                                 i += 1;
    78                                 if ( i > 5 ) continue XX;
    79                                 if ( i < 5 ) continue YY;
    80                                 if ( i < 5 ) continue ZZ;
    81                                 if ( i > 5 ) break XX;
    82                                 if ( i < 5 ) break YY;
    83                                 if ( i < 5 ) break ZZ;
    84                                 break;
    85                         }
    86                 }
    87         }
     77          YY: for () {
     78                  ZZ: for () {
     79                                i += 1;
     80                                if ( i > 5 ) continue XX;
     81                                if ( i < 5 ) continue YY;
     82                                if ( i < 5 ) continue ZZ;
     83                                if ( i > 5 ) break XX;
     84                                if ( i < 5 ) break YY;
     85                                if ( i < 5 ) break ZZ;
     86                                break;
     87                        }
     88                }
     89        }
    8890
    89         for () ;
    90         for ( int i = 0 ;; ) ++i;
    91         for (  ; i < 0; ) ;
    92         for (  ; ; i += 1 ) ;
     91        for () ;
     92        for ( int i = 0 ;; ) ;
     93        for (  ; i < 0; ) ;
     94        for (  ; ; i += 1 ) ;
    9395  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
    9496  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
    9597  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
    9698  L31: L32: L33: L34:
    97         for () {
    98                 break L0;
    99                 break L1;  break L2;  break L3;  break L4;  break L5;  break L6;
    100                 break L7;  break L8;  break L9;  break L10; break L11; break L12;
    101                 break L13; break L14; break L15; break L16; break L17; break L18;
    102                 break L19; break L20; break L21; break L22; break L23; break L24;
    103                 break L25; break L26; break L27; break L28; break L29; break L31;
    104                 break L32; break L33; break L34;
    105         }
     99        for () {
     100                break L0;
     101        }
    106102
    107         // switch/choose, labelled exits
     103        // switch/choose, labelled exits
    108104
    109105  Switch: switch ( i ) {
    110           default:
    111                 i += 1;
    112                 fallthrough;
    113           case 0:
    114                 i += 1;
    115                 break Switch;
    116           case 1:
    117                 switch ( i ) {
    118                   case 0:
    119                         break Switch;
    120                   default:
    121                         ; break;
    122                 }
    123         }
     106          default:
     107                i += 1;
     108          case 0:
     109                i += 1;
     110                break Switch;
     111          case 1:
     112                switch ( i ) {
     113                  case 0:
     114                        break Switch;
     115                  default:
     116                        ; break;
     117                }
     118        }
    124119
    125120  Choose: choose ( i ) {
    126           default:
    127                 i += 1;
    128           case 0:
    129                 i += 1;
    130                 break Choose;
    131           case 1:
    132                 choose ( i ) {
    133                   case 0:
    134                         break;
    135                   default:
    136                         break Choose;
    137                 }
    138                 fallthrough;
    139           case 2:
    140                 i += 1;
    141         }
     121          default:
     122                i += 1;
     123          case 0:
     124                i += 1;
     125                break Choose;
     126          case 1:
     127                choose ( i ) {
     128                  case 0:
     129                        break;
     130                  default:
     131                        break Choose;
     132                }
     133                fallthrough;
     134          case 2:
     135                i += 1;
     136        }
    142137
    143         // all nested control options, labelled exits
     138        // all nested control options, labelled exits
    144139
    145140  Comp: {
     
    153148                                                                break Try;
    154149                                                                break Comp;
    155                                                                 break For;              continue For;
    156                                                                 break While;    continue While;
    157                                                                 break Do;               continue Do;
    158                                                                 break If;
    159                                                                 break Switch2;
     150                                                                break For;              continue For;
     151                                                                break While;    continue While;
     152                                                                break Do;               continue Do;
     153                                                                break If;
     154                                                                break Switch2;
    160155                                                        } // switch
    161156                                                } // if
     
    183178}
    184179
    185 int main() {
     180int main( int argc, char const *argv[] ) {
    186181        printf("done\n");
    187182}
Note: See TracChangeset for help on using the changeset viewer.