aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-patterns.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2018-06-30 12:46:36 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2018-06-30 12:46:36 +0000
commit894dd753ca8a4120078324cc6cf0ba01afff9cab (patch)
tree52c54a7be96f86a3a5ec9e0e2a90772eb9d86ef5 /gcc/tree-vect-patterns.c
parent55c8e04cb125e84e493b37ab66074e2d2f2dd889 (diff)
downloadgcc-894dd753ca8a4120078324cc6cf0ba01afff9cab.zip
gcc-894dd753ca8a4120078324cc6cf0ba01afff9cab.tar.gz
gcc-894dd753ca8a4120078324cc6cf0ba01afff9cab.tar.bz2
[9a/n] PR85694: Reorder vect_is_simple_use arguments
As suggested by Richard B., this patch reorders the arguments to vect_is_simple_use so that def_stmt comes last and is optional. Many callers can then drop it, making it more obvious which of the remaining calls would be affected by the next patch. 2018-06-30 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the end and default to null. * tree-vect-loop.c (vect_create_epilog_for_reduction) (vectorizable_reduction): Update calls accordingly, dropping the gimple ** argument if the passed-back statement isn't needed. * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p) (vect_recog_rotate_pattern): Likewise. (vect_recog_mask_conversion_pattern): Likewise. * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. (vect_mask_constant_operand_p): Likewise. * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use): (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise. (get_group_load_store_type, get_load_store_type): Likewise. (vect_check_load_store_mask, vect_check_store_rhs): Likewise. (vectorizable_call, vectorizable_simd_clone_call): Likewise. (vectorizable_conversion, vectorizable_assignment): Likewise. (vectorizable_shift, vectorizable_operation): Likewise. (vectorizable_store, vect_is_simple_cond): Likewise. (vectorizable_condition, vectorizable_comparison): Likewise. (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise. (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out and move it to the end. Cope with null def_stmt_outs. From-SVN: r262272
Diffstat (limited to 'gcc/tree-vect-patterns.c')
-rw-r--r--gcc/tree-vect-patterns.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 9654bd7..6fb07fd 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -160,7 +160,7 @@ vect_get_internal_def (vec_info *vinfo, tree op)
vect_def_type dt;
gimple *def_stmt;
if (TREE_CODE (op) != SSA_NAME
- || !vect_is_simple_use (op, vinfo, &def_stmt, &dt)
+ || !vect_is_simple_use (op, vinfo, &dt, &def_stmt)
|| dt != vect_internal_def)
return NULL;
@@ -177,14 +177,13 @@ static bool
type_conversion_p (tree name, gimple *use_stmt, bool check_sign,
tree *orig_type, gimple **def_stmt, bool *promotion)
{
- gimple *dummy_gimple;
stmt_vec_info stmt_vinfo;
tree type = TREE_TYPE (name);
tree oprnd0;
enum vect_def_type dt;
stmt_vinfo = vinfo_for_stmt (use_stmt);
- if (!vect_is_simple_use (name, stmt_vinfo->vinfo, def_stmt, &dt))
+ if (!vect_is_simple_use (name, stmt_vinfo->vinfo, &dt, def_stmt))
return false;
if (dt != vect_internal_def
@@ -219,7 +218,7 @@ type_conversion_p (tree name, gimple *use_stmt, bool check_sign,
else
*promotion = false;
- if (!vect_is_simple_use (oprnd0, stmt_vinfo->vinfo, &dummy_gimple, &dt))
+ if (!vect_is_simple_use (oprnd0, stmt_vinfo->vinfo, &dt))
return false;
return true;
@@ -1795,7 +1794,7 @@ vect_recog_rotate_pattern (vec<gimple *> *stmts, tree *type_out)
|| !TYPE_UNSIGNED (type))
return NULL;
- if (!vect_is_simple_use (oprnd1, vinfo, &def_stmt, &dt))
+ if (!vect_is_simple_use (oprnd1, vinfo, &dt, &def_stmt))
return NULL;
if (dt != vect_internal_def
@@ -3930,13 +3929,10 @@ vect_recog_mask_conversion_pattern (vec<gimple *> *stmts, tree *type_out)
&& known_le (TYPE_VECTOR_SUBPARTS (vectype1),
TYPE_VECTOR_SUBPARTS (vectype2)))
{
- gimple *dummy;
enum vect_def_type dt;
- if (vect_is_simple_use (TREE_OPERAND (rhs1, 0), stmt_vinfo->vinfo,
- &dummy, &dt)
+ if (vect_is_simple_use (TREE_OPERAND (rhs1, 0), vinfo, &dt)
&& dt == vect_external_def
- && vect_is_simple_use (TREE_OPERAND (rhs1, 1), stmt_vinfo->vinfo,
- &dummy, &dt)
+ && vect_is_simple_use (TREE_OPERAND (rhs1, 1), vinfo, &dt)
&& (dt == vect_external_def
|| dt == vect_constant_def))
{