From 8a5db2b4c44e89eef899f0fceffa00452c17ffd0 Mon Sep 17 00:00:00 2001 From: James E Wilson Date: Fri, 6 Jun 2003 22:33:00 -0700 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/reload1.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 02ba7eaf1ef..139862087eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-06-06 James E Wilson + + PR inline-asm/10890 + * reload1.c (merge_assigned_reloads): Abort only if two reloads have + different in fields. + 2003-06-06 Nathanael Nerode * configure.in: Make $(target_subdir) correspond with top level usage. diff --git a/gcc/reload1.c b/gcc/reload1.c index 159a88db232..79ce9a1e809 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 (); } } -- 2.30.2