From: Trevor Saunders <tbsaunde+...@tbsaunde.org> gcc/ChangeLog:
2015-11-09 Trevor Saunders <tbsaunde+...@tbsaunde.org> * defaults.h (EH_RETURN_HANDLER_RTX): New default definition. * df-scan.c (df_get_exit_block_use_set): Adjust. * except.c (expand_eh_return): Likewise. --- gcc/defaults.h | 4 ++++ gcc/df-scan.c | 2 -- gcc/except.c | 9 ++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gcc/defaults.h b/gcc/defaults.h index c20de44..047a0db 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -1325,6 +1325,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define TARGET_PECOFF 0 #endif +#ifndef EH_RETURN_HANDLER_RTX +#define EH_RETURN_HANDLER_RTX NULL +#endif + #ifdef GCC_INSN_FLAGS_H /* Dependent default target macro definitions diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 2e5fe97..a735925 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -3714,7 +3714,6 @@ df_get_exit_block_use_set (bitmap exit_block_uses) } #endif -#ifdef EH_RETURN_HANDLER_RTX if ((!targetm.have_epilogue () || ! epilogue_completed) && crtl->calls_eh_return) { @@ -3722,7 +3721,6 @@ df_get_exit_block_use_set (bitmap exit_block_uses) if (tmp && REG_P (tmp)) df_mark_reg (tmp, exit_block_uses); } -#endif /* Mark function return value. */ diddle_return_value (df_mark_reg, (void*) exit_block_uses); diff --git a/gcc/except.c b/gcc/except.c index 1801fe7..1a41a34 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2255,11 +2255,10 @@ expand_eh_return (void) emit_insn (targetm.gen_eh_return (crtl->eh.ehr_handler)); else { -#ifdef EH_RETURN_HANDLER_RTX - emit_move_insn (EH_RETURN_HANDLER_RTX, crtl->eh.ehr_handler); -#else - error ("__builtin_eh_return not supported on this target"); -#endif + if (rtx handler = EH_RETURN_HANDLER_RTX) + emit_move_insn (handler, crtl->eh.ehr_handler); + else + error ("__builtin_eh_return not supported on this target"); } emit_label (around_label); -- 2.5.0.rc1.5.gc07173f