http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45874
Martin Jambor <jamborm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #2 from Martin Jambor <jamborm at gcc dot gnu.org> 2010-10-12 12:27:23 UTC --- Something in the ipa-cp/ipa-inline transform machinery leaves stray eh cfg edges. Calling gimple_purge_dead_eh_edges() unconditionally in ipa-transform makes the ICE go away. For example the following patch does: Index: gcc/tree-optimize.c =================================================================== --- gcc/tree-optimize.c (revision 165301) +++ gcc/tree-optimize.c (working copy) @@ -283,8 +283,8 @@ execute_fixup_cfg (void) todo |= TODO_cleanup_cfg; } - if (maybe_clean_eh_stmt (stmt) - && gimple_purge_dead_eh_edges (bb)) + maybe_clean_eh_stmt (stmt); + if (gimple_purge_dead_eh_edges (bb)) todo |= TODO_cleanup_cfg; } Nevertheless, I'd like to find out where we either call maybe_clean_eh_stmt or do something equivalent without removing the cfg edges before deciding where we should do it.