aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/gnu99-named-loops-2.c
blob: 46c6ba8e602d1b12d18e35adf51a035ccc8b72af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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'" } */
    }
}