diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-04-03 22:39:33 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-04-03 22:39:33 +0000 |
commit | ed95639b16caac0d8dfc30cdeb0d232045fb083d (patch) | |
tree | 32b383fd9ddd1a5ef9e6258e14a5f30c7a87c19b /gcc/reload1.c | |
parent | 3586684a348459fa8910480ce45362199202aa97 (diff) | |
download | ppe42-gcc-ed95639b16caac0d8dfc30cdeb0d232045fb083d.tar.gz ppe42-gcc-ed95639b16caac0d8dfc30cdeb0d232045fb083d.zip |
(emit_reload_insns): Don't update the status of a register from an
input reload if it also has an output reload.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@3994 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index e6302c211cd..bcbd68f5916 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -6148,11 +6148,15 @@ emit_reload_insns (insn) } } - /* Maybe the spill reg contains a copy of reload_in. */ + /* Maybe the spill reg contains a copy of reload_in. Only do + something if there will not be an output reload for + the register being reloaded. */ else if (reload_out[r] == 0 && reload_in[r] != 0 - && (GET_CODE (reload_in[r]) == REG - || GET_CODE (reload_in_reg[r]) == REG)) + && ((GET_CODE (reload_in[r]) == REG + && ! reg_has_output_reload[REGNO (reload_in[r])] + || (GET_CODE (reload_in_reg[r]) == REG + && ! reg_has_output_reload[REGNO (reload_in_reg[r])])))) { register int nregno; int nnr; |