aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1999-03-05 13:43:54 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1999-03-05 13:43:54 +0000
commitd62dab419ae48694fd0395486af7db60c9b2ac87 (patch)
treee1ec2eccce555391e000bc6b5bab2a5df95f255d
parentb85f4db33be40039bdd4c879740de37e956623d8 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/reload1.c23
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]);