diff options
author | liuhongt <hongtao.liu@intel.com> | 2022-09-28 17:00:48 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2022-09-29 15:22:47 +0800 |
commit | f758d447d7f4699253c9f8ee345ba9b8357cdb22 (patch) | |
tree | aa7628d98ba68a149c7cb9ebabdcfa94ed00ea99 /gcc/tree-vectorizer.h | |
parent | 9e79a25b66cb7e0ddbd1410ecc86cec25588d172 (diff) | |
download | gcc-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.h | 3 |
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); |