cfgexpand.c (gimple_expand_cfg): Free dominator info.
authorRichard Guenther <rguenther@suse.de>
Mon, 5 Mar 2012 14:36:18 +0000 (14:36 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 5 Mar 2012 14:36:18 +0000 (14:36 +0000)
2012-03-05  Richard Guenther  <rguenther@suse.de>

* cfgexpand.c (gimple_expand_cfg): Free dominator info.
* tree-if-conv.c (combine_blocks): Free post-dominator info
after breaking it.
* tree-parloops.c (create_parallel_loop): Free and re-compute
dominator info after breaking it.

From-SVN: r184933

gcc/ChangeLog
gcc/cfgexpand.c
gcc/tree-if-conv.c
gcc/tree-parloops.c

index 983c092..444e514 100644 (file)
@@ -1,5 +1,13 @@
 2012-03-05  Richard Guenther  <rguenther@suse.de>
 
+       * cfgexpand.c (gimple_expand_cfg): Free dominator info.
+       * tree-if-conv.c (combine_blocks): Free post-dominator info
+       after breaking it.
+       * tree-parloops.c (create_parallel_loop): Free and re-compute
+       dominator info after breaking it.
+
+2012-03-05  Richard Guenther  <rguenther@suse.de>
+
        PR middle-end/52353
        * optabs.h (trapv_unoptab_p): New function.
        (trapv_binoptab_p): Likewise.
index bde15f6..2f38bb4 100644 (file)
@@ -4362,6 +4362,8 @@ gimple_expand_cfg (void)
 
   /* Some backends want to know that we are expanding to RTL.  */
   currently_expanding_to_rtl = 1;
+  /* Dominators are not kept up-to-date as we may create new basic-blocks.  */
+  free_dominance_info (CDI_DOMINATORS);
 
   rtl_profile_for_bb (ENTRY_BLOCK_PTR);
 
index ca9503f..99f3a9b 100644 (file)
@@ -1712,6 +1712,9 @@ combine_blocks (struct loop *loop)
 
   free (ifc_bbs);
   ifc_bbs = NULL;
+
+  /* Post-dominators are corrupt now.  */
+  free_dominance_info (CDI_POST_DOMINATORS);
 }
 
 /* If-convert LOOP when it is legal.  For the moment this pass has no
index 0ae5d44..e791ac3 100644 (file)
@@ -1740,6 +1740,10 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
   gimple_set_location (stmt, loc);
   gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
 
+  /* After the above dom info is hosed.  Re-compute it.  */
+  free_dominance_info (CDI_DOMINATORS);
+  calculate_dominance_info (CDI_DOMINATORS);
+
   return paral_bb;
 }