diff options
author | Marc Espie <espie@cvs.openbsd.org> | 1999-07-22 20:09:56 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 1999-07-22 20:09:56 +0000 |
commit | c8d99a034c0433d663255476b39af4a7ed758f0d (patch) | |
tree | 4638c3cb7d6ba8fd7bb4cb81d27af1df703d3179 /gnu/egcs/gcc/reload.c | |
parent | c93f59c4d504ed124659cc25a2730d447a1c8c1d (diff) |
990718, very close to release.
testsuite temporarily removed from snapshots because of copyright checks.
Diffstat (limited to 'gnu/egcs/gcc/reload.c')
-rw-r--r-- | gnu/egcs/gcc/reload.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gnu/egcs/gcc/reload.c b/gnu/egcs/gcc/reload.c index 011f89955c6..d8b41363d36 100644 --- a/gnu/egcs/gcc/reload.c +++ b/gnu/egcs/gcc/reload.c @@ -3803,11 +3803,16 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) (insn_code_number < 0 ? 0 : insn_operand_strict_low[insn_code_number][i]), 1, i, operand_type[i]); - /* If a memory reference remains, yet we can't make an optional + /* If a memory reference remains (either as a MEM or a pseudo that + did not get a hard register), yet we can't make an optional reload, check if this is actually a pseudo register reference; we then need to emit a USE and/or a CLOBBER so that reload inheritance will do the right thing. */ - else if (replace && GET_CODE (operand) == MEM) + else if (replace + && (GET_CODE (operand) == MEM + || (GET_CODE (operand) == REG + && REGNO (operand) >= FIRST_PSEUDO_REGISTER + && reg_renumber [REGNO (operand)] < 0))) { operand = *recog_operand_loc[i]; |