1  typedef long int jmp_buf[8];
       2  extern
       3  #ifdef __cplusplus
       4  "C"
       5  #endif
       6  int setjmp (jmp_buf);
       7  
       8  void
       9  foo (void)
      10  {
      11    int i;
      12    #pragma omp simd
      13    for (i = 0; i < 64; i++)
      14      {
      15        jmp_buf buf;
      16        setjmp (buf);	/* { dg-error "setjmp/longjmp inside 'simd' construct" } */
      17      }
      18  }
      19  
      20  void
      21  bar (void)
      22  {
      23    int i;
      24    #pragma omp loop bind(thread)
      25    for (i = 0; i < 64; i++)
      26      {
      27        jmp_buf buf;
      28        setjmp (buf);
      29      }
      30  }
      31  
      32  #ifdef __cplusplus
      33  struct S
      34  {
      35    static int setjmp (jmp_buf);
      36  };
      37  
      38  namespace N
      39  {
      40    int setjmp (jmp_buf);
      41  }
      42  
      43  void
      44  baz (void)
      45  {
      46    int i;
      47    #pragma omp simd
      48    for (i = 0; i < 64; i++)
      49      {
      50        jmp_buf buf;
      51        S::setjmp (buf);
      52        N::setjmp (buf);
      53      }
      54  }
      55  
      56  void
      57  qux (void)
      58  {
      59    int i;
      60    #pragma omp loop bind(thread)
      61    for (i = 0; i < 64; i++)
      62      {
      63        jmp_buf buf;
      64        S::setjmp (buf);
      65        N::setjmp (buf);
      66      }
      67  }
      68  #endif