aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1998-11-17 14:26:40 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1998-11-17 14:26:40 +0000
commit25963977c642eeb1d748dfe3a69b83317eb7493a (patch)
treed6565bd83f98b118a62a9931b2a49d3b3ae32938 /gcc
parent7ddedda4aad83dfc9e1f02e642bcafa2aa277045 (diff)
downloadgcc-25963977c642eeb1d748dfe3a69b83317eb7493a.zip
gcc-25963977c642eeb1d748dfe3a69b83317eb7493a.tar.gz
gcc-25963977c642eeb1d748dfe3a69b83317eb7493a.tar.bz2
reload1.c (reload_reg_free_for_value_p): When considered reload has an output...
* reload1.c (reload_reg_free_for_value_p): When considered reload has an output, matching inputs are not sufficient to avoid conflict. From-SVN: r23687
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/reload1.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 42e8abd..bb0fe6b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Nov 17 22:25:16 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * reload1.c (reload_reg_free_for_value_p): When considered reload
+ has an output, matching inputs are not sufficient to avoid conflict.
+
Tue Nov 17 11:51:16 1998 Mark Mitchell <mark@markmitchell.com>
* hash.h (hash_table_key): New type.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index f21b622..1dff782 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5152,7 +5152,7 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
&& i != reloadnum)
{
if (! reload_in[i] || ! rtx_equal_p (reload_in[i], value)
- || reload_out[i])
+ || reload_out[i] || out)
{
int time2;
switch (reload_when_needed[i])
@@ -5246,8 +5246,10 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
default:
return 0;
}
- if (time1 >= time2
- || (out && time2 >= MAX_RECOG_OPERANDS * 4 + 4))
+ if ((time1 >= time2
+ && (! reload_in[i] || reload_out[i]
+ || ! rtx_equal_p (reload_in[i], value)))
+ || (out && time2 >= MAX_RECOG_OPERANDS * 4 + 3))
return 0;
}
}