https://gcc.gnu.org/g:cacc976a71027e7da8e3438b60da76ecdf990d38
commit r14-10684-gcacc976a71027e7da8e3438b60da76ecdf990d38 Author: Richard Biener <rguent...@suse.de> Date: Thu Sep 5 11:18:57 2024 +0200 tree-optimization/116610 - wrong SLP induction bias for mask peeling The following fixes a mistake when applying the bias for peeling via masking to the inital value of SLP inductions. This resolves gcc.target/aarch64/sve/peel_ind_1.c (a scan-assembler only unfortunately) when forcing single-lane SLP for it. PR tree-optimization/116610 * tree-vect-loop.cc (vectorizable_induction): Use MINUS_EXPR to apply a mask peeling adjustment. (cherry picked from commit 6a1a856ba78589f7f5285b00ecd40ba2bbeef8b0) Diff: --- gcc/tree-vect-loop.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index acc6b75fb170..dcd61292caf1 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -10228,7 +10228,7 @@ vectorizable_induction (loop_vec_info loop_vinfo, vec_steps.safe_push (vec_step); tree step_mul = gimple_build_vector (&init_stmts, &mul_elts); if (peel_mul) - step_mul = gimple_build (&init_stmts, PLUS_EXPR, step_vectype, + step_mul = gimple_build (&init_stmts, MINUS_EXPR, step_vectype, step_mul, peel_mul); if (!init_node) vec_init = gimple_build_vector (&init_stmts, &init_elts);