1 /* N3355 - Named loops. */
2 /* { dg-do compile } */
3 /* { dg-options "-std=gnu99" } */
8 for (int i
= 0; i
< 16; ++i
)
11 label1
: /* { dg-message "loop name defined here" } */
12 for (int j
= ({ if (x
== 0) break label1
; 0; }); j
< 16; ++j
) /* { dg-error "'break' statement operand 'label1' refers to a loop outside of its body" } */
14 label2
: /* { dg-message "loop name defined here" } */
15 for (int j
= ({ if (x
== 1) continue label2
; 0; }); j
< 16; ++j
) /* { dg-error "'continue' statement operand 'label2' refers to a loop outside of its body" } */
17 label3
: /* { dg-message "loop name defined here" } */
18 for (int j
= 0; j
< ({ if (x
== 2) break label3
; 16; }); ++j
) /* { dg-error "'break' statement operand 'label3' refers to a loop outside of its body" } */
20 label4
: /* { dg-message "loop name defined here" } */
21 for (int j
= 0; j
< ({ if (x
== 3) continue label4
; 16; }); ++j
) /* { dg-error "'continue' statement operand 'label4' refers to a loop outside of its body" } */
23 label5
: /* { dg-message "loop name defined here" } */
24 for (int j
= 0; j
< 16; j
+= ({ if (x
== 4) break label5
; 1; })) /* { dg-error "'break' statement operand 'label5' refers to a loop outside of its body" } */
26 label6
: /* { dg-message "loop name defined here" } */
27 for (int j
= 0; j
< 16; j
+= ({ if (x
== 5) continue label6
; 1; })) /* { dg-error "'continue' statement operand 'label6' refers to a loop outside of its body" } */
30 label7
: /* { dg-message "loop name defined here" } */
31 while (k
< ({ if (x
== 6) break label7
; 16; })) /* { dg-error "'break' statement operand 'label7' refers to a loop outside of its body" } */
34 label8
: /* { dg-message "loop name defined here" } */
35 while (k
< ({ if (x
== 7) continue label8
; 16; })) /* { dg-error "'continue' statement operand 'label8' refers to a loop outside of its body" } */
41 while (k
<= ({ if (x
== 8) break label9
; 16; })); /* { dg-error "'break' statement operand 'label9' does not refer to a named loop or 'switch'" } */
46 while (k
<= ({ if (x
== 9) continue label10
; 16; })); /* { dg-error "'continue' statement operand 'label10' does not refer to a named loop" } */
47 label11
: /* { dg-message "'switch' name defined here" } */
48 switch (x
+ ({ if (x
== 10) break label11
; 0; })) /* { dg-error "'break' statement operand 'label11' refers to a 'switch' outside of its body" } */
57 for (int i
= 0; i
< 32; ++i
)
78 for (int j
= 0; j
< 32; ++j
)
87 for (int k
= 0; k
< 32; ++k
)
93 continue label22
; /* { dg-error "'continue' statement operand 'label22' does not refer to a named loop; did you mean 'label31'\\\?" } */
95 break label20
; /* { dg-error "'break' statement operand 'label20' does not refer to a named loop or 'switch'; did you mean 'label31'\\\?" } */
97 break label15
; /* { dg-error "'break' statement operand 'label15' does not refer to a named loop or 'switch'; did you mean 'label31'\\\?" } */
99 continue label13
; /* { dg-error "'continue' statement operand 'label13' does not refer to a named loop; did you mean 'label31'\\\?" } */
101 break label12
; /* { dg-error "'break' statement operand 'label12' does not refer to a named loop or 'switch'; did you mean 'label31'\\\?" } */