aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2022-09-28 17:00:48 +0800
committerliuhongt <hongtao.liu@intel.com>2022-09-29 15:22:47 +0800
commitf758d447d7f4699253c9f8ee345ba9b8357cdb22 (patch)
treeaa7628d98ba68a149c7cb9ebabdcfa94ed00ea99 /gcc/tree-vectorizer.h
parent9e79a25b66cb7e0ddbd1410ecc86cec25588d172 (diff)
downloadgcc-f758d447d7f4699253c9f8ee345ba9b8357cdb22.zip
gcc-f758d447d7f4699253c9f8ee345ba9b8357cdb22.tar.gz
gcc-f758d447d7f4699253c9f8ee345ba9b8357cdb22.tar.bz2
Check nonlinear iv in vect_can_advance_ivs_p.
vectorizable_nonlinear_induction doesn't always guard vect_peel_nonlinear_iv_init when it's called by vect_update_ivs_after_vectorizer. It's supposed to be guarded by vect_can_advance_ivs_p. gcc/ChangeLog: PR tree-optimization/107055 * tree-vect-loop-manip.cc (vect_can_advance_ivs_p): Check for nonlinear induction variables. * tree-vect-loop.cc (vect_can_peel_nonlinear_iv_p): New functions. (vectorizable_nonlinear_induction): Put part codes into vect_can_peel_nonlinear_iv_p. * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Declare. gcc/testsuite/ChangeLog: * gcc.target/i386/pr107055.c: New test.
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 5e75ed1..4870c75 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -2343,6 +2343,9 @@ extern tree cse_and_gimplify_to_preheader (loop_vec_info, tree);
/* Nonlinear induction. */
extern tree vect_peel_nonlinear_iv_init (gimple_seq*, tree, tree,
tree, enum vect_induction_op_type);
+extern bool
+vect_can_peel_nonlinear_iv_p (loop_vec_info loop_vinfo,
+ enum vect_induction_op_type induction_type);
/* In tree-vect-slp.cc. */
extern void vect_slp_init (void);