https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117878
Bug ID: 117878 Summary: RISC-V: ICE when build spec17 526.blender_r with -O3 -march=rv64gcv_zvl256b Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: pan2.li at intel dot com Target Milestone: --- There will be one ICE when build spec2017 with "-O3 -march=rv64gcv_zvl256b", the ICE may looks like below: during RTL pass: vsetvl dump file: tmp.c.338r.vsetvl blender/source/blender/blenloader/intern/versioning_legacy.c: In function 'blo_do_versions_pre250': blender/source/blender/blenloader/intern/versioning_legacy.c:3624:1: internal compiler error: Segmentation fault 3624 | } | ^ 0x44c9b27 internal_error(char const*, ...) /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/diagnostic-global-context.cc:517 0x1bc7ba1 crash_signal /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/toplev.cc:322 0x7e2c1004531f ??? ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0 0x22e238b riscv_vector::vlmax_avl_type_p(rtx_insn*) /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-v.cc:5178 0x22e8e2a get_avl /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-vsetvl.cc:398 0x22f13cd vsetvl_info::parse_insn(rtl_ssa::insn_info*) /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-vsetvl.cc:1037 0x22f08fe vsetvl_info::vsetvl_info(rtl_ssa::insn_info*) /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-vsetvl.cc:826 0x22eb764 pre_vsetvl::fuse_local_vsetvl_info() /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-vsetvl.cc:2732 0x22ef52c pass_vsetvl::lazy_vsetvl() /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-vsetvl.cc:3549 0x22ef817 pass_vsetvl::execute(function*) /home/pli/gcc/444/riscv-gnu-toolchain/gcc/__RISC-V_BUILD__/../gcc/config/riscv/riscv-vsetvl.cc:3611 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. The vsetvl pass meets one rtl insn like blow but it shouldn't be here after split1. (insn 38816 38815 38817 149 (set (reg:V32QI 102 v6 [20405]) (lshiftrt:V32QI (reg:V32QI 102 v6 [20403]) (const_vector:V32QI [ (const_int 2 [0x2]) repeated x32 ]))) 24628 {vlshrv32qi3} (nil)) This insn comes from reload(reload may generate standard name pattern), and then the underlying pass have no chance to split it. Thus, we need one similar way compares to ix86_pre_reload_split, to avoid pattern generation during reload pass. I am testing a fix but seems not easy to reduce the test files.