aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2005-12-23 00:19:49 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2005-12-23 00:19:49 +0100
commita5ee7cbac40b8ba95e6f17ddb93de7dda42a4a76 (patch)
tree8f81b8ae34b7f06c2308e23acc8f1703b67d349b /gcc/reload1.c
parent0c4fc6c9ed572c2a5332fd37fdcedefb7778f2bb (diff)
downloadgcc-a5ee7cbac40b8ba95e6f17ddb93de7dda42a4a76.zip
gcc-a5ee7cbac40b8ba95e6f17ddb93de7dda42a4a76.tar.gz
gcc-a5ee7cbac40b8ba95e6f17ddb93de7dda42a4a76.tar.bz2
re PR rtl-optimization/25432 (Reload ICE in gen_add2_insn)
PR rtl-optimization/25432 * reload1.c (eliminate_regs_in_insn): Update insn code on successfully re-recognizing modified insn. * gcc.c-torture/compile/20051216-1.c: New test. From-SVN: r108985
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 6494637..01943f3 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -1831,8 +1831,6 @@ find_reload_regs (struct insn_chain *chain)
&& rld[r].regno == -1)
if (! find_reg (chain, i))
{
- if (dump_file)
- fprintf (dump_file, "reload failure for reload %d\n", r);
spill_failure (chain->insn, rld[r].class);
failure = 1;
return;
@@ -1901,12 +1899,6 @@ spill_failure (rtx insn, enum reg_class class)
{
error ("unable to find a register to spill in class %qs",
reg_class_names[class]);
-
- if (dump_file)
- {
- fprintf (dump_file, "\nReloads for insn # %d\n", INSN_UID (insn));
- debug_reload_to_stream (dump_file);
- }
fatal_insn ("this is the insn:", insn);
}
}
@@ -3241,8 +3233,8 @@ eliminate_regs_in_insn (rtx insn, int replace)
|| GET_CODE (SET_SRC (old_set)) == PLUS))
{
int new_icode = recog (PATTERN (insn), insn, 0);
- if (new_icode < 0)
- INSN_CODE (insn) = icode;
+ if (new_icode >= 0)
+ INSN_CODE (insn) = new_icode;
}
}