https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127269
Bug ID: 127269
Summary: [RISC-V] ICE in riscv_v_widen_constraint_ok during IRA
pass with -march=rv64gcv
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: groche97 at gmail dot com
Target Milestone: ---
Testcase:
#include <riscv_vector.h>
vint32m2_t f(void) {
vint16m2_t a;
vint16m1_t b = __riscv_vget_v_i16m2_i16m1(a, 0);
vint32m2_t c = __riscv_vwmul_vx_i32m2(b, 1, 0);
return c;
}
Command:
gcc-17 -c minimal.c -march=rv64gcv -mabi=lp64d -O1
during RTL pass: ira
testcase.c: In function âfâ:
testcase.c:8:1: internal compiler error: in riscv_v_widen_constraint_ok, at
config/riscv/riscv-v.cc:6558
8 | }
| ^
0x2adb1ab43b diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*, void**,
diagnostics::kind)
???:0
0x2adb1a20c3 internal_error(char const*, ...)
???:0
0x2ad8a58243 fancy_abort(char const*, int, char const*)
???:0
0x2ad980707d riscv_vector::riscv_v_widen_constraint_ok(unsigned int,
machine_mode, unsigned int, machine_mode)
???:0
0x2ad9093345 lra_get_dependent_filter(int, machine_mode, unsigned int,
machine_mode, bool)
???:0
0x2ad9041d4f ira_traverse_loop_tree(bool, ira_loop_tree_node*, void
(*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*))
???:0
0x2ad90589cd ira_color()
???:0
/usr/libexec/gcc/riscv64-unknown-linux-gnu/17/cc1 -quiet -imultilib .
testcase.c -quiet -dumpbase testcase.c -dumpbase-ext .c -march=rv64gcv
-mabi=lp64d -misa-spec=20191213 -mtls-dialect=trad
-march=rv64imafdcv_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b
-O1 -foffload-options=-fno-stack-protector -o /tmp/ccDRAM3h.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://bugs.gentoo.org/> for instructions.
gcc-17 -v
Using built-in specs.
COLLECT_GCC=gcc-17
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/riscv64-unknown-linux-gnu/17/lto-wrapper
Target: riscv64-unknown-linux-gnu
Configured with:
/usr/riscv64-unknown-linux-gnu/tmp/portage/sys-devel/gcc-17.0.9999/work/gcc-17.0.9999/configure
--host=riscv64-unknown-linux-gnu --target=riscv64-unknown-linux-gnu
--build=x86_64-pc-linux-gnu --prefix=/usr
--bindir=/usr/riscv64-unknown-linux-gnu/gcc-bin/17
--includedir=/usr/lib/gcc/riscv64-unknown-linux-gnu/17/include
--datadir=/usr/share/gcc-data/riscv64-unknown-linux-gnu/17
--mandir=/usr/share/gcc-data/riscv64-unknown-linux-gnu/17/man
--infodir=/usr/share/gcc-data/riscv64-unknown-linux-gnu/17/info
--with-gxx-include-dir=/usr/lib/gcc/riscv64-unknown-linux-gnu/17/include/g++-v17
--disable-silent-rules --disable-dependency-tracking
--with-python-dir=/share/gcc-data/riscv64-unknown-linux-gnu/17/python
--enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt
--disable-werror --with-system-zlib --enable-nls --without-included-gettext
--disable-libunwind-exceptions --enable-checking=yes,extra
--with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 17.0.9999 p,
commit 4e8f229f9075e37ecb5e69346810e2c1090a274f' --with-gcc-major-version-only
--enable-libstdcxx-time --enable-lto --disable-libstdcxx-pch
--enable-linker-build-id --disable-libada --enable-shared
--enable-threads=posix --with-build-sysroot=/usr/riscv64-unknown-linux-gnu
--enable-__cxa_atexit --enable-clocale=gnu --disable-multilib
--disable-fixed-point --with-abi=lp64d --enable-libgomp --disable-libssp
--disable-systemtap --disable-valgrind-annotations --disable-valgrind-interop
--disable-vtable-verify --disable-libvtv --with-zstd --without-isl
--enable-default-pie --enable-host-pie --enable-host-bind-now
--enable-default-ssp --disable-fixincludes
--with-gxx-libcxx-include-dir=/usr/riscv64-unknown-linux-gnu/usr/include/c++/v1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 17.0.0 20260907 (experimental)
da15e5fec25eeb2c3163ddf7de11a1036da03b96 (Gentoo 17.0.9999 p, commit
4e8f229f9075e37ecb5e69346810e2c1090a274f)
I've tested this testcase with a few gcc-17 versions and it fails with all of
them, but works fine with gcc-16.
I try other vector combinations involving __riscv_vget_v_i16m2_i16m1 or
__riscv_vwmul_vx_i32m2 but only fails with this combination as I can tested.
rs1 in __riscv_vwmul_vx_i32m2 must be different to 0 to reproduce the failure