------- Comment #2 from spark at gcc dot gnu dot org 2007-06-14 19:49 ------- The problem is reproducible also on x86-64. The following patch seems to fix the ICE. I'll start a bootstrap/testing.
*** /tmp/gcse.c 2007-06-14 19:46:27.000000000 +0000 --- gcc/gcse.c 2007-06-14 19:44:19.000000000 +0000 *************** replace_store_insn (rtx reg, rtx del, ba *** 6341,6357 **** mem = smexpr->pattern; insn = gen_move_insn (reg, SET_SRC (single_set (del))); - insn = emit_insn_after (insn, del); - - if (dump_file) - { - fprintf (dump_file, - "STORE_MOTION delete insn in BB %d:\n ", bb->index); - print_inline_rtx (dump_file, del, 6); - fprintf (dump_file, "\nSTORE MOTION replaced with insn:\n "); - print_inline_rtx (dump_file, insn, 6); - fprintf (dump_file, "\n"); - } for (ptr = ANTIC_STORE_LIST (smexpr); ptr; ptr = XEXP (ptr, 1)) if (XEXP (ptr, 0) == del) --- 6341,6346 ---- *************** replace_store_insn (rtx reg, rtx del, ba *** 6379,6384 **** --- 6368,6385 ---- XEXP (note, 0) = insn; } + insn = emit_insn_after (insn, del); + + if (dump_file) + { + fprintf (dump_file, + "STORE_MOTION delete insn in BB %d:\n ", bb->index); + print_inline_rtx (dump_file, del, 6); + fprintf (dump_file, "\nSTORE MOTION replaced with insn:\n "); + print_inline_rtx (dump_file, insn, 6); + fprintf (dump_file, "\n"); + } + delete_insn (del); /* Now we must handle REG_EQUAL notes whose contents is equal to the mem; -- spark at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |spark at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2007-06-14 19:49:10 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32321