On Fri, Sep 22, 2017 at 11:37:53AM +0000, Bin Cheng wrote: > diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c > index d6ba305..6ad0b75 100644 > --- a/gcc/tree-ssa-loop-manip.c > +++ b/gcc/tree-ssa-loop-manip.c > @@ -690,48 +690,62 @@ rewrite_virtuals_into_loop_closed_ssa (struct loop > *loop) > rewrite_into_loop_closed_ssa_1 (NULL, 0, SSA_OP_VIRTUAL_USES, loop); > }
> -/* Checks invariants of loop closed ssa form in statement STMT in BB. */ > +/* Checks invariants of loop closed ssa form in BB. */ > > static void > -check_loop_closed_ssa_stmt (basic_block bb, gimple *stmt) > +check_loop_closed_ssa_bb (basic_block bb) > { > - ssa_op_iter iter; > - tree var; > + for (gphi_iterator bsi = gsi_start_phis (bb); !gsi_end_p (bsi); > + gsi_next (&bsi)) > + { > + gphi *phi = bsi.phi (); > > - if (is_gimple_debug (stmt)) > - return; > + if (!virtual_operand_p (PHI_RESULT (phi))) > + check_loop_closed_ssa_def (bb, PHI_RESULT (phi)); > + } > + > + for (gimple_stmt_iterator bsi = gsi_start_bb (bb); !gsi_end_p (bsi); > + gsi_next (&bsi)) > + { > + ssa_op_iter iter; > + tree var; > + gimple *stmt = gsi_stmt (bsi); > + > + if (is_gimple_debug (stmt)) > + continue; for (gimple_stmt_iterator bsi = gsi_start_nondebug_after_labels_bb (bb); !gsi_end_p (bsi); gsi_next_nondebug (&bsi)) ? > > - FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_USE) > - check_loop_closed_ssa_use (bb, var); > + FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_DEF) > + check_loop_closed_ssa_def (bb, var); > + } > }