| /* { dg-do compile } */ |
| /* { dg-options "-fcilkplus -fopenmp" } */ |
| /* { dg-require-effective-target fopenmp } */ |
| |
| int *a, *b, c; |
| |
| void foo() |
| { |
| #pragma simd |
| for (int i=0; i < 1000; ++i) |
| { |
| a[i] = b[i]; |
| if (c == 5) |
| return; /* { dg-error "invalid branch to/from a Cilk Plus structured block" } */ |
| } |
| } |
| |
| void bar() |
| { |
| #pragma simd |
| for (int i=0; i < 1000; ++i) |
| { |
| lab: |
| a[i] = b[i]; |
| } |
| if (c == 6) |
| goto lab; /* { dg-error "invalid entry to Cilk Plus structured block" } */ |
| } |
| |
| void baz() |
| { |
| bad1: |
| #pragma omp parallel |
| goto bad1; /* { dg-error "invalid branch to/from an OpenMP structured block" } */ |
| |
| goto bad2; /* { dg-error "invalid entry to OpenMP structured block" } */ |
| #pragma omp parallel |
| { |
| bad2: ; |
| } |
| |
| #pragma omp parallel |
| { |
| int i; |
| goto ok1; |
| for (i = 0; i < 10; ++i) |
| { ok1: break; } |
| } |
| } |