source: tests/ctrl-flow/labelledExit.cfa@ e1358c0

Last change on this file since e1358c0 was bada452, checked in by Andrew Beach <ajbeach@…>, 8 months ago

Removed warnings from serveral tests and removed them from the ..._TO_INVESTIGATE list. One test triggered a Cforall warning and a new test to check that has been added. collections/vector-demo has no warnings in its body, but the library it uses does have warnings and will have to move after that is fixed.

  • Property mode set to 100644
File size: 3.3 KB
RevLine 
[bada452]1//
[2f22cc4]2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
[bada452]6//
7// labelledExit.cfa --
8//
[2f22cc4]9// Author : Peter A. Buhr
10// Created On : Wed Aug 10 07:29:39 2016
11// Last Modified By : Peter A. Buhr
[d96f7c4]12// Last Modified On : Fri Jan 17 14:18:15 2025
13// Update Count : 14
[bada452]14//
[2f22cc4]15
[10dc7491]16int foo() {
[bada452]17 int i = 0;
18 int x = 0, y = 0;
[62edde5]19
[bada452]20 // block, labelled exits
[62edde5]21
22 Block: {
[bada452]23 if ( x == y ) {
24 for ( ; i < y; ) {
25 y += 1;
26 if ( y < 10 ) break Block;
27 }
28 }
29 }
[62edde5]30
[bada452]31 // loops, labelled exits
[62edde5]32
[bada452]33 w1: while ( y == 10 ) break w1;
[62edde5]34
35 w2: while ( x < 10 ) {
[bada452]36 while (y < 5 ) {
37 if ( y == 3 ) break w2;
38 }
39 x += 1;
40 }
[62edde5]41
42 A: for ( i = 0; i < 10; i += 1 ) {
[bada452]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 }
[62edde5]59
[adb6b30f]60 D: for () {
[bada452]61 break D;
62 continue D;
63 }
[62edde5]64
65 Z : i += 1;
[bada452]66 goto Z;
[adb6b30f]67 X: Y: for () {
[bada452]68 i += 1;
69 if ( i > 5 ) continue X;
70 if ( i < 5 ) break X;
71 if ( i < 5 ) break Y;
72 break;
73 }
[adb6b30f]74 XX: for () {
[bada452]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 }
88
89 for () ;
90 for ( int i = 0 ;; ) ++i;
91 for ( ; i < 0; ) ;
92 for ( ; ; i += 1 ) ;
[62edde5]93 L0: L1: L2: L3: L4: L5: L6: L7: L8: L9:
94 L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
95 L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
96 L31: L32: L33: L34:
[bada452]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 }
[62edde5]106
[bada452]107 // switch/choose, labelled exits
[62edde5]108
109 Switch: switch ( i ) {
[bada452]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 }
[62edde5]124
125 Choose: choose ( i ) {
[bada452]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 }
142
143 // all nested control options, labelled exits
[9bdb8b7]144
145 Comp: {
146 Try: try {
147 For: for ( ;; ) {
148 While: while ( true ) {
149 Do: do {
150 If: if ( true ) {
151 Switch2: switch ( 3 ) {
152 case 3:
153 break Try;
154 break Comp;
[bada452]155 break For; continue For;
156 break While; continue While;
157 break Do; continue Do;
158 break If;
159 break Switch2;
[9bdb8b7]160 } // switch
161 } // if
162 } while ( true );
163 } // while
164 } // for
165 } finally {} // always executed
166 } // compound
167
[62edde5]168 // computed goto
[e53e5aa]169 {
170 void *array[] = { &&foo, &&bar, &&hack };
171 foo: bar: hack:
172 &&foo;
173 &&bar;
174 goto *array[i];
175 }
[62edde5]176
177 Q: if ( i > 5 ) {
178 i += 1;
[540b275]179 break Q;
180 }
181 else
[62edde5]182 i += 1;
183}
184
[bada452]185int main() {
[2853d6f]186 printf("done\n");
[aaf1f4d]187}
188
[62edde5]189// Local Variables: //
190// tab-width: 4 //
[dc8511c]191// compile-command: "cfa labelledExit.cfa" //
[62edde5]192// End: //
Note: See TracBrowser for help on using the repository browser.