re PR rtl-optimization/23837 (Wrong code with REG_NO_CONFLICT notes (caused by combine))

PR rtl-optimization/23837
	*  optabs.c (no_conflict_move_test): Don't set must_stay for a
	clobber / clobber match between dest and p->first.

From-SVN: r104562
This commit is contained in:
J"orn Rennecke 2005-09-23 12:05:56 +00:00 committed by Joern Rennecke
parent a9305dcbcb
commit 9617ccfdc4
2 changed files with 6 additions and 1 deletions

View File

@ -3,6 +3,10 @@
* final.c (insn_default_length, insn_min_length): In !HAVE_ATTR_length
case, define as macros.
PR rtl-optimization/23837
* optabs.c (no_conflict_move_test): Don't set must_stay for a
clobber / clobber match between dest and p->first.
2005-09-22 Ranjit Mathew <rmathew@gcc.gnu.org>
* doc/install.texi: Update URL for Jacks.

View File

@ -3021,7 +3021,8 @@ no_conflict_move_test (rtx dest, rtx set, void *p0)
return;
/* If this insn sets / clobbers a register that feeds one of the insns
already in the list, this insn has to stay too. */
else if (reg_mentioned_p (dest, PATTERN (p->first))
else if (reg_overlap_mentioned_p (dest, PATTERN (p->first))
|| (CALL_P (p->first) && (find_reg_fusage (p->first, USE, dest)))
|| reg_used_between_p (dest, p->first, p->insn)
/* Likewise if this insn depends on a register set by a previous
insn in the list. */