This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 10/12] always define EH_RETURN_HANDLER_RTX


On Mon, 2015-11-09 at 11:47 -0500, tbsaunde+gcc@tbsaunde.org wrote:
> From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
> 
> gcc/ChangeLog:
> 
> 2015-11-09  Trevor Saunders  <tbsaunde+gcc@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);



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]