On Mon, Aug 25, 2025 at 2:48 AM Andrew Pinski <andrew.pin...@oss.qualcomm.com> wrote: > > After the return type of remove_prop_source_from_use was changed to void, > simplify_permutation only returns 1 or 0 so it can be boolified. > > Bootstrapped and tested on x86_64-linux-gnu.
OK. Richard. > gcc/ChangeLog: > > * tree-ssa-forwprop.cc (simplify_permutation): Boolify. > (pass_forwprop::execute): No longer handle 2 as the return > from simplify_permutation. > > Signed-off-by: Andrew Pinski <andrew.pin...@oss.qualcomm.com> > --- > gcc/tree-ssa-forwprop.cc | 73 +++++++++++++++++++--------------------- > 1 file changed, 34 insertions(+), 39 deletions(-) > > diff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc > index 5aed2967731..7702aeaf0fe 100644 > --- a/gcc/tree-ssa-forwprop.cc > +++ b/gcc/tree-ssa-forwprop.cc > @@ -3096,10 +3096,10 @@ is_combined_permutation_identity (tree mask1, tree > mask2) > return maybe_identity1 ? 1 : maybe_identity2 ? 2 : 0; > } > > -/* Combine a shuffle with its arguments. Returns 1 if there were any > - changes made, 2 if cfg-cleanup needs to run. Else it returns 0. */ > +/* Combine a shuffle with its arguments. Returns true if there were any > + changes made. */ > > -static int > +static bool > simplify_permutation (gimple_stmt_iterator *gsi) > { > gimple *stmt = gsi_stmt (*gsi); > @@ -3115,7 +3115,7 @@ simplify_permutation (gimple_stmt_iterator *gsi) > op2 = gimple_assign_rhs3 (stmt); > > if (TREE_CODE (op2) != VECTOR_CST) > - return 0; > + return false; > > if (TREE_CODE (op0) == VECTOR_CST) > { > @@ -3126,14 +3126,14 @@ simplify_permutation (gimple_stmt_iterator *gsi) > { > def_stmt = get_prop_source_stmt (op0, false, &single_use_op0); > if (!def_stmt) > - return 0; > + return false; > code = gimple_assign_rhs_code (def_stmt); > if (code == VIEW_CONVERT_EXPR) > { > tree rhs = gimple_assign_rhs1 (def_stmt); > tree name = TREE_OPERAND (rhs, 0); > if (TREE_CODE (name) != SSA_NAME) > - return 0; > + return false; > if (!has_single_use (name)) > single_use_op0 = false; > /* Here we update the def_stmt through this VIEW_CONVERT_EXPR, > @@ -3141,16 +3141,16 @@ simplify_permutation (gimple_stmt_iterator *gsi) > VIEW_CONVERT_EXPR. */ > def_stmt = SSA_NAME_DEF_STMT (name); > if (!def_stmt || !is_gimple_assign (def_stmt)) > - return 0; > + return false; > if (gimple_assign_rhs_code (def_stmt) != CONSTRUCTOR) > - return 0; > + return false; > } > if (!can_propagate_from (def_stmt)) > - return 0; > + return false; > arg0 = gimple_assign_rhs1 (def_stmt); > } > else > - return 0; > + return false; > > /* Two consecutive shuffles. */ > if (code == VEC_PERM_EXPR) > @@ -3159,13 +3159,13 @@ simplify_permutation (gimple_stmt_iterator *gsi) > int ident; > > if (op0 != op1) > - return 0; > + return false; > op3 = gimple_assign_rhs3 (def_stmt); > if (TREE_CODE (op3) != VECTOR_CST) > - return 0; > + return false; > ident = is_combined_permutation_identity (op3, op2); > if (!ident) > - return 0; > + return false; > orig = (ident == 1) ? gimple_assign_rhs1 (def_stmt) > : gimple_assign_rhs2 (def_stmt); > gimple_assign_set_rhs1 (stmt, unshare_expr (orig)); > @@ -3173,7 +3173,7 @@ simplify_permutation (gimple_stmt_iterator *gsi) > gimple_set_num_ops (stmt, 2); > update_stmt (stmt); > remove_prop_source_from_use (op0); > - return 1; > + return true; > } > else if (code == CONSTRUCTOR > || code == VECTOR_CST > @@ -3182,7 +3182,7 @@ simplify_permutation (gimple_stmt_iterator *gsi) > if (op0 != op1) > { > if (TREE_CODE (op0) == SSA_NAME && !single_use_op0) > - return 0; > + return false; > > if (TREE_CODE (op1) == VECTOR_CST) > arg1 = op1; > @@ -3190,36 +3190,36 @@ simplify_permutation (gimple_stmt_iterator *gsi) > { > gimple *def_stmt2 = get_prop_source_stmt (op1, true, NULL); > if (!def_stmt2) > - return 0; > + return false; > code2 = gimple_assign_rhs_code (def_stmt2); > if (code2 == VIEW_CONVERT_EXPR) > { > tree rhs = gimple_assign_rhs1 (def_stmt2); > tree name = TREE_OPERAND (rhs, 0); > if (TREE_CODE (name) != SSA_NAME) > - return 0; > + return false; > if (!has_single_use (name)) > - return 0; > + return false; > def_stmt2 = SSA_NAME_DEF_STMT (name); > if (!def_stmt2 || !is_gimple_assign (def_stmt2)) > - return 0; > + return false; > if (gimple_assign_rhs_code (def_stmt2) != CONSTRUCTOR) > - return 0; > + return false; > } > else if (code2 != CONSTRUCTOR && code2 != VECTOR_CST) > - return 0; > + return false; > if (!can_propagate_from (def_stmt2)) > - return 0; > + return false; > arg1 = gimple_assign_rhs1 (def_stmt2); > } > else > - return 0; > + return false; > } > else > { > /* Already used twice in this statement. */ > if (TREE_CODE (op0) == SSA_NAME && num_imm_uses (op0) > 2) > - return 0; > + return false; > arg1 = arg0; > } > > @@ -3244,26 +3244,26 @@ simplify_permutation (gimple_stmt_iterator *gsi) > if (tgt_type == NULL_TREE) > tgt_type = arg1_type; > else if (tgt_type != arg1_type) > - return 0; > + return false; > } > > if (!VECTOR_TYPE_P (tgt_type)) > - return 0; > + return false; > tree op2_type = TREE_TYPE (op2); > > /* Figure out the shrunk factor. */ > poly_uint64 tgt_units = TYPE_VECTOR_SUBPARTS (tgt_type); > poly_uint64 op2_units = TYPE_VECTOR_SUBPARTS (op2_type); > if (maybe_gt (tgt_units, op2_units)) > - return 0; > + return false; > unsigned int factor; > if (!constant_multiple_p (op2_units, tgt_units, &factor)) > - return 0; > + return false; > > /* Build the new permutation control vector as target vector. */ > vec_perm_builder builder; > if (!tree_to_vec_perm_builder (&builder, op2)) > - return 0; > + return false; > vec_perm_indices indices (builder, 2, op2_units); > vec_perm_indices new_indices; > if (new_indices.new_shrunk_vector (indices, factor)) > @@ -3279,7 +3279,7 @@ simplify_permutation (gimple_stmt_iterator *gsi) > op2 = vec_perm_indices_to_tree (mask_type, new_indices); > } > else > - return 0; > + return false; > > /* Convert the VECTOR_CST to the appropriate vector type. */ > if (tgt_type != TREE_TYPE (arg0)) > @@ -3298,7 +3298,7 @@ simplify_permutation (gimple_stmt_iterator *gsi) > tree opt = fold_ternary (VEC_PERM_EXPR, res_type, arg0, arg1, op2); > if (!opt > || (TREE_CODE (opt) != CONSTRUCTOR && TREE_CODE (opt) != > VECTOR_CST)) > - return 0; > + return false; > /* Found VIEW_CONVERT_EXPR before, need one explicit conversion. */ > if (res_type != TREE_TYPE (op0)) > { > @@ -3313,10 +3313,10 @@ simplify_permutation (gimple_stmt_iterator *gsi) > remove_prop_source_from_use (op0); > if (op0 != op1 && TREE_CODE (op1) == SSA_NAME) > remove_prop_source_from_use (op1); > - return 1; > + return true; > } > > - return 0; > + return false; > } > > /* Get the BIT_FIELD_REF definition of VAL, if any, looking through > @@ -5145,12 +5145,7 @@ pass_forwprop::execute (function *fun) > && simplify_rotate (&gsi)) > changed = true; > else if (code == VEC_PERM_EXPR) > - { > - int did_something = simplify_permutation (&gsi); > - if (did_something == 2) > - cfg_changed = true; > - changed = did_something != 0; > - } > + changed |= simplify_permutation (&gsi); > else if (code == CONSTRUCTOR > && TREE_CODE (TREE_TYPE (rhs1)) == VECTOR_TYPE) > changed |= simplify_vector_constructor (&gsi); > -- > 2.43.0 >