Not sure if this is a regression or not. Minimized test case produced with cvise. $ cat test3.i double CastDoubleToLong_x; long __attribute__DrawAffineImage_x; long CastDoubleToLong() { if (CastDoubleToLong_x) return 0; return CastDoubleToLong_x; } void __attribute__DrawAffineImage() { for (; __attribute__DrawAffineImage_x <= CastDoubleToLong();) ; } $ riscv64-unknown-linux-gnu-gcc -O2 -mcpu=sifive-u74 -c test3.i test3.i: In function ‘__attribute__DrawAffineImage’: test3.i:11:1: error: unrecognizable insn: 11 | } | ^ (insn 9 8 10 2 (set (reg:DI 140) (if_then_else:DI (eq:DF (reg:DF 136 [ CastDoubleToLong_x.0_4 ]) (reg:DF 142)) (reg:DI 141) (const_int 0 [0]))) -1 (nil)) during RTL pass: vregs test3.i:11:1: internal compiler error: in extract_insn, at recog.cc:2791 Please submit a full bug report, with preprocessed source (by using -freport-bug). See <https://bugs.gentoo.org/> for instructions. Passing -fdisable-rtl-vregs does not fix the problem as the same issue appears in sched1 pass; there is a little bit more context in the output. $ riscv64-unknown-linux-gnu-gcc -O2 -mcpu=sifive-u74 -c test3.i -fdisable-rtl-vregs cc1: note: disable pass rtl-vregs for functions in the range of [0, 4294967295] test3.i: In function ‘__attribute__DrawAffineImage’: test3.i:11:1: error: unrecognizable insn: 11 | } | ^ (insn 9 8 12 2 (set (reg:DI 140) (if_then_else:DI (eq:DF (reg:DF 136 [ CastDoubleToLong_x.0_4 ]) (reg:DF 142)) (reg:DI 141) (const_int 0 [0]))) -1 (expr_list:REG_DEAD (reg:DF 142) (expr_list:REG_DEAD (reg:DI 141) (expr_list:REG_DEAD (reg:DF 136 [ CastDoubleToLong_x.0_4 ]) (expr_list:REG_EQUAL (if_then_else:DI (eq:DF (reg:DF 136 [ CastDoubleToLong_x.0_4 ]) (const_double:DF 0.0 [0x0.0p+0])) (reg:DI 141) (const_int 0 [0])) (nil)))))) during RTL pass: sched1 test3.i:11:1: internal compiler error: in extract_insn, at recog.cc:2791 Please submit a full bug report, with preprocessed source (by using -freport-bug). See <https://bugs.gentoo.org/> for instructions. Reducing optimization to -O1 removes the issue: $ riscv64-unknown-linux-gnu-gcc -O1 -mcpu=sifive-u74 -c test3.i Removing CPU tuning also removes the issue: $ riscv64-unknown-linux-gnu-gcc -O2 -c test3.i Clang has no problems (though I'm not sure if it actually supports optimization for this CPU or if it's a no-op): $ clang -O2 -mcpu=sifive-u74 -c test3.i $ gcc --version --verbose Using built-in specs. COLLECT_AS_OPTIONS='--version' COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/riscv64-unknown-linux-gnu/13/lto-wrapper gcc (Gentoo 13.1.1_p20230527 p3) 13.1.1 20230527 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Target: riscv64-unknown-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-13.1.1_p20230527/work/gcc-13-20230527/configure --host=riscv64-unknown-linux-gnu --build=riscv64-unknown-linux-gnu --prefix=/usr --bindir=/usr/riscv64-unknown-linux-gnu/gcc-bin/13 --includedir=/usr/lib/gcc/riscv64-unknown-linux-gnu/13/include --datadir=/usr/share/gcc-data/riscv64-unknown-linux-gnu/13 --mandir=/usr/share/gcc-data/riscv64-unknown-linux-gnu/13/man --infodir=/usr/share/gcc-data/riscv64-unknown-linux-gnu/13/info --with-gxx-include-dir=/usr/lib/gcc/riscv64-unknown-linux-gnu/13/include/g++-v13 --with-python-dir=/share/gcc-data/riscv64-unknown-linux-gnu/13/python --enable-languages=c,c++ --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 13.1.1_p20230527 p3' --with-gcc-major-version-only --disable-esp --enable-libstdcxx-time --enable-lto --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --disable-fixed-point --with-abi=lp64d --enable-libgomp --disable-libssp --disable-libada --disable-cet --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp Thread model: posix Supported LTO compression algorithms: zlib gcc version 13.1.1 20230527 (Gentoo 13.1.1_p20230527 p3) COLLECT_GCC_OPTIONS='--version' '-v' '-march=rv64imafdc_zicsr_zifencei' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_zicsr_zifencei' '-dumpdir' 'a-' /usr/libexec/gcc/riscv64-unknown-linux-gnu/13/cc1 -quiet -v help-dummy -quiet -dumpdir a- -dumpbase help-dummy -march=rv64imafdc_zicsr_zifencei -mabi=lp64d -misa-spec=20191213 -march=rv64imafdc_zicsr_zifencei -version --version -o /tmp/ccz9UPg6.s GNU C17 (Gentoo 13.1.1_p20230527 p3) version 13.1.1 20230527 (riscv64-unknown-linux-gnu) compiled by GNU C version 13.1.1 20230527, GMP version 6.2.1, MPFR version 4.2.0-p9, MPC version 1.3.1, isl version isl-0.26-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 COLLECT_GCC_OPTIONS='--version' '-v' '-march=rv64imafdc_zicsr_zifencei' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_zicsr_zifencei' '-dumpdir' 'a-' /usr/lib/gcc/riscv64-unknown-linux-gnu/13/../../../../riscv64-unknown-linux-gnu/bin/as -v --traditional-format -fpic -march=rv64imafdc_zicsr_zifencei -march=rv64imafdc_zicsr_zifencei -mabi=lp64d -misa-spec=20191213 --version -o /tmp/ccfR6jO2.o /tmp/ccz9UPg6.s GNU assembler version 2.40.0 (riscv64-unknown-linux-gnu) using BFD version (Gentoo 2.40 p5) 2.40.0 GNU assembler (Gentoo 2.40 p5) 2.40.0 Copyright (C) 2023 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or later. This program has absolutely no warranty. This assembler was configured for a target of `riscv64-unknown-linux-gnu'. COMPILER_PATH=/usr/libexec/gcc/riscv64-unknown-linux-gnu/13/:/usr/libexec/gcc/riscv64-unknown-linux-gnu/13/:/usr/libexec/gcc/riscv64-unknown-linux-gnu/:/usr/lib/gcc/riscv64-unknown-linux-gnu/13/:/usr/lib/gcc/riscv64-unknown-linux-gnu/:/usr/lib/gcc/riscv64-unknown-linux-gnu/13/../../../../riscv64-unknown-linux-gnu/bin/ LIBRARY_PATH=/usr/lib/gcc/riscv64-unknown-linux-gnu/13/:/usr/lib/gcc/riscv64-unknown-linux-gnu/13/../../../../riscv64-unknown-linux-gnu/lib/:/lib64/lp64d/:/usr/lib64/lp64d/:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='--version' '-v' '-march=rv64imafdc_zicsr_zifencei' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_zicsr_zifencei' '-dumpdir' 'a.' /usr/libexec/gcc/riscv64-unknown-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/riscv64-unknown-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/riscv64-unknown-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccJlooLI.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -melf64lriscv -dynamic-linker /lib/ld-linux-riscv64-lp64d.so.1 -pie --version /usr/lib64/lp64d/Scrt1.o /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crti.o /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/riscv64-unknown-linux-gnu/13 -L/usr/lib/gcc/riscv64-unknown-linux-gnu/13/../../../../riscv64-unknown-linux-gnu/lib -L/lib64/lp64d -L/usr/lib64/lp64d /tmp/ccfR6jO2.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crtendS.o /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crtn.o collect2 version 13.1.1 20230527 /usr/lib/gcc/riscv64-unknown-linux-gnu/13/../../../../riscv64-unknown-linux-gnu/bin/ld -plugin /usr/libexec/gcc/riscv64-unknown-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/riscv64-unknown-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccJlooLI.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -melf64lriscv -dynamic-linker /lib/ld-linux-riscv64-lp64d.so.1 -pie --version /usr/lib64/lp64d/Scrt1.o /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crti.o /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/riscv64-unknown-linux-gnu/13 -L/usr/lib/gcc/riscv64-unknown-linux-gnu/13/../../../../riscv64-unknown-linux-gnu/lib -L/lib64/lp64d -L/usr/lib64/lp64d /tmp/ccfR6jO2.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crtendS.o /usr/lib/gcc/riscv64-unknown-linux-gnu/13/crtn.o GNU ld (Gentoo 2.40 p5) 2.40.0 Copyright (C) 2023 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. COLLECT_GCC_OPTIONS='--version' '-v' '-march=rv64imafdc_zicsr_zifencei' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_zicsr_zifencei' '-dumpdir' 'a.'
Dup of bug 109760. *** This bug has been marked as a duplicate of bug 109760 ***