LGTM
On Wed, Dec 4, 2024 at 4:31 PM <pan2...@intel.com> wrote: > > From: Pan Li <pan2...@intel.com> > > According to the the initial analysis of PR117878, the ice comes from > the out-of-range operand access for recog_data.operand[]. Thus, add > one assert here to expose this explicitly. > > PR target/117878 > > gcc/ChangeLog: > > * config/riscv/riscv-v.cc (vlmax_avl_type_p): Add assert for > out of range access. > (nonvlmax_avl_type_p): Ditto. > > Signed-off-by: Pan Li <pan2...@intel.com> > --- > gcc/config/riscv/riscv-v.cc | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc > index ee7a0128c0e..47bc0255aa3 100644 > --- a/gcc/config/riscv/riscv-v.cc > +++ b/gcc/config/riscv/riscv-v.cc > @@ -5174,6 +5174,9 @@ vlmax_avl_type_p (rtx_insn *rinsn) > int index = get_attr_avl_type_idx (rinsn); > if (index == INVALID_ATTRIBUTE) > return false; > + > + gcc_assert (index < recog_data.n_operands); > + > rtx avl_type = recog_data.operand[index]; > return INTVAL (avl_type) == VLMAX; > } > @@ -5222,6 +5225,9 @@ nonvlmax_avl_type_p (rtx_insn *rinsn) > int index = get_attr_avl_type_idx (rinsn); > if (index == INVALID_ATTRIBUTE) > return false; > + > + gcc_assert (index < recog_data.n_operands); > + > rtx avl_type = recog_data.operand[index]; > return INTVAL (avl_type) == NONVLMAX; > } > -- > 2.43.0 >