diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/gnu99-named-loops-2.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/gnu99-named-loops-2.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/gnu99-named-loops-2.c b/gcc/testsuite/gcc.dg/gnu99-named-loops-2.c new file mode 100644 index 0000000..46c6ba8e --- /dev/null +++ b/gcc/testsuite/gcc.dg/gnu99-named-loops-2.c @@ -0,0 +1,45 @@ +/* N3355 - Named loops. */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" } */ + +void +foo (int x) +{ + label1: + for (int i = 0; i < 16; ++i) + another_label1: + for (int j = 0; j < 16; ++j) + break label2; /* { dg-error "'break' statement operand 'label2' does not refer to a named loop or 'switch'; did you mean 'label1'\\\?" } */ + for (int i = 0; i < 16; ++i) + break label3; /* { dg-error "'break' statement operand 'label3' does not refer to a named loop or 'switch'" } */ + label4: /* { dg-message "'switch' name defined here" } */ + switch (x) + { + case 0: + for (int i = 0; i < 16; ++i) + continue label5; /* { dg-error "'continue' statement operand 'label5' does not refer to a named loop" } */ + break label4; + case 1: + for (int i = 0; i < 16; ++i) + continue label4; /* { dg-error "'continue' statement operand 'label4' refers to a named 'switch'" } */ + } + label6: + for (int i = 0; i < 16; ++i) + continue label7; /* { dg-error "'continue' statement operand 'label7' does not refer to a named loop; did you mean 'label6'\\\?" } */ + label2: + for (int i = 0; i < 16; ++i) + ; + label8:; + for (int i = 0; i < 16; ++i) + break label8; /* { dg-error "'break' statement operand 'label8' does not refer to a named loop or 'switch'" } */ + label9:; + for (int i = 0; i < 16; ++i) + continue label9; /* { dg-error "'continue' statement operand 'label9' does not refer to a named loop" } */ + label10: + ; + switch (x) + { + case 0: + break label10; /* { dg-error "'break' statement operand 'label10' does not refer to a named loop or 'switch'" } */ + } +} |