This reverts the change to go into loop-closed SSA form for virtual operands. Nothing relys on that and the verifier doesn't verify it works. Furthermore SSA updating will destroy loop-closed virtual SSA form very quickly. As the PR shows it can be quite costly to go into loop-closed SSA form for virtuals (50% of compile-time).
So the following patch reverts the change for now. Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2013-01-31 Richard Biener <rguent...@suse.de> PR tree-optimization/56150 * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Do not visit virtual operands. (find_uses_to_rename_bb): Likewise. Index: gcc/tree-ssa-loop-manip.c =================================================================== *** gcc/tree-ssa-loop-manip.c (revision 195574) --- gcc/tree-ssa-loop-manip.c (working copy) *************** find_uses_to_rename_stmt (gimple stmt, b *** 402,408 **** if (is_gimple_debug (stmt)) return; ! FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_ALL_USES) find_uses_to_rename_use (bb, var, use_blocks, need_phis); } --- 402,408 ---- if (is_gimple_debug (stmt)) return; ! FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_USE) find_uses_to_rename_use (bb, var, use_blocks, need_phis); } *************** find_uses_to_rename_bb (basic_block bb, *** 422,429 **** for (bsi = gsi_start_phis (e->dest); !gsi_end_p (bsi); gsi_next (&bsi)) { gimple phi = gsi_stmt (bsi); ! find_uses_to_rename_use (bb, PHI_ARG_DEF_FROM_EDGE (phi, e), ! use_blocks, need_phis); } for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi)) --- 422,430 ---- for (bsi = gsi_start_phis (e->dest); !gsi_end_p (bsi); gsi_next (&bsi)) { gimple phi = gsi_stmt (bsi); ! if (! virtual_operand_p (gimple_phi_result (phi))) ! find_uses_to_rename_use (bb, PHI_ARG_DEF_FROM_EDGE (phi, e), ! use_blocks, need_phis); } for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))