diff options
author | Richard Biener <rguenther@suse.de> | 2024-11-18 13:46:52 +0100 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2024-11-18 18:57:21 +0100 |
commit | c108785c425b2042f63fa975c58c274d19a8d160 (patch) | |
tree | c7b0e89efcd73b2467f2701f365c16d29683cedd /gcc/tree-vect-loop.cc | |
parent | f5ceca96278b2ffaff838216aa6644fedb603573 (diff) | |
download | gcc-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.cc | 3 |
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); |