aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames E Wilson <wilson@tuliptree.org>2003-06-06 22:33:00 -0700
committerJim Wilson <wilson@gcc.gnu.org>2003-06-06 22:33:00 -0700
commit8a5db2b4c44e89eef899f0fceffa00452c17ffd0 (patch)
tree54e9cc5ba3d9ce15fec79fe383c7a6eda5dbe0e1 /gcc
parent6a1b7268b91524e10f4d5f89d003657e34bc5a1a (diff)
downloadgcc-8a5db2b4c44e89eef899f0fceffa00452c17ffd0.zip
gcc-8a5db2b4c44e89eef899f0fceffa00452c17ffd0.tar.gz
gcc-8a5db2b4c44e89eef899f0fceffa00452c17ffd0.tar.bz2
re PR inline-asm/10890 (ICE in merge_assigned_reloads building Linux 2.4.2x sched.c)
PR inline-asm/10890 * reload1.c (merge_assigned_reloads): Abort only if two reloads have different in fields. From-SVN: r67577
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload1.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 02ba7ea..1398620 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 159a88d..79ce9a1 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -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 ();
}
}