diff options
Diffstat (limited to 'gcc')
-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 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; } |