From: Greg McGary <g...@rivosinc.com> gcc/ChangeLog: * gcc/tree-vect-stmts.cc (gcc/tree-vect-stmts.cc): Prevent divide-by-zero. * testsuite/gcc.target/riscv/rvv/autovec/no-segment.c: Remove dg-ice. --- No changes in v3. Depends on the risc-v backend option added in patch 1 to trigger the ICE. --- gcc/testsuite/gcc.target/riscv/rvv/autovec/no-segment.c | 1 - gcc/tree-vect-stmts.cc | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/no-segment.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/no-segment.c index dfbe09f01a1..79d03612a22 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/no-segment.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/no-segment.c @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-march=rv64gcv -mabi=lp64d -mrvv-vector-bits=scalable -O3 -mno-autovec-segment" } */ -/* { dg-ice "Floating point exception" } */ enum e { c, d }; enum g { f }; diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 4219ad832db..34f5736ba00 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -11558,7 +11558,8 @@ vectorizable_load (vec_info *vinfo, - (vec_num * j + i) * nunits); /* remain should now be > 0 and < nunits. */ unsigned num; - if (constant_multiple_p (nunits, remain, &num)) + if (known_gt (remain, 0) + && constant_multiple_p (nunits, remain, &num)) { tree ptype; new_vtype -- 2.43.2