Changeset 2871210 for src/Tests


Ignore:
Timestamp:
Jul 3, 2015, 6:08:20 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
f6d7e0f
Parents:
0df292b
Message:

include file with keywords, fix type of label address expressions, fix computed goto to any expressions, generic types first attempt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Tests/LabelledExit.c

    r0df292b r2871210  
    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   }
    122 #if 0
    123 // computed goto
     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        }
    124122
    125     {
    126         static void *array[] = { &&foo, &&bar, &&hack };
     123        // computed goto
     124        {
     125                void *array[] = { &&foo, &&bar, &&hack };
     126          foo: bar: hack:
     127                &&foo;
     128                &&bar;
     129                goto *array[i];
     130        }
    127131
    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.