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.

Reply via email to