Commit ab6e41cb by Alan Modra Committed by Alan Modra

PRE_INC with invalid hard reg

	PR target/68973
	* reloads.c (find_reloads_address_1): For pre/post-inc/dec
	with an invalid hard reg, reload just the reg not the entire
	pre/post-inc/dec address expression.

From-SVN: r233406
parent 114e2b51
2016-02-14 Alan Modra <amodra@gmail.com>
PR target/68973
* reloads.c (find_reloads_address_1): For pre/post-inc/dec
with an invalid hard reg, reload just the reg not the entire
pre/post-inc/dec address expression.
2016-02-13 Oleg Endo <olegendo@gcc.gnu.org>
PR target/67260
......
......@@ -5834,14 +5834,16 @@ find_reloads_address_1 (machine_mode mode, addr_space_t as,
? XEXP (x, 0)
: reg_equiv_mem (regno));
enum insn_code icode = optab_handler (add_optab, GET_MODE (x));
if (insn && NONJUMP_INSN_P (insn) && equiv
&& memory_operand (equiv, GET_MODE (equiv))
if (insn && NONJUMP_INSN_P (insn)
#if HAVE_cc0
&& ! sets_cc0_p (PATTERN (insn))
#endif
&& ! (icode != CODE_FOR_nothing
&& insn_operand_matches (icode, 0, equiv)
&& insn_operand_matches (icode, 1, equiv))
&& (regno < FIRST_PSEUDO_REGISTER
|| (equiv
&& memory_operand (equiv, GET_MODE (equiv))
&& ! (icode != CODE_FOR_nothing
&& insn_operand_matches (icode, 0, equiv)
&& insn_operand_matches (icode, 1, equiv))))
/* Using RELOAD_OTHER means we emit this and the reload we
made earlier in the wrong order. */
&& !reloaded_inner_of_autoinc)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment