aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1998-06-18 09:33:39 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1998-06-18 10:33:39 +0100
commitf9df0a1d520372d709a60b9cc2f8890e38df6e35 (patch)
tree11397394fc8ba4720b5a53634c9564a2921c2312 /gcc/reload.c
parent276d5ee0ca27b648187650f1bfeb61b345b5f915 (diff)
downloadgcc-f9df0a1d520372d709a60b9cc2f8890e38df6e35.zip
gcc-f9df0a1d520372d709a60b9cc2f8890e38df6e35.tar.gz
gcc-f9df0a1d520372d709a60b9cc2f8890e38df6e35.tar.bz2
reload.c (find_reloads): Don't narrow scope of RELOAD_OTHER to RELOAD_FOR_INSN.
* reload.c (find_reloads): Don't narrow scope of RELOAD_OTHER to RELOAD_FOR_INSN. From-SVN: r20559
Diffstat (limited to 'gcc/reload.c')
-rw-r--r--gcc/reload.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index 172fa67..a8908a9 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -3574,11 +3574,13 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
a SCRATCH). In this case, we only need have the reload live
through the insn itself, but not for any of our input or output
reloads.
+ But we must not accidentally narrow the scope of an existing
+ RELOAD_OTHER reload - leave these alone.
In any case, anything needed to address this operand can remain
however they were previously categorized. */
- if (goal_alternative_earlyclobber[i])
+ if (goal_alternative_earlyclobber[i] && operand_type[i] != RELOAD_OTHER)
operand_type[i]
= (find_reg_note (insn, REG_UNUSED, recog_operand[i])
? RELOAD_FOR_INSN : RELOAD_OTHER);