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.

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

Reply via email to