https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66794

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2015-07-08
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
   Target Milestone|---                         |6.0
            Summary|ICE at -O2 and -O3 on       |[6 Regression] ICE at -O2
                   |x86_64-linux-gnu            |and -O3 on x86_64-linux-gnu
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
So this means post-dominators are corrupt at then entry to DSE.  Usually passes
should always release post-dominators - it seems there is at least one that
fails to do that.  isolate-paths in this case.  Passes are not good at making
sure
to release post-dom-info when they invalidate it.

The regression is due to extra checking.

Index: gcc/gimple-ssa-isolate-paths.c
===================================================================
--- gcc/gimple-ssa-isolate-paths.c      (revision 225504)
+++ gcc/gimple-ssa-isolate-paths.c      (working copy)
@@ -501,10 +501,10 @@ gimple_ssa_isolate_erroneous_paths (void
   /* We scramble the CFG and loop structures a bit, clean up
      appropriately.  We really should incrementally update the
      loop structures, in theory it shouldn't be that hard.  */
+  free_dominance_info (CDI_POST_DOMINATORS);
   if (cfg_altered)
     {
       free_dominance_info (CDI_DOMINATORS);
-      free_dominance_info (CDI_POST_DOMINATORS);
       loops_state_set (LOOPS_NEED_FIXUP);
       return TODO_cleanup_cfg | TODO_update_ssa;
     }

fixes it.

Reply via email to