re PR tree-optimization/46590 (long compile time with -O2 and many loops)

PR tree-optimization/46590
	* tree-cfg.c (gimple_duplicate_sese_region): Don't update
	SSA web here ...
	* tree-ssa-loop-ch.c (copy_loop_headers): ... but here.

From-SVN: r190897
This commit is contained in:
Michael Matz 2012-09-03 15:39:15 +00:00 committed by Michael Matz
parent 1d85ac834e
commit 197ce79334
3 changed files with 12 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2012-09-03 Michael Matz <matz@suse.de>
PR tree-optimization/46590
* tree-cfg.c (gimple_duplicate_sese_region): Don't update
SSA web here ...
* tree-ssa-loop-ch.c (copy_loop_headers): ... but here.
2012-09-03 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi: Fix numerous typos and punctuation/grammatical

View File

@ -5530,9 +5530,10 @@ add_phi_args_after_copy (basic_block *region_copy, unsigned n_region,
important exit edge EXIT. By important we mean that no SSA name defined
inside region is live over the other exit edges of the region. All entry
edges to the region must go to ENTRY->dest. The edge ENTRY is redirected
to the duplicate of the region. SSA form, dominance and loop information
is updated. The new basic blocks are stored to REGION_COPY in the same
order as they had in REGION, provided that REGION_COPY is not NULL.
to the duplicate of the region. Dominance and loop information is
updated, but not the SSA web. The new basic blocks are stored to
REGION_COPY in the same order as they had in REGION, provided that
REGION_COPY is not NULL.
The function returns false if it is unable to copy the region,
true otherwise. */
@ -5593,8 +5594,6 @@ gimple_duplicate_sese_region (edge entry, edge exit,
free_region_copy = true;
}
gcc_assert (!need_ssa_update_p (cfun));
/* Record blocks outside the region that are dominated by something
inside. */
doms = NULL;
@ -5663,9 +5662,6 @@ gimple_duplicate_sese_region (edge entry, edge exit,
/* Add the other PHI node arguments. */
add_phi_args_after_copy (region_copy, n_region, NULL);
/* Update the SSA web. */
update_ssa (TODO_update_ssa);
if (free_region_copy)
free (region_copy);

View File

@ -241,6 +241,7 @@ copy_loop_headers (void)
split_edge (loop_latch_edge (loop));
}
update_ssa (TODO_update_ssa);
free (bbs);
free (copied_bbs);