[Bug middle-end/60221] [4.7/4.8/4.9 Regression] gcc -fexceptions generates unnecessary cleanup code

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Feb 18 10:41:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60221

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Note that we do run ehcleanup2 at -O0, but we have EH unsplitting and empty
EH removal disabled if not optimizing.

So we could simply do

Index: tree-eh.c
===================================================================
--- tree-eh.c   (revision 207837)
+++ tree-eh.c   (working copy)
@@ -4557,11 +4557,12 @@ execute_cleanup_eh_1 (void)
   remove_unreachable_handlers ();

   /* Watch out for the region tree vanishing due to all unreachable.  */
-  if (cfun->eh->region_tree && optimize)
+  if (cfun->eh->region_tree)
     {
       bool changed = false;

-      changed |= unsplit_all_eh ();
+      if (optimize)
+       changed |= unsplit_all_eh ();
       changed |= cleanup_all_empty_eh ();

       if (changed)

Testing that.



More information about the Gcc-bugs mailing list