diff options
author | Richard Biener <rguenther@suse.de> | 2025-09-01 15:49:59 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2025-09-02 12:53:08 +0200 |
commit | 3f868fb150957e0510d37d5f39effbddc2f8a4f1 (patch) | |
tree | f56d58a7bd46a820fe2279b28823d6ce102b795e | |
parent | 861b7c054e5f356722e6e1a1b043de5d7a412499 (diff) | |
download | gcc-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.cc | 13 |
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)) { |