diff options
author | Richard Biener <rguenther@suse.de> | 2025-09-05 10:35:07 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2025-09-05 12:35:00 +0200 |
commit | dad6f6eb9b3c96a7fd6c13836a85a4f66373ff0c (patch) | |
tree | 5e455df159b7c17a6b8925cf30d85672d6459320 | |
parent | 911ec2e09bcfadb2ff8cc2e326ef5798acc96733 (diff) | |
download | gcc-dad6f6eb9b3c96a7fd6c13836a85a4f66373ff0c.zip gcc-dad6f6eb9b3c96a7fd6c13836a85a4f66373ff0c.tar.gz gcc-dad6f6eb9b3c96a7fd6c13836a85a4f66373ff0c.tar.bz2 |
tree-optimization/121802 - fix vect_setup_realignment
The following avoids looking at STMT_VINFO_VECTYPE in
vect_setup_realignment and instead passes down the relevant vector
type.
PR tree-optimization/121802
* tree-vectorizer.h (vect_setup_realignment): Add vectype
argument.
* tree-vect-data-refs.cc (vect_setup_realignment): Replace
local vectype with argument.
* tree-vect-stmts.cc (vectorizable_load): Adjust.
-rw-r--r-- | gcc/tree-vect-data-refs.cc | 3 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.cc | 10 | ||||
-rw-r--r-- | gcc/tree-vectorizer.h | 2 |
3 files changed, 7 insertions, 8 deletions
diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc index e451b72..a31ff93 100644 --- a/gcc/tree-vect-data-refs.cc +++ b/gcc/tree-vect-data-refs.cc @@ -6118,13 +6118,12 @@ vect_store_lanes_supported (tree vectype, unsigned HOST_WIDE_INT count, Return value - the result of the loop-header phi node. */ tree -vect_setup_realignment (vec_info *vinfo, stmt_vec_info stmt_info, +vect_setup_realignment (vec_info *vinfo, stmt_vec_info stmt_info, tree vectype, gimple_stmt_iterator *gsi, tree *realignment_token, enum dr_alignment_support alignment_support_scheme, tree init_addr, class loop **at_loop) { - tree vectype = STMT_VINFO_VECTYPE (stmt_info); loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo); dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info); struct data_reference *dr = dr_info->dr; diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 5b1f291..edc669b 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -10210,7 +10210,7 @@ vectorizable_load (vec_info *vinfo, if (!costing_p) { if (!diff_first_stmt_info) - msq = vect_setup_realignment (vinfo, first_stmt_info, gsi, + msq = vect_setup_realignment (vinfo, first_stmt_info, vectype, gsi, &realignment_token, alignment_support_scheme, NULL_TREE, &at_loop); @@ -10813,8 +10813,8 @@ vectorizable_load (vec_info *vinfo, stmt_info, diff); if (alignment_support_scheme == dr_explicit_realign) { - msq = vect_setup_realignment (vinfo, - first_stmt_info_for_drptr, gsi, + msq = vect_setup_realignment (vinfo, first_stmt_info_for_drptr, + vectype, gsi, &realignment_token, alignment_support_scheme, dataref_ptr, &at_loop); @@ -11167,8 +11167,8 @@ vectorizable_load (vec_info *vinfo, tree vs = size_int (TYPE_VECTOR_SUBPARTS (vectype)); if (compute_in_loop) - msq = vect_setup_realignment (vinfo, first_stmt_info, gsi, - &realignment_token, + msq = vect_setup_realignment (vinfo, first_stmt_info, vectype, + gsi, &realignment_token, dr_explicit_realign, dataref_ptr, NULL); diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index df805c6..6872f8a 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -2647,7 +2647,7 @@ extern bool vect_grouped_load_supported (tree, bool, unsigned HOST_WIDE_INT); extern internal_fn vect_load_lanes_supported (tree, unsigned HOST_WIDE_INT, bool, vec<int> * = nullptr); extern tree vect_setup_realignment (vec_info *, - stmt_vec_info, gimple_stmt_iterator *, + stmt_vec_info, tree, gimple_stmt_iterator *, tree *, enum dr_alignment_support, tree, class loop **); extern tree vect_get_new_vect_var (tree, enum vect_var_kind, const char *); |