aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-09-01 15:49:59 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2025-09-02 12:53:08 +0200
commit3f868fb150957e0510d37d5f39effbddc2f8a4f1 (patch)
treef56d58a7bd46a820fe2279b28823d6ce102b795e
parent861b7c054e5f356722e6e1a1b043de5d7a412499 (diff)
downloadgcc-3f868fb150957e0510d37d5f39effbddc2f8a4f1.zip
gcc-3f868fb150957e0510d37d5f39effbddc2f8a4f1.tar.gz
gcc-3f868fb150957e0510d37d5f39effbddc2f8a4f1.tar.bz2
Restore STMT_VINFO_VECTYPE during analysis, set to NULL for all stmts
The following makes vect_analyze_stmt call vectorizable_* with all STMT_VINFO_VECTYPE NULL_TREE but restores the value for eventual iteration with single-lane SLP. It clears it for every stmt during vect_transform_stmt. * tree-vect-stmts.cc (vect_transform_stmt): Clear STMT_VINFO_VECTYPE for all stmts. (vect_analyze_stmt): Likewise. But restore at the end again.
-rw-r--r--gcc/tree-vect-stmts.cc13
1 files changed, 5 insertions, 8 deletions
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index b63a180..5b1f291 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -12601,10 +12601,8 @@ vect_analyze_stmt (vec_info *vinfo,
gcc_unreachable ();
}
- if (! STMT_VINFO_DATA_REF (stmt_info))
- STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
- else
- STMT_VINFO_VECTYPE (stmt_info) = SLP_TREE_VECTYPE (node);
+ tree saved_vectype = STMT_VINFO_VECTYPE (stmt_info);
+ STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
if (STMT_VINFO_RELEVANT_P (stmt_info))
{
@@ -12650,6 +12648,8 @@ vect_analyze_stmt (vec_info *vinfo,
stmt_info, NULL, node,
cost_vec))));
+ STMT_VINFO_VECTYPE (stmt_info) = saved_vectype;
+
if (!ok)
return opt_result::failure_at (stmt_info->stmt,
"not vectorized:"
@@ -12693,10 +12693,7 @@ vect_transform_stmt (vec_info *vinfo,
dump_printf_loc (MSG_NOTE, vect_location,
"------>vectorizing statement: %G", stmt_info->stmt);
- if (! STMT_VINFO_DATA_REF (stmt_info))
- STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
- else
- STMT_VINFO_VECTYPE (stmt_info) = SLP_TREE_VECTYPE (slp_node);
+ STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
switch (SLP_TREE_TYPE (slp_node))
{