[1/6] Reduce the number of get_vectype_for_scalar_type calls
Checks
Commit Message
The following removes get_vectype_for_scalar_type calls when we
already have the vector type computed. It also avoids some
premature and possibly redundant or unnecessary check during
data-ref analysis for gathers.
* tree-vect-data-refs.cc (vect_analyze_data_refs): Do
not check for a vector type for gather/scatter offset.
vect_check_gather_scatter does that already.
* tree-vect-loop.cc (get_initial_def_for_reduction): Use
the computed vector type.
* tree-vect-stmts.cc (vectorizable_operation): Use the
known vector type for constants/externs.
---
gcc/tree-vect-data-refs.cc | 4 +---
gcc/tree-vect-loop.cc | 2 +-
gcc/tree-vect-stmts.cc | 3 ++-
3 files changed, 4 insertions(+), 5 deletions(-)
@@ -4721,9 +4721,7 @@ vect_analyze_data_refs (vec_info *vinfo, poly_uint64 *min_vf, bool *fatal)
gather_scatter_info gs_info;
if (!vect_check_gather_scatter (stmt_info,
as_a <loop_vec_info> (vinfo),
- &gs_info)
- || !get_vectype_for_scalar_type (vinfo,
- TREE_TYPE (gs_info.offset)))
+ &gs_info))
{
if (fatal)
*fatal = false;
@@ -5466,7 +5466,7 @@ get_initial_def_for_reduction (loop_vec_info loop_vinfo,
{
class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
tree scalar_type = TREE_TYPE (init_val);
- tree vectype = get_vectype_for_scalar_type (loop_vinfo, scalar_type);
+ tree vectype = STMT_VINFO_VECTYPE (reduc_info);
tree init_def;
gimple_seq stmts = NULL;
@@ -6914,7 +6914,8 @@ vectorizable_operation (vec_info *vinfo,
S2: z = x + 1 - VS2_0 */
vect_get_vec_defs (vinfo, stmt_info, slp_node, ncopies,
- op0, &vec_oprnds0, op1, &vec_oprnds1, op2, &vec_oprnds2);
+ op0, vectype, &vec_oprnds0, op1, vectype, &vec_oprnds1,
+ op2, vectype, &vec_oprnds2);
/* Arguments are ready. Create the new vector stmt. */
FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
{