1  /* PR target/83368 */
       2  /* Testcase written by James Clarke <jrtc27@jrtc27.com> */
       3  
       4  /* { dg-do run { target *-*-solaris2.* *-*-linux* *-*-*bsd* } } */
       5  /* { dg-require-effective-target fpic } */
       6  /* { dg-options "-fPIC" } */
       7  /* { dg-require-effective-target alloca } */
       8  
       9  #include <stdio.h>
      10  #include <setjmp.h>
      11  #include <string.h>
      12  #include <stdlib.h>
      13  
      14  jmp_buf jb;
      15  
      16  int foo = 99;
      17  int c = 0;
      18  
      19  void bar (void)
      20  {
      21    c++;
      22    longjmp (jb, 1);
      23  }
      24  
      25  int main (void)
      26  {
      27    setjmp (jb);
      28  
      29    char *p = __builtin_alloca (256);
      30    memset (p, 0, 256);
      31    sprintf (p, "%d\n", foo);
      32  
      33    if (c < 10)
      34      bar();
      35  
      36    return 0;
      37  }