__builtin_longjmp and rs6000 TOC
Jeffrey A Law
law@cygnus.com
Sun Feb 1 12:59:00 GMT 1998
In message <19980129182817.01703@dot.cygnus.com>you write:
> --sm4nu43k4a2Rpi4c
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: attachment; filename=d-sjlj-3
>
> Thu Jan 29 18:04:19 1998 Richard Henderson <rth@cygnus.com>
>
> * expr.c (expand_builtin_setjmp): Rename `setjmp' insn to
> `builtin_setjmp_setup', and provide it with the jmp_buf.
> Use only one of `builtin_setjmp_receiver' or `nonlocal_goto_receiver',
> and provide the former with the target label.
> (expand_builtin) [BUILTIN_LONGJMP]: Split out to ...
> (expand_builtin_longjmp): ... here. Recognize a `builtin_longjmp'
> insn to replace all of the normal nonlocal_goto code.
>
> * alpha.md (nonlocal_goto_receiver_osf): Delete.
> (nonlocal_goto_receiver_vms): Rename to nonlocal_goto_receiver.
> (builtin_longjmp, builtin_setjmp_receiver): New.
> * sparc.md (update_return): Disambiguate unspec number.
> (nonlocal_goto): Rearrange arguments to match caller in except.c.
> (builtin_setjmp_setup): Rename from setjmp. Match and ignore the
> jmp_buf operand.
[ ... additional changelog entries removed ... ]
Looks good to me. Cleaner than the original builtin_setjmp stuff
too. Might even improve the cfg for sjlj exceptions.
I'd say install it if you're happy with it.
jeff
More information about the Gcc
mailing list