[Bug rtl-optimization/17513] [4.0 Regression] ICE: verify_flow_info failed after gcse
steven at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Sep 16 08:50:00 GMT 2004
------- Additional Comments From steven at gcc dot gnu dot org 2004-09-16 08:49 -------
Probably need a patch like this,
Index: cfgexpand.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgexpand.c,v
retrieving revision 2.23
diff -c -3 -p -r2.23 cfgexpand.c
*** cfgexpand.c 11 Sep 2004 20:07:11 -0000 2.23
--- cfgexpand.c 16 Sep 2004 08:48:55 -0000
*************** static basic_block
*** 1082,1092 ****
construct_init_block (void)
{
basic_block init_block, first_block;
! edge e;
! for (e = ENTRY_BLOCK_PTR->succ; e; e = e->succ_next)
! if (e->dest == ENTRY_BLOCK_PTR->next_bb)
! break;
init_block = create_basic_block (NEXT_INSN (get_insns ()),
get_last_insn (),
--- 1082,1102 ----
construct_init_block (void)
{
basic_block init_block, first_block;
! edge e = NULL, e2;
! for (e2 = ENTRY_BLOCK_PTR->succ; e2; e2 = e2->succ_next)
! {
! /* Clear EDGE_EXECUTABLE. This flag is never used in the backend.
!
! For all other blocks this edge flag is cleared while expanding
! a basic block in expand_gimple_basic_block, but there we never
! looked at the successors of the entry block.
! This caused PR17513. */
! e2->flags &= ~EDGE_EXECUTABLE;
!
! if (e2->dest == ENTRY_BLOCK_PTR->next_bb)
! e = e2;
! }
init_block = create_basic_block (NEXT_INSN (get_insns ()),
get_last_insn (),
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17513
More information about the Gcc-bugs
mailing list