From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31770 invoked by alias); 1 Jul 2009 15:47:26 -0000 Received: (qmail 31717 invoked by uid 48); 1 Jul 2009 15:47:10 -0000 Date: Wed, 01 Jul 2009 15:47:00 -0000 Message-ID: <20090701154710.31716.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/39886] [4.5 Regression] ICE in purge_dead_edges, at cfgrtl.c:2274 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "bonzini at gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-07/txt/msg00065.txt.bz2 ------- Comment #3 from bonzini at gnu dot org 2009-07-01 15:47 ------- Honza, this worked for me: Index: combine.c =================================================================== --- combine.c (revision 149135) +++ combine.c (working copy) @@ -2173,12 +2173,13 @@ update_cfg_for_uncondjump (rtx insn) { basic_block bb = BLOCK_FOR_INSN (insn); + bool at_end = (BB_END (bb) == insn); - if (BB_END (bb) == insn) + if (at_end) purge_dead_edges (bb); delete_insn (insn); - if (EDGE_COUNT (bb->succs) == 1) + if (at_end && EDGE_COUNT (bb->succs) == 1) single_succ_edge (bb)->flags |= EDGE_FALLTHRU; } Would you mind seeing if your patch was the same? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39886