diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2006-12-22 22:38:52 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-12-22 21:38:52 +0000 |
commit | 6e682d7ef0a60b540cb66389abff249dfe1ab5fd (patch) | |
tree | b06c0e8f9ec9f1eb10595d5ccba06c4ee8faa074 /gcc/tree-ssa-loop-ivopts.c | |
parent | 54129a64cd5ec8254cdf7cc735537f14cb3c27d7 (diff) | |
download | gcc-6e682d7ef0a60b540cb66389abff249dfe1ab5fd.zip gcc-6e682d7ef0a60b540cb66389abff249dfe1ab5fd.tar.gz gcc-6e682d7ef0a60b540cb66389abff249dfe1ab5fd.tar.bz2 |
tree-ssa-loop-niter.c (zero_p, nonzero_p): Removed.
* tree-ssa-loop-niter.c (zero_p, nonzero_p): Removed.
(number_of_iterations_ne, number_of_iterations_lt_to_ne,
assert_no_overflow_lt, assert_loop_rolls_lt,
number_of_iterations_lt, number_of_iterations_le,
number_of_iterations_cond, tree_simplify_using_condition_1,
number_of_iterations_exit, find_loop_niter, loop_niter_by_eval,
implies_nonnegative_p, implies_ge_p, record_nonwrapping_iv,
idx_infer_loop_bounds, n_of_executions_at_most, scev_probably_wraps_p):
Do not use zero_p/nonzero_p.
* tree-ssa-loop-manip.c (determine_exit_conditions): Ditto.
* tree-ssa-loop-ivopts.c (niter_for_exit, determine_biv_step,
find_interesting_uses_op, find_interesting_uses_cond,
find_interesting_uses_address, find_interesting_uses_stmt,
strip_offset_1, add_candidate_1, add_old_ivs_candidates,
difference_cost, determine_use_iv_cost_condition,
rewrite_use_compare, remove_unused_ivs): Ditto.
* tree-ssa-address.c (tree_mem_ref_addr, create_mem_ref_raw): Ditto.
* tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
* tree-cfg.c (find_taken_edge_cond_expr): Ditto.
* tree.h (zero_p): Declaration removed.
(null_or_integer_zerop, nonnull_and_integer_nonzerop): New.
From-SVN: r120156
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 1efaf99..5e70937 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -732,7 +732,7 @@ niter_for_exit (struct ivopts_data *data, edge exit) overlapping life ranges for them (PR 27283). */ if (number_of_iterations_exit (data->current_loop, exit, &desc, true) - && zero_p (desc.may_be_zero) + && integer_zerop (desc.may_be_zero) && !contains_abnormal_ssa_name_p (desc.niter)) nfe_desc->niter = desc.niter; else @@ -904,7 +904,7 @@ determine_biv_step (tree phi) if (!simple_iv (loop, phi, name, &iv, true)) return NULL_TREE; - return (zero_p (iv.step) ? NULL_TREE : iv.step); + return (null_or_integer_zerop (iv.step) ? NULL_TREE : iv.step); } /* Finds basic ivs. */ @@ -1160,7 +1160,7 @@ find_interesting_uses_op (struct ivopts_data *data, tree op) return use; } - if (zero_p (iv->step)) + if (null_or_integer_zerop (iv->step)) { record_invariant (data, op, true); return NULL; @@ -1224,21 +1224,23 @@ find_interesting_uses_cond (struct ivopts_data *data, tree stmt, tree *cond_p) (!iv0 || !iv1) /* Eliminating condition based on two ivs would be nontrivial. ??? TODO -- it is not really important to handle this case. */ - || (!zero_p (iv0->step) && !zero_p (iv1->step))) + || (!null_or_integer_zerop (iv0->step) + && !null_or_integer_zerop (iv1->step))) { find_interesting_uses_op (data, *op0_p); find_interesting_uses_op (data, *op1_p); return; } - if (zero_p (iv0->step) && zero_p (iv1->step)) + if (null_or_integer_zerop (iv0->step) + && null_or_integer_zerop (iv1->step)) { /* If both are invariants, this is a work for unswitching. */ return; } civ = XNEW (struct iv); - *civ = zero_p (iv0->step) ? *iv1: *iv0; + *civ = null_or_integer_zerop (iv0->step) ? *iv1: *iv0; record_use (data, cond_p, civ, stmt, USE_COMPARE); } @@ -1514,7 +1516,7 @@ find_interesting_uses_address (struct ivopts_data *data, tree stmt, tree *op_p) } } - if (zero_p (step)) + if (null_or_integer_zerop (step)) goto fail; base = tree_mem_ref_addr (type, base); } @@ -1524,7 +1526,7 @@ find_interesting_uses_address (struct ivopts_data *data, tree stmt, tree *op_p) ifs_ivopts_data.stmt = stmt; ifs_ivopts_data.step_p = &step; if (!for_each_index (&base, idx_find_step, &ifs_ivopts_data) - || zero_p (step)) + || null_or_integer_zerop (step)) goto fail; gcc_assert (TREE_CODE (base) != ALIGN_INDIRECT_REF); @@ -1598,7 +1600,7 @@ find_interesting_uses_stmt (struct ivopts_data *data, tree stmt) iv = get_iv (data, lhs); - if (iv && !zero_p (iv->step)) + if (iv && !null_or_integer_zerop (iv->step)) return; } @@ -1644,7 +1646,7 @@ find_interesting_uses_stmt (struct ivopts_data *data, tree stmt) lhs = PHI_RESULT (stmt); iv = get_iv (data, lhs); - if (iv && !zero_p (iv->step)) + if (iv && !null_or_integer_zerop (iv->step)) return; } @@ -1758,7 +1760,7 @@ strip_offset_1 (tree expr, bool inside_addr, bool top_compref, { case INTEGER_CST: if (!cst_and_fits_in_hwi (expr) - || zero_p (expr)) + || integer_zerop (expr)) return orig_expr; *offset = int_cst_value (expr); @@ -1777,9 +1779,9 @@ strip_offset_1 (tree expr, bool inside_addr, bool top_compref, && op1 == TREE_OPERAND (expr, 1)) return orig_expr; - if (zero_p (op1)) + if (integer_zerop (op1)) expr = op0; - else if (zero_p (op0)) + else if (integer_zerop (op0)) { if (code == PLUS_EXPR) expr = op1; @@ -1805,7 +1807,7 @@ strip_offset_1 (tree expr, bool inside_addr, bool top_compref, *offset = off1 * st; if (top_compref - && zero_p (op1)) + && integer_zerop (op1)) { /* Strip the component reference completely. */ op0 = TREE_OPERAND (expr, 0); @@ -1971,9 +1973,9 @@ add_candidate_1 (struct ivopts_data *data, if (!operand_equal_p (base, cand->iv->base, 0)) continue; - if (zero_p (cand->iv->step)) + if (null_or_integer_zerop (cand->iv->step)) { - if (zero_p (step)) + if (null_or_integer_zerop (step)) break; } else @@ -2134,7 +2136,7 @@ add_old_ivs_candidates (struct ivopts_data *data) EXECUTE_IF_SET_IN_BITMAP (data->relevant, 0, i, bi) { iv = ver_info (data, i)->iv; - if (iv && iv->biv_p && !zero_p (iv->step)) + if (iv && iv->biv_p && !null_or_integer_zerop (iv->step)) add_old_iv_candidates (data, iv); } } @@ -3340,10 +3342,10 @@ difference_cost (struct ivopts_data *data, return 0; } *var_present = true; - if (zero_p (e2)) + if (integer_zerop (e2)) return force_var_cost (data, e1, depends_on); - if (zero_p (e1)) + if (integer_zerop (e1)) { cost = force_var_cost (data, e2, depends_on); cost += multiply_by_cost (-1, mode); @@ -3730,7 +3732,8 @@ determine_use_iv_cost_condition (struct ivopts_data *data, if (TREE_CODE (cond) != SSA_NAME) { op = TREE_OPERAND (cond, 0); - if (TREE_CODE (op) == SSA_NAME && !zero_p (get_iv (data, op)->step)) + if (TREE_CODE (op) == SSA_NAME + && !null_or_integer_zerop (get_iv (data, op)->step)) op = TREE_OPERAND (cond, 1); if (TREE_CODE (op) == SSA_NAME) { @@ -5148,7 +5151,7 @@ rewrite_use_compare (struct ivopts_data *data, cond = *use->op_p; op_p = &TREE_OPERAND (cond, 0); if (TREE_CODE (*op_p) != SSA_NAME - || zero_p (get_iv (data, *op_p)->step)) + || null_or_integer_zerop (get_iv (data, *op_p)->step)) op_p = &TREE_OPERAND (cond, 1); op = force_gimple_operand (comp, &stmts, true, SSA_NAME_VAR (*op_p)); @@ -5219,7 +5222,7 @@ remove_unused_ivs (struct ivopts_data *data) info = ver_info (data, j); if (info->iv - && !zero_p (info->iv->step) + && !null_or_integer_zerop (info->iv->step) && !info->inv_id && !info->iv->have_use_for && !info->preserve_biv) |