The following makes dataref analysis not set STMT_VINFO_VECTYPE.
This leaves the field ready for taking when vectorizable_*
transition to use SLP_TREE_VECTYPE. It also delays determining
the vectorization mode a little bit - SLP build will first do
that then. I have kept a check that there is any vector type
for the scalar type in vect_analyze_data_refs, that handles
early outs for aggregate and existing vector types.
* tree-vect-data-refs.cc (vect_analyze_data_refs): Do not
set STMT_VINFO_VECTYPE.
---
gcc/tree-vect-data-refs.cc | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
index b62498b34bd..89d5426bb11 100644
--- a/gcc/tree-vect-data-refs.cc
+++ b/gcc/tree-vect-data-refs.cc
@@ -5242,10 +5242,9 @@ vect_analyze_data_refs (vec_info *vinfo, bool *fatal)
STMT_VINFO_DR_STEP_ALIGNMENT (stmt_info));
}
- /* Set vectype for STMT. */
+ /* Check whether there is any vectype for STMT. */
scalar_type = TREE_TYPE (DR_REF (dr));
- tree vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
- if (!vectype)
+ if (! get_related_vectype_for_scalar_type (VOIDmode, scalar_type))
{
if (dump_enabled_p ())
{
@@ -5273,18 +5272,6 @@ vect_analyze_data_refs (vec_info *vinfo, bool *fatal)
" scalar_type: %T\n",
stmt_info->stmt, scalar_type);
}
- else
- {
- if (dump_enabled_p ())
- dump_printf_loc (MSG_NOTE, vect_location,
- "got vectype for stmt: %G%T\n",
- stmt_info->stmt, vectype);
- }
-
- /* Leave the BB vectorizer to pick the vector type later, based on
- the final dataref group size and SLP node size. */
- if (is_a <loop_vec_info> (vinfo))
- STMT_VINFO_VECTYPE (stmt_info) = vectype;
if (gatherscatter != SG_NONE)
{
--
2.43.0