From: John David Anglin Date: Mon, 23 May 2011 22:31:55 +0000 (+0000) Subject: re PR rtl-optimization/49007 (ICE in extract_true_false_edges_from_block at tree... X-Git-Tag: releases/gcc-4.4.7~390 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f397dbd3df2e9d8a2c87440b099867ce35b704d;p=thirdparty%2Fgcc.git re PR rtl-optimization/49007 (ICE in extract_true_false_edges_from_block at tree-cfg.c:7379) PR rtl-optimization/49007 Backport from mainline: 2009-11-30 Hans-Peter Nilsson PR rtl-optimization/40086 * reorg.c (relax_delay_slots): When looking for redundant insn at the branch target, use next_real_insn, not next_active_insn. From-SVN: r174090 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e682781eb696..aa62865d75d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-05-23 John David Anglin + + PR rtl-optimization/49007 + Backport from mainline: + 2009-11-30 Hans-Peter Nilsson + + PR rtl-optimization/40086 + * reorg.c (relax_delay_slots): When looking for redundant insn at + the branch target, use next_real_insn, not next_active_insn. + 2011-05-21 Eric Botcazou * config/sparc/sparc.md (setjmp): Handle PIC mode and use the hard diff --git a/gcc/reorg.c b/gcc/reorg.c index adab945f7682..2f2b0bac8d64 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3499,8 +3499,11 @@ relax_delay_slots (rtx first) } /* If the first insn at TARGET_LABEL is redundant with a previous - insn, redirect the jump to the following insn process again. */ - trial = next_active_insn (target_label); + insn, redirect the jump to the following insn and process again. + We use next_real_insn instead of next_active_insn so we + don't skip USE-markers, or we'll end up with incorrect + liveness info. */ + trial = next_real_insn (target_label); if (trial && GET_CODE (PATTERN (trial)) != SEQUENCE && redundant_insn (trial, insn, 0) && ! can_throw_internal (trial))