From: Seongbae Park Date: Mon, 18 Jun 2007 20:49:23 +0000 (+0000) Subject: re PR middle-end/32321 (ICE in df_refs_verify with -fgcse-sm) X-Git-Tag: releases/gcc-4.3.0~4400 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bfff9190695b229b6d0c9432e4c0f4b12401841d;p=thirdparty%2Fgcc.git re PR middle-end/32321 (ICE in df_refs_verify with -fgcse-sm) 2007-06-18 Seongbae Park PR rtl-optimization/32321 * gcse.c (replace_store_insn): Update the note before calling emit_insn_after. From-SVN: r125827 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 191d3474eb26..6cc09bd22f23 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-06-18 Seongbae Park + + PR rtl-optimization/32321 + * gcse.c (replace_store_insn): Update the note before + calling emit_insn_after. + 2007-06-18 David Daney 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) @@ -6379,6 +6368,20 @@ replace_store_insn (rtx reg, rtx del, basic_block bb, struct ls_expr *smexpr) XEXP (note, 0) = insn; } + /* Emit the insn AFTER all the notes are transferred. + This is cheaper since we avoid df rescanning for the note change. */ + 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;