Changeset bada452 for tests/ctrl-flow
- Timestamp:
- Jan 28, 2025, 4:12:53 PM (10 months ago)
- Branches:
- master
- Children:
- c699602
- Parents:
- 71ca5b9
- Location:
- tests/ctrl-flow
- Files:
-
- 2 added
- 2 edited
-
.expect/superfluous.txt (added)
-
labelledExit.cfa (modified) (4 diffs)
-
loop_else.cfa (modified) (1 diff)
-
superfluous.cfa (added)
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 if ( x == y ) {26 for ( ; i < y; ) {27 y += 1;28 if ( y < 10 ) break Block;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 // loops, labelled exits31 // 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 while (y < 5 ) {39 if ( y == 3 ) break w2;40 }41 x += 1;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 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 }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 break D;64 continue D;65 }61 break D; 62 continue D; 63 } 66 64 67 65 Z : i += 1; 68 goto Z;66 goto Z; 69 67 X: Y: for () { 70 i += 1;71 if ( i > 5 ) continue X;72 if ( i < 5 ) break X;73 if ( i < 5 ) break Y;74 break;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 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 }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 for () ;92 for ( int i = 0 ;; );93 for ( ; i < 0; ) ;94 for ( ; ; i += 1 ) ;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 // switch/choose, labelled exits107 // 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 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 }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 // all nested control options, labelled exits143 // all nested control options, labelled exits 139 144 140 145 Comp: { … … 148 153 break Try; 149 154 break Comp; 150 break For; continue For;151 break While; continue While;152 break Do; continue Do;153 break If;154 break Switch2;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.