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.