[ARC] Fix move_double_src_operand predicate.
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/ 2017-03-27 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. From-SVN: r246499
This commit is contained in:
parent
c4192ad702
commit
e5dcff3eb5
@ -1,3 +1,8 @@
|
||||
2017-03-27 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.
|
||||
|
||||
2017-03-27 Claudiu Zissulescu <claziss@synopsys.com>
|
||||
|
||||
* config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
|
||||
|
@ -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 :
|
||||
|
Loading…
Reference in New Issue
Block a user