http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56113
--- Comment #17 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-30 15:40:57 UTC --- (In reply to comment #16) > The following (old!?) idea helps though: > > Index: gcc/tree-ssa-loop-manip.c > =================================================================== > --- gcc/tree-ssa-loop-manip.c (revision 195574) > +++ gcc/tree-ssa-loop-manip.c (working copy) > @@ -536,7 +536,7 @@ rewrite_into_loop_closed_ssa (bitmap cha > > /* Fix up all the names found to be used outside their original > loops. */ > - update_ssa (TODO_update_ssa); > + update_ssa (TODO_update_ssa_no_phi); > } > > /* Check invariants of the loop closed ssa form for the USE in BB. */ > > why would adding a copy on an edge (thus a new def) require us to insert > new PHI nodes? With that patch: > > tree SSA incremental : 0.06 ( 0%) usr > TOTAL : 46.36 > > Of course I must not remember sth here ... Multiple exits. Btw, it's all virtual loop-closed PHI nodes we insert. Thus, reverting 2012-08-23 Richard Guenther <rguent...@suse.de> * tree-ssa-loop-manip.c (add_exit_phis_var): Allow virtual operands. (find_uses_to_rename_use): Likewise. (find_uses_to_rename_bb): Likewise. (find_uses_to_rename_stmt): Walk over all operands. improves compile-time here (until somebody fixes the testcase so there is a real use on each exit).