Commit b8578ff7 by Bin Cheng Committed by Bin Cheng

re PR rtl-optimization/56124 (Redundant reload for loading from memory)

	PR target/56124
	* ira-costs.c (scan_one_insn): Check whether the source rtx of
	loading has side effect.

From-SVN: r197691
parent b0c4c179
2013-04-11 Bin Cheng <bin.cheng@arm.com>
PR target/56124
* ira-costs.c (scan_one_insn): Check whether the source rtx of
loading has side effect.
2013-04-10 Steven Bosscher <steven@gcc.gnu.org> 2013-04-10 Steven Bosscher <steven@gcc.gnu.org>
* config/sparc/sparc.c: Include tree-pass.h. * config/sparc/sparc.c: Include tree-pass.h.
......
...@@ -1292,10 +1292,13 @@ scan_one_insn (rtx insn) ...@@ -1292,10 +1292,13 @@ scan_one_insn (rtx insn)
a memory requiring special instructions to load it, decreasing a memory requiring special instructions to load it, decreasing
mem_cost might result in it being loaded using the specialized mem_cost might result in it being loaded using the specialized
instruction into a register, then stored into stack and loaded instruction into a register, then stored into stack and loaded
again from the stack. See PR52208. */ again from the stack. See PR52208.
Don't do this if SET_SRC (set) has side effect. See PR56124. */
if (set != 0 && REG_P (SET_DEST (set)) && MEM_P (SET_SRC (set)) if (set != 0 && REG_P (SET_DEST (set)) && MEM_P (SET_SRC (set))
&& (note = find_reg_note (insn, REG_EQUIV, NULL_RTX)) != NULL_RTX && (note = find_reg_note (insn, REG_EQUIV, NULL_RTX)) != NULL_RTX
&& ((MEM_P (XEXP (note, 0))) && ((MEM_P (XEXP (note, 0))
&& !side_effects_p (SET_SRC (set)))
|| (CONSTANT_P (XEXP (note, 0)) || (CONSTANT_P (XEXP (note, 0))
&& targetm.legitimate_constant_p (GET_MODE (SET_DEST (set)), && targetm.legitimate_constant_p (GET_MODE (SET_DEST (set)),
XEXP (note, 0)) XEXP (note, 0))
......
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