summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-23 12:05:56 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-23 12:05:56 +0000
commit71fceab6594e18e87d3d751e90034fb8e1b019cc (patch)
tree23b5a8404a7780586596776a9272a0da25116014
parentd431b2cae597afbe272e95bcd7ac60d7d9368cf7 (diff)
downloadppe42-gcc-71fceab6594e18e87d3d751e90034fb8e1b019cc.tar.gz
ppe42-gcc-71fceab6594e18e87d3d751e90034fb8e1b019cc.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104562 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/optabs.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index df183299652..db68f2ae8ec 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/optabs.c b/gcc/optabs.c
index bcb11b5432f..5da604d6e27 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -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. */
OpenPOWER on IntegriCloud