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

Reply via email to