Commit 8eee318f by Georg-Johann Lay Committed by Georg-Johann Lay

re PR rtl-optimization/50448 (Missed optimization accessing struct component with integer address)

	PR rtl-optimization/50448
	* cprop.c (try_replace_reg): Also try to replace uses of FROM that
	appear in SET_DEST.

From-SVN: r181011
parent 69e596af
2011-11-05 Georg-Johann Lay <avr@gjlay.de>
PR rtl-optimization/50448
* cprop.c (try_replace_reg): Also try to replace uses of FROM that
appear in SET_DEST.
2011-11-05 Peter Dufault <dufault@hda.com>, 2011-11-05 Peter Dufault <dufault@hda.com>,
Sebastian Huber <sebastian.huber@embedded-brains.de> Sebastian Huber <sebastian.huber@embedded-brains.de>
...@@ -712,8 +712,8 @@ find_used_regs (rtx *xptr, void *data ATTRIBUTE_UNUSED) ...@@ -712,8 +712,8 @@ find_used_regs (rtx *xptr, void *data ATTRIBUTE_UNUSED)
} }
} }
/* Try to replace all non-SET_DEST occurrences of FROM in INSN with TO. /* Try to replace all uses of FROM in INSN with TO.
Returns nonzero is successful. */ Return nonzero if successful. */
static int static int
try_replace_reg (rtx from, rtx to, rtx insn) try_replace_reg (rtx from, rtx to, rtx insn)
...@@ -764,6 +764,18 @@ try_replace_reg (rtx from, rtx to, rtx insn) ...@@ -764,6 +764,18 @@ try_replace_reg (rtx from, rtx to, rtx insn)
note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (src)); note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (src));
} }
if (set && MEM_P (SET_DEST (set)) && reg_mentioned_p (from, SET_DEST (set)))
{
/* Registers can also appear as uses in SET_DEST if it is a MEM.
We could perhaps try this for multiple SETs, but it probably
won't buy us anything. */
rtx dest = simplify_replace_rtx (SET_DEST (set), from, to);
if (!rtx_equal_p (dest, SET_DEST (set))
&& validate_change (insn, &SET_DEST (set), dest, 0))
success = 1;
}
/* REG_EQUAL may get simplified into register. /* REG_EQUAL may get simplified into register.
We don't allow that. Remove that note. This code ought We don't allow that. Remove that note. This code ought
not to happen, because previous code ought to synthesize not to happen, because previous code ought to synthesize
......
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