aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-11-18 13:46:52 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2024-11-18 18:57:21 +0100
commitc108785c425b2042f63fa975c58c274d19a8d160 (patch)
treec7b0e89efcd73b2467f2701f365c16d29683cedd /gcc/tree-vect-loop.cc
parentf5ceca96278b2ffaff838216aa6644fedb603573 (diff)
downloadgcc-c108785c425b2042f63fa975c58c274d19a8d160.zip
gcc-c108785c425b2042f63fa975c58c274d19a8d160.tar.gz
gcc-c108785c425b2042f63fa975c58c274d19a8d160.tar.bz2
tree-optimization/117594 - fix live op vectorization for length masked case
The code was passing factor == 0 to vect_get_loop_len which always returns an unmodified length, even if the number of scalar elements doesn't agree. It also failed to insert the eventually generated code. PR tree-optimization/117594 * tree-vect-loop.cc (vectorizable_live_operation_1): Pass factor == 1 to vect_get_loop_len, insert generated stmts. * gcc.dg/vect/pr117594.c: New testcase.
Diffstat (limited to 'gcc/tree-vect-loop.cc')
-rw-r--r--gcc/tree-vect-loop.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 18c4fa1..ce72814 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -11221,7 +11221,8 @@ vectorizable_live_operation_1 (loop_vec_info loop_vinfo,
gimple_stmt_iterator gsi = gsi_last (tem);
tree len = vect_get_loop_len (loop_vinfo, &gsi,
&LOOP_VINFO_LENS (loop_vinfo),
- 1, vectype, 0, 0);
+ 1, vectype, 0, 1);
+ gimple_seq_add_seq (&stmts, tem);
/* BIAS - 1. */
signed char biasval = LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS (loop_vinfo);