* Claudiu Zissulescu <claudiu.zissule...@synopsys.com> [2017-03-20 12:43:30 
+0100]:

> Durring compilation process, (subreg (mem ...) ...) can occur. Hence,
> we need to check if the address of mem is a valid one. This patch is
> fixing this check by directly calling the address_operand, instead of
> calling move_double_src_operand, as the latter is always checking
> against the original mode, thus, returning false when the inner and
> outer modes are different.
> 
> gcc/
> 2016-10-07  Claudiu Zissulescu  <claz...@synopsys.com>
> 
>       * config/arc/predicates.md (move_double_src_operand): Replace the
>       call to move_double_src_operand with a call to
>       address_operand.

Sounds good, thanks,
Andrew


> ---
>  gcc/config/arc/predicates.md | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gcc/config/arc/predicates.md b/gcc/config/arc/predicates.md
> index 8dd8d55..9e60cb7 100644
> --- a/gcc/config/arc/predicates.md
> +++ b/gcc/config/arc/predicates.md
> @@ -318,7 +318,7 @@
>        /* (subreg (mem ...) ...) can occur here if the inner part was once a
>        pseudo-reg and is now a stack slot.  */
>        if (GET_CODE (SUBREG_REG (op)) == MEM)
> -     return move_double_src_operand (SUBREG_REG (op), mode);
> +     return address_operand (XEXP (SUBREG_REG (op), 0), mode);
>        else
>       return register_operand (op, mode);
>      case MEM :
> -- 
> 1.9.1
> 

Reply via email to