re PR inline-asm/10890 (ICE in merge_assigned_reloads building Linux 2.4.2x sched.c)
authorJames E Wilson <wilson@tuliptree.org>
Sat, 7 Jun 2003 05:33:00 +0000 (22:33 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Sat, 7 Jun 2003 05:33:00 +0000 (22:33 -0700)
PR inline-asm/10890
* reload1.c (merge_assigned_reloads): Abort only if two reloads have
different in fields.

From-SVN: r67577

gcc/ChangeLog
gcc/reload1.c

index 02ba7ea..1398620 100644 (file)
@@ -1,3 +1,9 @@
+2003-06-06  James E Wilson  <wilson@tuliptree.org>
+
+       PR inline-asm/10890
+       * reload1.c (merge_assigned_reloads): Abort only if two reloads have
+       different in fields.
+
 2003-06-06  Nathanael Nerode  <neroden@gcc.gnu.org>
 
        * configure.in: Make $(target_subdir) correspond with top level usage.
index 159a88d..79ce9a1 100644 (file)
@@ -6138,13 +6138,15 @@ merge_assigned_reloads (insn)
                       ? RELOAD_FOR_OTHER_ADDRESS : RELOAD_OTHER);
 
                  /* Check to see if we accidentally converted two reloads
-                    that use the same reload register to the same type.
-                    If so, the resulting code won't work, so abort.  */
+                    that use the same reload register with different inputs
+                    to the same type.  If so, the resulting code won't work,
+                    so abort.  */
                  if (rld[j].reg_rtx)
                    for (k = 0; k < j; k++)
                      if (rld[k].in != 0 && rld[k].reg_rtx != 0
                          && rld[k].when_needed == rld[j].when_needed
-                         && rtx_equal_p (rld[k].reg_rtx, rld[j].reg_rtx))
+                         && rtx_equal_p (rld[k].reg_rtx, rld[j].reg_rtx)
+                         && ! rtx_equal_p (rld[k].in, rld[j].in))
                        abort ();
                }
        }