[Bug c/59039] Undocumented __builtin_longjmp/__builtin_setjmp

rth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 6 17:40:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59039

Richard Henderson <rth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rth at gcc dot gnu.org

--- Comment #25 from Richard Henderson <rth at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #23)
> Does it look OK?

I would not say that __builtin_setjmp is more efficient.  It really saves
just as many registers, except that it has help from the containing function's
prologue/epilogue to do so, rather than saving them all within the jmpbuf.

Which means that the set of registers saved is the ISA under which the setjmp
was compiled.  Which makes the builtin less flexible than the libc variant
when it comes to ISA extensions such as we see on ARM and PPC.

I'm not keen on encouraging any user to use these functions.
It's simply not worth it to us as maintainers.

The fact that we've got code in libgcc that uses them means that we must
continue to have these functions callable by some means.  If folks would be
happier if we hid these from users by making them only callable with some
special option like -fbuild-libgcc, I could live with that.



More information about the Gcc-bugs mailing list