https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122652

Robin Dapp <rdapp at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
                 CC|                            |rdapp at gcc dot gnu.org
   Last reconfirmed|                            |2025-11-12

--- Comment #1 from Robin Dapp <rdapp at gcc dot gnu.org> ---
Confirmed.

We're missing a null check in the loop checking for uses of the first-fault
load's VL.

The following should help:

diff --git a/gcc/config/riscv/riscv-vsetvl.cc
b/gcc/config/riscv/riscv-vsetvl.cc
index 580ac9cbe8e..127187b4555 100644
--- a/gcc/config/riscv/riscv-vsetvl.cc
+++ b/gcc/config/riscv/riscv-vsetvl.cc
@@ -1176,7 +1176,7 @@ public:
     if (fault_first_load_p (insn->rtl ()))
       {
        for (insn_info *i = insn->next_nondebug_insn ();
-            i->bb () == insn->bb (); i = i->next_nondebug_insn ())
+            i && i->bb () == insn->bb (); i = i->next_nondebug_insn ())
          {
            if (find_access (i->defs (), VL_REGNUM))
              break;

Also a straightforward backport candidate.

Reply via email to