* reload1.c (reload_reg_free_for_value_p): When considered reload
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Nov 1998 14:26:40 +0000 (14:26 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Nov 1998 14:26:40 +0000 (14:26 +0000)
has an output, matching inputs are not sufficient to avoid conflict.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23687 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload1.c

index 42e8abd..bb0fe6b 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 f21b622..1dff782 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;
            }
        }