libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / c2y-named-loops-4.c
blob660cda9040ad27bc3e80d79de028dc6777952581
1 /* N3355 - Named loops. */
2 /* { dg-do run } */
3 /* { dg-options "-std=c2y -pedantic-errors" } */
5 extern void abort (void);
7 void
8 foo (int x)
10 int i, j, k, l, m;
11 label1:
12 for (i = 0; i < 2; ++i)
14 if (i == 1)
16 if (x != 11)
17 abort ();
18 return;
20 label2:
21 switch (i)
23 label3:
24 case 0:
25 for (j = 0; j < 2; ++j)
27 if (j == 1)
29 if (x != 8)
30 abort ();
31 return;
33 label4:
34 for (k = 0; k < 2; ++k)
36 if (k == 1)
38 if (x != 6)
39 abort ();
40 return;
42 l = 0;
43 label5:
44 while (l < 2)
46 if (l == 1)
48 if (x != 4)
49 abort ();
50 return;
52 ++l;
53 m = 0;
54 label6:
57 if (m == 1)
59 if (x != 2)
60 abort ();
61 return;
63 ++m;
64 label7:
65 switch (x)
67 case 0:
68 break label7;
69 case 1:
70 break label6;
71 case 2:
72 continue label6;
73 case 3:
74 break label5;
75 case 4:
76 continue label5;
77 case 5:
78 break label4;
79 case 6:
80 continue label4;
81 case 7:
82 break label3;
83 case 8:
84 continue label3;
85 case 9:
86 break label2;
87 case 10:
88 break label1;
89 case 11:
90 continue label1;
91 default:
92 abort ();
93 break;
95 if (x)
96 abort ();
97 return;
99 while (m < 2);
100 if (x != 1 || m != 1)
101 abort ();
102 return;
104 if (x != 3 || l != 1 || m != 1)
105 abort ();
106 return;
108 if (x != 5 || k != 0 || l != 1 || m != 1)
109 abort ();
110 return;
112 if (x != 7 || j != 0 || k != 0 || l != 1 || m != 1)
113 abort ();
114 return;
116 if (x != 9 || j != 0 || k != 0 || l != 1 || m != 1)
117 abort ();
118 return;
120 if (x != 10 || i != 0 || j != 0 || k != 0 || l != 1 || m != 1)
121 abort ();
124 void
125 bar (int x)
127 int i, j;
128 label1:
129 for (i = 0; i < 2; ++i)
131 if (i == 1)
133 if (x != 1)
134 abort ();
135 return;
137 for (j = 0; j < 2; ++j)
138 if (j == 1)
139 abort ();
140 else if (x == 0)
141 break label1;
142 else if (x == 1)
143 continue label1;
144 else
145 abort ();
146 abort ();
148 if (x != 0)
149 abort ();
153 main ()
155 for (int n = 0; n <= 11; ++n)
156 foo (n);
157 bar (0);
158 bar (1);