https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116655
Bug ID: 116655 Summary: RISC-V: ICE with -mrvv-max-lmul=dynamic in compute_nregs_for_mode Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: patrick at rivosinc dot com Target Milestone: --- Testcase: short a[5]; int b() { int c = 0; for (; c <= 4; c++) if (a[c]) break; return c; } Command: > /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/bin/riscv64-unknown-linux-gnu-gcc > -O3 -march=rv64imv -mrvv-max-lmul=dynamic preprocessed.c -c -S -o /dev/null during GIMPLE pass: vect preprocessed.c: In function 'b': preprocessed.c:2:5: internal compiler error: in compute_nregs_for_mode, at config/riscv/riscv-vector-costs.cc:457 2 | int b() { | ^ 0x2e23485 internal_error(char const*, ...) ../../../gcc/gcc/diagnostic-global-context.cc:492 0xc51306 fancy_abort(char const*, int, char const*) ../../../gcc/gcc/diagnostic.cc:1658 0xb8bde2 compute_nregs_for_mode ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:457 0xb8bde2 max_number_of_live_regs ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:496 0xb8bde2 has_unexpected_spills_p ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:845 0x1893d06 riscv_vector::costs::record_potential_unexpected_spills(_loop_vec_info*) ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:909 0x1893d06 riscv_vector::costs::record_potential_unexpected_spills(_loop_vec_info*) ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:897 0x18943fa riscv_vector::costs::analyze_loop_vinfo(_loop_vec_info*) ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:891 0x18943fa riscv_vector::costs::add_stmt_cost(int, vect_cost_for_stmt, _stmt_vec_info*, _slp_tree*, tree_node*, int, vect_cost_model_location) ../../../gcc/gcc/config/riscv/riscv-vector-costs.cc:1234 0x16c4663 add_stmt_cost(vector_costs*, int, vect_cost_for_stmt, _stmt_vec_info*, _slp_tree*, tree_node*, int, vect_cost_model_location) ../../../gcc/gcc/tree-vectorizer.h:1894 0x16c4663 add_stmt_costs(vector_costs*, vec<stmt_info_for_cost, va_heap, vl_ptr>*) ../../../gcc/gcc/tree-vectorizer.h:1941 0x16c4663 vect_slp_analyze_operations(vec_info*) ../../../gcc/gcc/tree-vect-slp.cc:8000 0x168a7bb vect_analyze_loop_2 ../../../gcc/gcc/tree-vect-loop.cc:2954 0x168c570 vect_analyze_loop_1 ../../../gcc/gcc/tree-vect-loop.cc:3409 0x168cd09 vect_analyze_loop(loop*, vec_info_shared*) ../../../gcc/gcc/tree-vect-loop.cc:3567 0x16d9c54 try_vectorize_loop_1 ../../../gcc/gcc/tree-vectorizer.cc:1068 0x16d9c54 try_vectorize_loop ../../../gcc/gcc/tree-vectorizer.cc:1184 0x16da57c execute ../../../gcc/gcc/tree-vectorizer.cc:1300 Godbolt: https://godbolt.org/z/fneanToPK Found via fuzzer.