aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-01-05 20:09:11 -0800
committerRichard Henderson <rth@gcc.gnu.org>2005-01-05 20:09:11 -0800
commit19f17bb9a0c599d6424919104de1ba79a060a24e (patch)
treeea183445fdb32ce4ab64d1cbd167fb3a7519a6e8 /gcc/reload1.c
parent2070df3c393a07acf532e57051136bdccccb8911 (diff)
downloadgcc-19f17bb9a0c599d6424919104de1ba79a060a24e.zip
gcc-19f17bb9a0c599d6424919104de1ba79a060a24e.tar.gz
gcc-19f17bb9a0c599d6424919104de1ba79a060a24e.tar.bz2
re PR rtl-optimization/10692 ([m68k] miscompilation of perl with -O2 -fPIC)
PR rtl-opt/10692 * reload1.c (do_input_reload): Restrict the optimization deleteing a previous output reload to RELOAD_FOR_INPUT. From-SVN: r92984
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 1fec0cd..df7580e 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)