aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2004-07-25 17:01:49 +0000
committerDaniel Jacobowitz <drow@gcc.gnu.org>2004-07-25 17:01:49 +0000
commit97b69e514a011eb1c529281c355d61399956edb4 (patch)
tree005f8e1bbe2b08856b76f9db9bfcb47eafa7b01f
parenta9315f66908276a6430488a208777f8eae6c77e4 (diff)
downloadgcc-97b69e514a011eb1c529281c355d61399956edb4.zip
gcc-97b69e514a011eb1c529281c355d61399956edb4.tar.gz
gcc-97b69e514a011eb1c529281c355d61399956edb4.tar.bz2
regmove.c (optimize_reg_copy_1): Don't try to replace call-used hard registers.
* regmove.c (optimize_reg_copy_1): Don't try to replace call-used hard registers. From-SVN: r85149
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/regmove.c3
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bd5d443..55be14e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-25 Daniel Jacobowitz <dan@debian.org>
+
+ * regmove.c (optimize_reg_copy_1): Don't try to replace call-used
+ hard registers.
+
2004-07-25 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* tree-ssa-operands.c (get_stmt_operands, get_expr_operands):
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 5816831..5bd6f40 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -431,6 +431,9 @@ optimize_reg_copy_1 (rtx insn, rtx dest, rtx src)
|| (sregno < FIRST_PSEUDO_REGISTER
&& asm_noperands (PATTERN (p)) >= 0
&& reg_overlap_mentioned_p (src, PATTERN (p)))
+ /* Don't change hard registers used by a call. */
+ || (CALL_P (p) && sregno < FIRST_PSEUDO_REGISTER
+ && find_reg_fusage (p, USE, src))
/* Don't change a USE of a register. */
|| (GET_CODE (PATTERN (p)) == USE
&& reg_overlap_mentioned_p (src, XEXP (PATTERN (p), 0))))