1  /* { dg-do compile } */
       2  /* { dg-options "-fdump-tree-optimized" } */
       3  /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
       4  /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
       5  /* { dg-require-effective-target indirect_jumps } */
       6  
       7  struct __jmp_buf_tag {};
       8  typedef struct __jmp_buf_tag jmp_buf[1];
       9  extern int _setjmp (struct __jmp_buf_tag __env[1]);
      10  
      11  jmp_buf g_return_jmp_buf;
      12  
      13  static void SetNaClSwitchExpectations (void)
      14  {
      15    __builtin_longjmp (g_return_jmp_buf, 1);
      16  }
      17  void TestSyscall(void)
      18  {
      19    SetNaClSwitchExpectations();
      20  
      21    _setjmp (g_return_jmp_buf);
      22  }
      23  
      24  /* sizeof g_return_jmp_buf is zero size but it's being passed to
      25     a function declared to take an array of one element which might
      26     trigger a warning.  Prune it out:
      27     { dg-prune-output "-Wstringop-overflow" } */
      28  
      29  /* { dg-final { scan-tree-dump-not "setjmp" "optimized" } } */