mirror of git://gcc.gnu.org/git/gcc.git
re PR rtl-optimization/57003 (gcc breaks -O2 optimization with Wine(64) - links/info/bisect of commits included)
PR rtl-optimization/57003 * regcprop.c (copyprop_hardreg_forward_1): If ksvd.ignore_set_reg, also check CALL_INSN_FUNCTION_USAGE for clobbers again after killing regs_invalidated_by_call. From-SVN: r216026
This commit is contained in:
parent
c4d91f2eac
commit
58a41b43b5
|
|
@ -1,3 +1,10 @@
|
||||||
|
2014-10-09 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
PR rtl-optimization/57003
|
||||||
|
* regcprop.c (copyprop_hardreg_forward_1): If ksvd.ignore_set_reg,
|
||||||
|
also check CALL_INSN_FUNCTION_USAGE for clobbers again after
|
||||||
|
killing regs_invalidated_by_call.
|
||||||
|
|
||||||
2014-10-08 Teresa Johnson <tejohnson@google.com>
|
2014-10-08 Teresa Johnson <tejohnson@google.com>
|
||||||
|
|
||||||
PR bootstrap/63432.
|
PR bootstrap/63432.
|
||||||
|
|
|
||||||
|
|
@ -1029,7 +1029,17 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
|
||||||
but instead among CLOBBERs on the CALL_INSN, we could wrongly
|
but instead among CLOBBERs on the CALL_INSN, we could wrongly
|
||||||
assume the value in it is still live. */
|
assume the value in it is still live. */
|
||||||
if (ksvd.ignore_set_reg)
|
if (ksvd.ignore_set_reg)
|
||||||
note_stores (PATTERN (insn), kill_clobbered_value, vd);
|
{
|
||||||
|
note_stores (PATTERN (insn), kill_clobbered_value, vd);
|
||||||
|
for (exp = CALL_INSN_FUNCTION_USAGE (insn);
|
||||||
|
exp;
|
||||||
|
exp = XEXP (exp, 1))
|
||||||
|
{
|
||||||
|
rtx x = XEXP (exp, 0);
|
||||||
|
if (GET_CODE (x) == CLOBBER)
|
||||||
|
kill_value (SET_DEST (x), vd);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Notice stores. */
|
/* Notice stores. */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue