diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1998-11-17 14:26:40 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1998-11-17 14:26:40 +0000 |
commit | 25963977c642eeb1d748dfe3a69b83317eb7493a (patch) | |
tree | d6565bd83f98b118a62a9931b2a49d3b3ae32938 /gcc | |
parent | 7ddedda4aad83dfc9e1f02e642bcafa2aa277045 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/reload1.c | 8 |
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; } } |