On 7/26/24 06:30, Richard Biener wrote:
On Thu, May 30, 2024 at 2:11 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 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
I'd like to reproduce but this testcase doesn't exist?
The testcase was added in patch 1 of this series:
https://inbox.sourceware.org/gcc-patches/20240530000512.2625173-2-patr...@rivosinc.com/
There's also no bugreport to find a testcase it seems.
It depends on a compiler option added in patch 1 so the failure doesn't
appear on tip-of-tree. I can file a bugzilla if that's preferred but
I held off since that didn't seem appropriate for unlanded changes.
Patrick
Richard.
@@ -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