diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1999-03-05 13:43:54 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1999-03-05 13:43:54 +0000 |
commit | d62dab419ae48694fd0395486af7db60c9b2ac87 (patch) | |
tree | e1ec2eccce555391e000bc6b5bab2a5df95f255d | |
parent | b85f4db33be40039bdd4c879740de37e956623d8 (diff) | |
download | gcc-d62dab419ae48694fd0395486af7db60c9b2ac87.zip gcc-d62dab419ae48694fd0395486af7db60c9b2ac87.tar.gz gcc-d62dab419ae48694fd0395486af7db60c9b2ac87.tar.bz2 |
reload1.c (emit_reload_insns): If pseudo that can't be replaced with its equivalent constant...
* reload1.c (emit_reload_insns): If pseudo that can't be replaced
with its equivalent constant, fall back to reload_in.
From-SVN: r25604
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/reload1.c | 23 |
2 files changed, 20 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7058aba..968ea5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Mar 5 21:41:07 1999 J"orn Rennecke <amylaar@cygnus.co.uk> + + * reload1.c (emit_reload_insns): If pseudo that can't be replaced + with its equivalent constant, fall back to reload_in. + Fri Mar 5 13:20:39 1999 Richard Henderson <rth@cygnus.com> * Makefile.in: Delete .flow2 debugging files. diff --git a/gcc/reload1.c b/gcc/reload1.c index a9bed7a..97bc998 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -6815,13 +6815,16 @@ emit_reload_insns (chain) See comments in get_secondary_reload in reload.c. */ /* If it is a pseudo that cannot be replaced with its equivalent MEM, we must fall back to reload_in, which - will have all the necessary substitutions registered. */ + will have all the necessary substitutions registered. + Likewise for a pseudo that can't be replaced with its + equivalent constant. */ if (GET_CODE (oldequiv) == REG && REGNO (oldequiv) >= FIRST_PSEUDO_REGISTER - && reg_equiv_memory_loc[REGNO (oldequiv)] != 0) + && (reg_equiv_memory_loc[REGNO (oldequiv)] != 0 + || reg_equiv_constant[REGNO (oldequiv)] != 0)) { - if (reg_equiv_address[REGNO (oldequiv)] + if (! reg_equiv_mem[REGNO (oldequiv)] || num_not_at_initial_offset) real_oldequiv = reload_in[j]; else @@ -6830,9 +6833,10 @@ emit_reload_insns (chain) if (GET_CODE (old) == REG && REGNO (old) >= FIRST_PSEUDO_REGISTER - && reg_equiv_memory_loc[REGNO (old)] != 0) + && (reg_equiv_memory_loc[REGNO (old)] != 0 + || reg_equiv_constant[REGNO (old)] != 0)) { - if (reg_equiv_address[REGNO (old)] + if (! reg_equiv_mem[REGNO (old)] || num_not_at_initial_offset) real_old = reload_in[j]; else @@ -6938,13 +6942,16 @@ emit_reload_insns (chain) if ((GET_CODE (oldequiv) == REG && REGNO (oldequiv) >= FIRST_PSEUDO_REGISTER - && reg_equiv_memory_loc[REGNO (oldequiv)] != 0) + && (reg_equiv_memory_loc[REGNO (oldequiv)] != 0 + || reg_equiv_constant[REGNO (oldequiv)] != 0)) || (GET_CODE (oldequiv) == SUBREG && GET_CODE (SUBREG_REG (oldequiv)) == REG && (REGNO (SUBREG_REG (oldequiv)) >= FIRST_PSEUDO_REGISTER) - && (reg_equiv_memory_loc - [REGNO (SUBREG_REG (oldequiv))] != 0))) + && ((reg_equiv_memory_loc + [REGNO (SUBREG_REG (oldequiv))] != 0) + || (reg_equiv_constant + [REGNO (SUBREG_REG (oldequiv))] != 0)))) real_oldequiv = reload_in[j]; gen_reload (reloadreg, real_oldequiv, reload_opnum[j], reload_when_needed[j]); |