On Wed, May 29, 2024 at 1:39 AM Patrick O'Neill <patr...@rivosinc.com> wrote: > > 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 xfail. > --- > 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 fd996a27501..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" } */ > -/* { xfail *-*-* } */ > > 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) So this shouldn't happen. Do you have a testcase where this triggers? If < nunits doesn't hold things will also go wrong. Richard. > + && constant_multiple_p (nunits, remain, &num)) > { > tree ptype; > new_vtype > -- > 2.43.2 >