reload1.c (reload_reg_free_for_value_p): When considered reload has an output...
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Tue, 17 Nov 1998 14:26:40 +0000 (14:26 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Tue, 17 Nov 1998 14:26:40 +0000 (14:26 +0000)
* 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

gcc/ChangeLog
gcc/reload1.c

index 42e8abd6a2dc614a7008dea02ad5a8dd9ca96ba2..bb0fe6bf6c8bb03b780c1edb18ca5c0391d51244 100644 (file)
@@ -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.
index f21b6223fb4bbd4e3d5a8525bcab207c82d2b59e..1dff782e1df9c8c83e58865c6c8c1c3c3f716bd3 100644 (file)
@@ -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;
            }
        }