aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-03-05 14:36:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-03-05 14:36:18 +0000
commitcd7d9fd77bf49f5437ec9abe5e25af3820b200c4 (patch)
tree179e8e98a6c7b2d2d5a67c3d57f385997eec7a50 /gcc
parentb55f62ccae9766c687dea6afc60f701a4490b0f1 (diff)
downloadgcc-cd7d9fd77bf49f5437ec9abe5e25af3820b200c4.zip
gcc-cd7d9fd77bf49f5437ec9abe5e25af3820b200c4.tar.gz
gcc-cd7d9fd77bf49f5437ec9abe5e25af3820b200c4.tar.bz2
cfgexpand.c (gimple_expand_cfg): Free dominator info.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cfgexpand.c2
-rw-r--r--gcc/tree-if-conv.c3
-rw-r--r--gcc/tree-parloops.c4
4 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 983c092..444e5149 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index bde15f6..2f38bb4 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -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);
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index ca9503f..99f3a9b 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -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
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 0ae5d44..e791ac3 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -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;
}