diff options
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 58 |
1 files changed, 12 insertions, 46 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index eb53945f2d1..5e3f3619d14 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -1578,25 +1578,13 @@ fail: static void find_invariants_stmt (struct ivopts_data *data, tree stmt) { - use_optype uses = NULL; - unsigned i, n; + ssa_op_iter iter; + use_operand_p use_p; tree op; - if (TREE_CODE (stmt) == PHI_NODE) - n = PHI_NUM_ARGS (stmt); - else - { - uses = STMT_USE_OPS (stmt); - n = NUM_USES (uses); - } - - for (i = 0; i < n; i++) + FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, iter, SSA_OP_USE) { - if (TREE_CODE (stmt) == PHI_NODE) - op = PHI_ARG_DEF (stmt, i); - else - op = USE_OP (uses, i); - + op = USE_FROM_PTR (use_p); record_invariant (data, op, false); } } @@ -1608,8 +1596,8 @@ find_interesting_uses_stmt (struct ivopts_data *data, tree stmt) { struct iv *iv; tree op, lhs, rhs; - use_optype uses = NULL; - unsigned i, n; + ssa_op_iter iter; + use_operand_p use_p; find_invariants_stmt (data, stmt); @@ -1677,20 +1665,9 @@ find_interesting_uses_stmt (struct ivopts_data *data, tree stmt) return; } - if (TREE_CODE (stmt) == PHI_NODE) - n = PHI_NUM_ARGS (stmt); - else - { - uses = STMT_USE_OPS (stmt); - n = NUM_USES (uses); - } - - for (i = 0; i < n; i++) + FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, iter, SSA_OP_USE) { - if (TREE_CODE (stmt) == PHI_NODE) - op = PHI_ARG_DEF (stmt, i); - else - op = USE_OP (uses, i); + op = USE_FROM_PTR (use_p); if (TREE_CODE (op) != SSA_NAME) continue; @@ -5577,22 +5554,11 @@ protect_loop_closed_ssa_form_use (edge exit, use_operand_p op_p) static void protect_loop_closed_ssa_form (edge exit, tree stmt) { - use_optype uses; - vuse_optype vuses; - v_may_def_optype v_may_defs; - unsigned i; - - uses = STMT_USE_OPS (stmt); - for (i = 0; i < NUM_USES (uses); i++) - protect_loop_closed_ssa_form_use (exit, USE_OP_PTR (uses, i)); - - vuses = STMT_VUSE_OPS (stmt); - for (i = 0; i < NUM_VUSES (vuses); i++) - protect_loop_closed_ssa_form_use (exit, VUSE_OP_PTR (vuses, i)); + ssa_op_iter iter; + use_operand_p use_p; - v_may_defs = STMT_V_MAY_DEF_OPS (stmt); - for (i = 0; i < NUM_V_MAY_DEFS (v_may_defs); i++) - protect_loop_closed_ssa_form_use (exit, V_MAY_DEF_OP_PTR (v_may_defs, i)); + FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_ALL_USES) + protect_loop_closed_ssa_form_use (exit, use_p); } /* STMTS compute a value of a phi argument OP on EXIT of a loop. Arrange things |