__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