summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
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 983c0924451..444e514977e 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 bde15f69683..2f38bb4ee85 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 ca9503f3e47..99f3a9b3bd9 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 0ae5d444e67..e791ac3ed49 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;
}