https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116351
Bug ID: 116351
Summary: [15 only] RISC-V ICE: in get_len_load_store_mode, at
optabs-tree.cc:664
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: patrick at rivosinc dot com
Target Milestone: ---
Testcase:
int a, b, c;
short d, e, f;
long(g)(long h) { return h; }
void i() {
for (; b; ++b) {
f = 5 >> a ? d : d << a;
e &= c | g(f);
}
}
Command/backtrace:
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/bin/riscv64-unknown-linux-gnu-gcc
> -O3 -march=rv64imd_xsfvcp -mrvv-vector-bits=zvl -Wall preprocessed.c -c -o
> /dev/null
during GIMPLE pass: vect
preprocessed.c: In function 'i':
preprocessed.c:4:6: internal compiler error: in get_len_load_store_mode, at
optabs-tree.cc:664
4 | void i() {
| ^
0x2db6465 internal_error(char const*, ...)
../../../gcc/gcc/diagnostic-global-context.cc:491
0xc4eb14 fancy_abort(char const*, int, char const*)
../../../gcc/gcc/diagnostic.cc:1772
0xad38f9 get_len_load_store_mode(machine_mode, bool, internal_fn*)
../../../gcc/gcc/optabs-tree.cc:664
0x1685f64 vect_verify_loop_lens
../../../gcc/gcc/tree-vect-loop.cc:1565
0x1685f64 vect_analyze_loop_2
../../../gcc/gcc/tree-vect-loop.cc:3078
0x1686d60 vect_analyze_loop_1
../../../gcc/gcc/tree-vect-loop.cc:3484
0x16874f9 vect_analyze_loop(loop*, vec_info_shared*)
../../../gcc/gcc/tree-vect-loop.cc:3642
0x16d21c4 try_vectorize_loop_1
../../../gcc/gcc/tree-vectorizer.cc:1067
0x16d21c4 try_vectorize_loop
../../../gcc/gcc/tree-vectorizer.cc:1183
0x16d2aec execute
../../../gcc/gcc/tree-vectorizer.cc:1299
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.
Godbolt: https://ice.godbolt.org/z/aEd5q4j8d
Found via fuzzer.