/* TODO: enable for C++ once implemented. */ /* { dg-do compile { target c } } */ void bar(); void use (int*); void f (int i) { switch (i) /* { dg-note "switch starts here" } */ { int j; /* { dg-note "'j' declared here" } */ #pragma omp allocate(j) case 42: /* { dg-error "switch jumps over OpenMP 'allocate' allocation" } */ bar (); /* { dg-warning "statement will never be executed \\\[-Wswitch-unreachable\\\]" "" { target *-*-* } .-1 } */ break; case 51: /* { dg-error "switch jumps over OpenMP 'allocate' allocation" } */ use (&j); break; } } int h (int i2) { if (i2 == 5) goto label; /* { dg-error "jump skips OpenMP 'allocate' allocation" } */ return 5; int k2; /* { dg-note "'k2' declared here" } */ int j2 = 4; /* { dg-note "'j2' declared here" } */ #pragma omp allocate(k2, j2) label: /* { dg-note "label 'label' defined here" } */ k2 = 4; return j2 + k2; }