diff options
author | Alan Modra <amodra@bigpond.net.au> | 2005-12-23 00:19:49 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2005-12-23 00:19:49 +0100 |
commit | a5ee7cbac40b8ba95e6f17ddb93de7dda42a4a76 (patch) | |
tree | 8f81b8ae34b7f06c2308e23acc8f1703b67d349b /gcc/reload1.c | |
parent | 0c4fc6c9ed572c2a5332fd37fdcedefb7778f2bb (diff) | |
download | gcc-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.c | 12 |
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; } } |