https://gcc.gnu.org/g:acb636a9c3ac18e7234e37c99bd6e9200b80b9bd

commit r14-11556-gacb636a9c3ac18e7234e37c99bd6e9200b80b9bd
Author: Pan Li <pan2...@intel.com>
Date:   Wed Dec 4 13:53:52 2024 +0800

    RISC-V: Add assert for insn operand out of range access [PR117878][NFC]
    
    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>

Diff:
---
 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 33df1518d4a9..d95fb893c82a 100644
--- a/gcc/config/riscv/riscv-v.cc
+++ b/gcc/config/riscv/riscv-v.cc
@@ -4966,6 +4966,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;
 }
@@ -5014,6 +5017,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;
 }

Reply via email to