This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Use anonymous SSA name support in SLSR
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 7 May 2013 10:21:22 +0200
- Subject: Re: [PATCH] Use anonymous SSA name support in SLSR
- References: <1367854933 dot 4938 dot 5 dot camel at oc8801110288 dot ibm dot com>
On Mon, May 6, 2013 at 5:42 PM, Bill Schmidt
<wschmidt@linux.vnet.ibm.com> wrote:
> This removes lazy_create_slsr_reg and replaces uses of make_ssa_name
> with make_temp_ssa_name, removing the need for a bunch of unnecessary
> vars.
>
> Bootstrapped and tested on powerpc64-unknown-linux-gnu with no new
> regressions. Ok for trunk?
Ok.
Thanks,
Richard.
> Thanks,
> Bill
>
>
> 2013-05-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
>
> * gimple-ssa-strength-reduction.c (lazy_create_slsr_reg): Remove.
> (replace_mult_candidate): Remove unnecessary argument; remove
> unnecessary parameter from call to introduce_cast_before_cand.
> (replace_unconditional_candidate): Remove unnecessary parameter
> from call to replace_mult_candidate.
> (replace_conditional_candidate): Likewise.
> (insert_initializers): Use make_temp_ssa_name.
> (introduce_cast_before_cand): Remove unnecessary argument; use
> make_temp_ssa_name.
> (replace_one_candidate): Remove unnecessary argument; remove
> unnecessary parameter from calls to introduce_cast_before_cand.
> (replace_profitable_candidates): Remove unnecessary parameters
> from calls to replace_one_candidate.
>
>
> Index: gcc/gimple-ssa-strength-reduction.c
> ===================================================================
> --- gcc/gimple-ssa-strength-reduction.c (revision 198627)
> +++ gcc/gimple-ssa-strength-reduction.c (working copy)
> @@ -376,7 +376,7 @@ static bool address_arithmetic_p;
>
> /* Forward function declarations. */
> static slsr_cand_t base_cand_from_table (tree);
> -static tree introduce_cast_before_cand (slsr_cand_t, tree, tree, tree*);
> +static tree introduce_cast_before_cand (slsr_cand_t, tree, tree);
>
> /* Produce a pointer to the IDX'th candidate in the candidate vector. */
>
> @@ -1818,16 +1818,6 @@ cand_abs_increment (slsr_cand_t c)
> return increment;
> }
>
> -/* If *VAR is NULL or is not of a compatible type with TYPE, create a
> - new temporary reg of type TYPE and store it in *VAR. */
> -
> -static inline void
> -lazy_create_slsr_reg (tree *var, tree type)
> -{
> - if (!*var || !types_compatible_p (TREE_TYPE (*var), type))
> - *var = create_tmp_reg (type, "slsr");
> -}
> -
> /* Return TRUE iff candidate C has already been replaced under
> another interpretation. */
>
> @@ -1841,8 +1831,7 @@ cand_already_replaced (slsr_cand_t c)
> replace_conditional_candidate. */
>
> static void
> -replace_mult_candidate (slsr_cand_t c, tree basis_name, double_int bump,
> - tree *var)
> +replace_mult_candidate (slsr_cand_t c, tree basis_name, double_int bump)
> {
> tree target_type = TREE_TYPE (gimple_assign_lhs (c->cand_stmt));
> enum tree_code cand_code = gimple_assign_rhs_code (c->cand_stmt);
> @@ -1869,8 +1858,7 @@ static void
> /* If the basis name and the candidate's LHS have incompatible
> types, introduce a cast. */
> if (!useless_type_conversion_p (target_type, TREE_TYPE (basis_name)))
> - basis_name = introduce_cast_before_cand (c, target_type,
> - basis_name, var);
> + basis_name = introduce_cast_before_cand (c, target_type, basis_name);
> if (bump.is_negative ())
> {
> code = MINUS_EXPR;
> @@ -1945,7 +1933,6 @@ replace_unconditional_candidate (slsr_cand_t c)
> {
> slsr_cand_t basis;
> double_int stride, bump;
> - tree var = NULL;
>
> if (cand_already_replaced (c))
> return;
> @@ -1954,7 +1941,7 @@ replace_unconditional_candidate (slsr_cand_t c)
> stride = tree_to_double_int (c->stride);
> bump = cand_increment (c) * stride;
>
> - replace_mult_candidate (c, gimple_assign_lhs (basis->cand_stmt), bump, &var);
> + replace_mult_candidate (c, gimple_assign_lhs (basis->cand_stmt), bump);
> }
>
> /* Return the index in the increment vector of the given INCREMENT. */
> @@ -2150,7 +2137,7 @@ create_phi_basis (slsr_cand_t c, gimple from_phi,
> static void
> replace_conditional_candidate (slsr_cand_t c)
> {
> - tree basis_name, name, var = NULL;
> + tree basis_name, name;
> slsr_cand_t basis;
> location_t loc;
> double_int stride, bump;
> @@ -2169,7 +2156,7 @@ replace_conditional_candidate (slsr_cand_t c)
> stride = tree_to_double_int (c->stride);
> bump = c->index * stride;
>
> - replace_mult_candidate (c, name, bump, &var);
> + replace_mult_candidate (c, name, bump);
> }
>
> /* Compute the expected costs of inserting basis adjustments for
> @@ -2925,7 +2912,6 @@ static void
> insert_initializers (slsr_cand_t c)
> {
> unsigned i;
> - tree new_var = NULL_TREE;
>
> for (i = 0; i < incr_vec_len; i++)
> {
> @@ -2963,8 +2949,7 @@ insert_initializers (slsr_cand_t c)
>
> /* Create a new SSA name to hold the initializer's value. */
> stride_type = TREE_TYPE (c->stride);
> - lazy_create_slsr_reg (&new_var, stride_type);
> - new_name = make_ssa_name (new_var, NULL);
> + new_name = make_temp_ssa_name (stride_type, NULL, "slsr");
> incr_vec[i].initializer = new_name;
>
> /* Create the initializer and insert it in the latest possible
> @@ -3062,15 +3047,13 @@ all_phi_incrs_profitable (slsr_cand_t c, gimple ph
> the new SSA name. */
>
> static tree
> -introduce_cast_before_cand (slsr_cand_t c, tree to_type,
> - tree from_expr, tree *new_var)
> +introduce_cast_before_cand (slsr_cand_t c, tree to_type, tree from_expr)
> {
> tree cast_lhs;
> gimple cast_stmt;
> gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
>
> - lazy_create_slsr_reg (new_var, to_type);
> - cast_lhs = make_ssa_name (*new_var, NULL);
> + cast_lhs = make_temp_ssa_name (to_type, NULL, "slsr");
> cast_stmt = gimple_build_assign_with_ops (NOP_EXPR, cast_lhs,
> from_expr, NULL_TREE);
> gimple_set_location (cast_stmt, gimple_location (c->cand_stmt));
> @@ -3124,8 +3107,7 @@ replace_rhs_if_not_dup (enum tree_code new_code, t
> is the rhs1 to use in creating the add/subtract. */
>
> static void
> -replace_one_candidate (slsr_cand_t c, unsigned i, tree *new_var,
> - tree basis_name)
> +replace_one_candidate (slsr_cand_t c, unsigned i, tree basis_name)
> {
> gimple stmt_to_print = NULL;
> tree orig_rhs1, orig_rhs2;
> @@ -3161,8 +3143,7 @@ static void
> rhs2 = incr_vec[i].initializer;
> else
> rhs2 = introduce_cast_before_cand (c, orig_type,
> - incr_vec[i].initializer,
> - new_var);
> + incr_vec[i].initializer);
>
> if (incr_vec[i].incr != cand_incr)
> {
> @@ -3188,7 +3169,7 @@ static void
> if (types_compatible_p (orig_type, stride_type))
> rhs2 = c->stride;
> else
> - rhs2 = introduce_cast_before_cand (c, orig_type, c->stride, new_var);
> + rhs2 = introduce_cast_before_cand (c, orig_type, c->stride);
>
> stmt_to_print = replace_rhs_if_not_dup (repl_code, basis_name, rhs2,
> orig_code, orig_rhs1, orig_rhs2,
> @@ -3204,7 +3185,7 @@ static void
> if (types_compatible_p (orig_type, stride_type))
> rhs2 = c->stride;
> else
> - rhs2 = introduce_cast_before_cand (c, orig_type, c->stride, new_var);
> + rhs2 = introduce_cast_before_cand (c, orig_type, c->stride);
>
> if (orig_code != MINUS_EXPR
> || !operand_equal_p (basis_name, orig_rhs1, 0)
> @@ -3270,7 +3251,6 @@ replace_profitable_candidates (slsr_cand_t c)
> if (!cand_already_replaced (c))
> {
> double_int increment = cand_abs_increment (c);
> - tree new_var = NULL;
> enum tree_code orig_code = gimple_assign_rhs_code (c->cand_stmt);
> unsigned i;
>
> @@ -3302,14 +3282,14 @@ replace_profitable_candidates (slsr_cand_t c)
>
> /* Replace C with an add of the new basis phi and the
> increment. */
> - replace_one_candidate (c, i, &new_var, name);
> + replace_one_candidate (c, i, name);
> }
> }
> else
> {
> slsr_cand_t basis = lookup_cand (c->basis);
> tree basis_name = gimple_assign_lhs (basis->cand_stmt);
> - replace_one_candidate (c, i, &new_var, basis_name);
> + replace_one_candidate (c, i, basis_name);
> }
> }
> }
>
>