[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