On Mon, 2015-11-09 at 11:47 -0500, tbsaunde+...@tbsaunde.org wrote: > 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)
Would this be clearer as rtx handler = EH_RETURN_HANDLER_RTX; if (handler) ? (to avoid an assignment inside a conditional) > + emit_move_insn (handler, crtl->eh.ehr_handler); > + else > + error ("__builtin_eh_return not supported on this target"); > } > > emit_label (around_label);