[LLVMdev] built-in longjmp and setjmp

Akira Hatanaka ahatanak at gmail.com
Tue Apr 12 14:54:25 PDT 2011


What would be the best way to convert built-in setjmp and longjmp tp library
calls?
Should it be implemented in clang or in backends?

On Tue, Apr 12, 2011 at 2:38 PM, Jim Grosbach <grosbach at apple.com> wrote:

> ARM/Darwin implements them. I'm not aware of any others.
>
> That said, they are designed for internal use by the compiler for exception
> handling. Calling them directly like this is very much not recommended.
> Using the system library setjmp()/longjmp() functions is preferred.
>
> -Jim
>
> On Apr 12, 2011, at 1:56 PM, Akira Hatanaka wrote:
>
> > Does the X86 backend (or any other backend) correctly implement support
> for __builtin_setjmp and __builtin_longjmp?
> > I don't get the correct result when I compile and run the following code
> with clang.
> >
> > # clang foo.c -O3; ./a.out
> >
> > #include <stdio.h>
> > void *buf[20];
> > void __attribute__((noinline))
> > foo (void)
> > {
> >   __builtin_longjmp (buf, 1);
> > }
> >
> > int
> > main (int argc, char** argv)
> > {
> >   if (__builtin_setjmp (buf))
> >     {
> >       printf("return\n");
> >       return 0;
> >     }
> >
> >   printf("call foo\n");
> >     foo ();
> >
> >   return 1;
> > }
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110412/af1213be/attachment.html>


More information about the llvm-dev mailing list