Commit d1446456 by Jeff Law Committed by Jeff Law

regcprop.c (maybe_mode_change): Avoid creating copies of the stack pointer.

	* regcprop.c (maybe_mode_change): Avoid creating copies of the
	stack pointer.

	Revert:
	2017-04-13  Jeff Law  <law@redhat.com>
	* config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
	in operands[1] if it is a MEM and TARGET_MIPS16 is active.

From-SVN: r246970
parent 8c468e1d
2017-04-18 Jeff Law <law@redhat.com>
* regcprop.c (maybe_mode_change): Avoid creating copies of the
stack pointer.
Revert:
2017-04-13 Jeff Law <law@redhat.com>
* config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
in operands[1] if it is a MEM and TARGET_MIPS16 is active.
2017-04-18 Georg-Johann Lay <avr@gjlay.de>
PR target/79453
......
......@@ -3493,10 +3493,7 @@
(define_insn_and_split "*zero_extendsidi2"
[(set (match_operand:DI 0 "register_operand" "=d,d")
(zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,W")))]
"TARGET_64BIT && !ISA_HAS_EXT_INS
&& !(TARGET_MIPS16
&& MEM_P (operands[1])
&& reg_mentioned_p (stack_pointer_rtx, operands[1]))"
"TARGET_64BIT && !ISA_HAS_EXT_INS"
"@
#
lwu\t%0,%1"
......@@ -3512,10 +3509,7 @@
(define_insn "*zero_extendsidi2_dext"
[(set (match_operand:DI 0 "register_operand" "=d,d")
(zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "d,W")))]
"TARGET_64BIT && ISA_HAS_EXT_INS
&& !(TARGET_MIPS16
&& MEM_P (operands[1])
&& reg_mentioned_p (stack_pointer_rtx, operands[1]))"
"TARGET_64BIT && ISA_HAS_EXT_INS"
"@
dext\t%0,%1,0,32
lwu\t%0,%1"
......
......@@ -396,6 +396,13 @@ maybe_mode_change (machine_mode orig_mode, machine_mode copy_mode,
&& GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (new_mode))
return NULL_RTX;
/* Avoid creating multiple copies of the stack pointer. Some ports
assume there is one and only one stack pointer.
It's unclear if we need to do the same for other special registers. */
if (regno == STACK_POINTER_REGNUM)
return NULL_RTX;
if (orig_mode == new_mode)
return gen_raw_REG (new_mode, regno);
else if (mode_change_ok (orig_mode, new_mode, regno))
......
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