https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117483
Bug ID: 117483
Summary: [15 Regression] ICE: in merge, at
config/riscv/riscv-vsetvl.cc:2106
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:
char a, b, f;
short c, h;
int d[5];
int e;
long *g;
short (*i)[4];
int main() {
e = 906784;
char *j = &f;
short *k = &h;
for (short l = 0; l < 23; l += 740314495218734 - 29738)
for (unsigned char m = ~!g[l] - 255; m < 24; m += 3) {
a = k[m];
b += j[1] ?: d[6];
c ^= i[010][l];
}
}
Command/backtrace:
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/bin/riscv64-unknown-linux-gnu-gcc
> -fsigned-char -fno-strict-aliasing -fwrapv -march=rv64gcv_zvl256b -O3 red.c
> -o rv64gcv.out
during RTL pass: vsetvl
red.c: In function 'main':
red.c:17:1: internal compiler error: in merge, at
config/riscv/riscv-vsetvl.cc:2106
17 | }
| ^
0x2f0de35 internal_error(char const*, ...)
../../../gcc/gcc/diagnostic-global-context.cc:518
0xc69f90 fancy_abort(char const*, int, char const*)
../../../gcc/gcc/diagnostic.cc:1696
0xb9e239 demand_system::merge(vsetvl_info&, vsetvl_info const&)
../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:2106
0xb9e239 pre_vsetvl::earliest_fuse_vsetvl_info(int)
../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:2983
0x18ba5f4 pass_vsetvl::lazy_vsetvl()
../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:3558
0x18ba96a pass_vsetvl::execute(function*)
../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:3605
0x18ba96a pass_vsetvl::execute(function*)
../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:3588
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://godbolt.org/z/q9PsvhMxP