summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-06 04:09:11 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-06 04:09:11 +0000
commit96a73e23284366c8a71abdc74cd873a3b09e0482 (patch)
treeea183445fdb32ce4ab64d1cbd167fb3a7519a6e8
parent3b18e5e3997b463ce091d5dd322459b488d27b88 (diff)
downloadppe42-gcc-96a73e23284366c8a71abdc74cd873a3b09e0482.tar.gz
ppe42-gcc-96a73e23284366c8a71abdc74cd873a3b09e0482.zip
PR rtl-opt/10692
* reload1.c (do_input_reload): Restrict the optimization deleteing a previous output reload to RELOAD_FOR_INPUT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92984 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload1.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 281c9dbadf5..078a19e702b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-05 Richard Henderson <rth@redhat.com>
+
+ PR rtl-opt/10692
+ * reload1.c (do_input_reload): Restrict the optimization deleteing
+ a previous output reload to RELOAD_FOR_INPUT.
+
2005-01-05 Steven Bosscher <stevenb@suse.de>
* combine.c (expand_compound_operation) <ZERO_EXTRACT>: Add
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 1fec0cdcc43..df7580e20b7 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -6822,6 +6822,10 @@ do_input_reload (struct insn_chain *chain, struct reload *rl, int j)
actually no need to store the old value in it. */
if (optimize
+ /* Only attempt this for input reloads; for RELOAD_OTHER we miss
+ that there may be multiple uses of the previous output reload.
+ Restricting to RELOAD_FOR_INPUT is mostly paranoia. */
+ && rl->when_needed == RELOAD_FOR_INPUT
&& (reload_inherited[j] || reload_override_in[j])
&& rl->reg_rtx
&& REG_P (rl->reg_rtx)
OpenPOWER on IntegriCloud