This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 5/5] [ARC] Fix move_double_src_operand predicate.
* Claudiu Zissulescu <Claudiu.Zissulescu@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 <claziss@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
>