[gcc r15-3507] tree-optimization/116610 - wrong SLP induction bias for mask peeling

Richard Biener rguenth@gcc.gnu.org
Fri Sep 6 07:16:32 GMT 2024


https://gcc.gnu.org/g:6a1a856ba78589f7f5285b00ecd40ba2bbeef8b0

commit r15-3507-g6a1a856ba78589f7f5285b00ecd40ba2bbeef8b0
Author: Richard Biener <rguenther@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.

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 31cdc4bf53d..a879a13bbf0 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -10543,7 +10543,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);


More information about the Gcc-cvs mailing list