diff options
author | Richard Guenther <rguenther@suse.de> | 2012-03-05 14:36:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-03-05 14:36:18 +0000 |
commit | cd7d9fd77bf49f5437ec9abe5e25af3820b200c4 (patch) | |
tree | 179e8e98a6c7b2d2d5a67c3d57f385997eec7a50 | |
parent | b55f62ccae9766c687dea6afc60f701a4490b0f1 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 2 | ||||
-rw-r--r-- | gcc/tree-if-conv.c | 3 | ||||
-rw-r--r-- | gcc/tree-parloops.c | 4 |
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; } |