Lower zeroing array assignment to memset for allocatable arrays.
[official-gcc.git] / gcc / testsuite / c-c++-common / gomp / imperfect-labels.c
blobb7a7a4c8358639416026d8de1252ff61f3df4f10
1 /* { dg-do compile } */
3 /* Check that a nested FOR loop with a label on it is treated as
4 intervening code, since it doesn't match the grammar for canonical
5 loop nest form. */
7 extern void do_something (void);
9 void imperfect1 (int x, int y)
11 #pragma omp for collapse (2)
12 for (int i = 0; i < x; i++) /* { dg-error "not enough nested loops" } */
14 foo:
15 for (int j = 0; j < y; j++) /* { dg-error "loop not permitted in intervening code" } */
16 do_something ();
20 void perfect1 (int x, int y)
22 #pragma omp for ordered (2)
23 for (int i = 0; i < x; i++) /* { dg-error "not enough nested loops" } */
24 /* { dg-error "inner loops must be perfectly nested" "" { target *-*-*} .-1 } */
26 foo:
27 for (int j = 0; j < y; j++) /* { dg-error "loop not permitted in intervening code" } */
28 do_something ();
33 /* Similar, but put the label on a block wrapping the nested loop instead. */
35 void imperfect2 (int x, int y)
37 #pragma omp for collapse (2)
38 for (int i = 0; i < x; i++) /* { dg-error "not enough nested loops" } */
40 foo:
42 for (int j = 0; j < y; j++) /* { dg-error "loop not permitted in intervening code" } */
43 do_something ();
48 void perfect2 (int x, int y)
50 #pragma omp for ordered (2)
51 for (int i = 0; i < x; i++) /* { dg-error "not enough nested loops" } */
52 /* { dg-error "inner loops must be perfectly nested" "" { target *-*-*} .-1 } */
54 foo:
56 for (int j = 0; j < y; j++) /* { dg-error "loop not permitted in intervening code" } */
57 do_something ();
62 /* Sanity check that labels are allowed in the innermost loop body. */
64 void imperfect3 (int x, int y)
66 #pragma omp for collapse (2)
67 for (int i = 0; i < x; i++)
68 for (int j = 0; j < y; j++)
70 foo:
71 do_something ();
75 void perfect3 (int x, int y)
77 #pragma omp for ordered (2)
78 for (int i = 0; i < x; i++)
79 for (int j = 0; j < y; j++)
81 foo:
82 do_something ();