| typedef long int jmp_buf[8]; |
| extern |
| #ifdef __cplusplus |
| "C" |
| #endif |
| int setjmp (jmp_buf); |
| |
| void |
| foo (void) |
| { |
| int i; |
| #pragma omp simd |
| for (i = 0; i < 64; i++) |
| { |
| jmp_buf buf; |
| setjmp (buf); /* { dg-error "setjmp/longjmp inside 'simd' construct" } */ |
| } |
| } |
| |
| void |
| bar (void) |
| { |
| int i; |
| #pragma omp loop bind(thread) |
| for (i = 0; i < 64; i++) |
| { |
| jmp_buf buf; |
| setjmp (buf); |
| } |
| } |
| |
| #ifdef __cplusplus |
| struct S |
| { |
| static int setjmp (jmp_buf); |
| }; |
| |
| namespace N |
| { |
| int setjmp (jmp_buf); |
| } |
| |
| void |
| baz (void) |
| { |
| int i; |
| #pragma omp simd |
| for (i = 0; i < 64; i++) |
| { |
| jmp_buf buf; |
| S::setjmp (buf); |
| N::setjmp (buf); |
| } |
| } |
| |
| void |
| qux (void) |
| { |
| int i; |
| #pragma omp loop bind(thread) |
| for (i = 0; i < 64; i++) |
| { |
| jmp_buf buf; |
| S::setjmp (buf); |
| N::setjmp (buf); |
| } |
| } |
| #endif |