Changeset bada452 for tests/ctrl-flow
- Timestamp:
- Jan 28, 2025, 4:12:53 PM (8 months ago)
- Branches:
- master
- Children:
- c699602
- Parents:
- 71ca5b9
- Location:
- tests/ctrl-flow
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/ctrl-flow/labelledExit.cfa
r71ca5b9 rbada452 1 // 1 // 2 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo 3 3 // 4 4 // The contents of this file are covered under the licence agreement in the 5 5 // file "LICENCE" distributed with Cforall. 6 // 7 // labelledExit.cfa -- 8 // 6 // 7 // labelledExit.cfa -- 8 // 9 9 // Author : Peter A. Buhr 10 10 // Created On : Wed Aug 10 07:29:39 2016 … … 12 12 // Last Modified On : Fri Jan 17 14:18:15 2025 13 13 // Update Count : 14 14 // 14 // 15 15 16 16 int foo() { 17 int i;18 int x, y;17 int i = 0; 18 int x = 0, y = 0; 19 19 20 x = 0; y = 0; 21 22 // block, labelled exits 20 // block, labelled exits 23 21 24 22 Block: { 25 26 27 28 29 30 31 23 if ( x == y ) { 24 for ( ; i < y; ) { 25 y += 1; 26 if ( y < 10 ) break Block; 27 } 28 } 29 } 32 30 33 31 // loops, labelled exits 34 32 35 w1: while ( y == 10 ) ;33 w1: while ( y == 10 ) break w1; 36 34 37 35 w2: while ( x < 10 ) { 38 39 40 41 42 36 while (y < 5 ) { 37 if ( y == 3 ) break w2; 38 } 39 x += 1; 40 } 43 41 44 42 A: for ( i = 0; i < 10; i += 1 ) { 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 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 } 61 59 62 60 D: for () { 63 64 65 61 break D; 62 continue D; 63 } 66 64 67 65 Z : i += 1; 68 66 goto Z; 69 67 X: Y: for () { 70 71 72 73 74 75 68 i += 1; 69 if ( i > 5 ) continue X; 70 if ( i < 5 ) break X; 71 if ( i < 5 ) break Y; 72 break; 73 } 76 74 XX: for () { 77 78 79 80 81 82 83 84 85 86 87 88 89 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 } 90 88 91 92 for ( int i = 0 ;; );93 94 89 for () ; 90 for ( int i = 0 ;; ) ++i; 91 for ( ; i < 0; ) ; 92 for ( ; ; i += 1 ) ; 95 93 L0: L1: L2: L3: L4: L5: L6: L7: L8: L9: 96 94 L10: L11: L12: L13: L14: L15: L16: L17: L18: L19: 97 95 L20: L21: L22: L23: L24: L25: L26: L27: L28: L29: 98 96 L31: L32: L33: L34: 99 for () { 100 break L0; 101 } 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 } 102 106 103 107 // switch/choose, labelled exits 104 108 105 109 Switch: switch ( i ) { 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 } 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 } 119 124 120 125 Choose: choose ( i ) { 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 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 } 137 142 138 143 // all nested control options, labelled exits 139 144 140 145 Comp: { … … 148 153 break Try; 149 154 break Comp; 150 151 152 153 154 155 break For; continue For; 156 break While; continue While; 157 break Do; continue Do; 158 break If; 159 break Switch2; 155 160 } // switch 156 161 } // if … … 178 183 } 179 184 180 int main( int argc, char const *argv[]) {185 int main() { 181 186 printf("done\n"); 182 187 } -
tests/ctrl-flow/loop_else.cfa
r71ca5b9 rbada452 23 23 24 24 sout | nlOff; // turn off auto newline 25 while ( ) { sout | "empty"; break; } else { sout | "else"; }sout | nl;26 do { sout | "empty"; break; } while ( ) else { sout | "else"; }sout | nl;27 for ( ) { sout | "empty"; break; } else { sout | "else"; }sout | nl | nl;25 while ( true ) { sout | "empty"; break; } else { sout | "else"; } sout | nl; 26 do { sout | "empty"; break; } while ( true ) else { sout | "else"; } sout | nl; 27 for ( ; true ; ) { sout | "empty"; break; } else { sout | "else"; } sout | nl | nl; 28 28 29 29 do { sout | "false"; } while (false) else { sout | "else"; } sout | nl | nl;
Note:
See TracChangeset
for help on using the changeset viewer.