- File:
-
- 1 edited
-
tests/ctrl-flow/labelledExit.cfa (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/ctrl-flow/labelledExit.cfa
rbada452 rd96f7c4 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 = 0;18 int x = 0, y = 0;17 int i; 18 int x, y; 19 19 20 // block, labelled exits 20 x = 0; y = 0; 21 22 // block, labelled exits 21 23 22 24 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 } 30 32 31 // loops, labelled exits33 // loops, labelled exits 32 34 33 w1: while ( y == 10 ) break w1;35 w1: while ( y == 10 ); 34 36 35 37 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 } 41 43 42 44 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 } 59 61 60 62 D: for () { 61 break D;62 continue D;63 }63 break D; 64 continue D; 65 } 64 66 65 67 Z : i += 1; 66 goto Z;68 goto Z; 67 69 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 } 74 76 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 } 88 90 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 ) ; 93 95 L0: L1: L2: L3: L4: L5: L6: L7: L8: L9: 94 96 L10: L11: L12: L13: L14: L15: L16: L17: L18: L19: 95 97 L20: L21: L22: L23: L24: L25: L26: L27: L28: L29: 96 98 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 } 106 102 107 // switch/choose, labelled exits103 // switch/choose, labelled exits 108 104 109 105 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 } 124 119 125 120 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 } 142 137 143 // all nested control options, labelled exits138 // all nested control options, labelled exits 144 139 145 140 Comp: { … … 153 148 break Try; 154 149 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; 160 155 } // switch 161 156 } // if … … 183 178 } 184 179 185 int main( ) {180 int main( int argc, char const *argv[] ) { 186 181 printf("done\n"); 187 182 }
Note:
See TracChangeset
for help on using the changeset viewer.