Bug 110095 - RISC-V: unrecognizable insn during RTL pass: vregs with -O2 -mcpu=sifive-u74
Summary: RISC-V: unrecognizable insn during RTL pass: vregs with -O2 -mcpu=sifive-u74
Status: RESOLVED DUPLICATE of bug 109760
Alias: None
Product: gcc
Classification: Unclassified
Component: rtl-optimization (show other bugs)
Version: 13.1.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-06-02 16:26 UTC by matoro
Modified: 2023-06-02 21:00 UTC (History)
1 user (show)

See Also:
Host: riscv64-unknown-linux-gnu
Target: riscv64-unknown-linux-gnu
Build: riscv64-unknown-linux-gnu
Known to work:
Known to fail: 13.1.1
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description matoro 2023-06-02 16:26:26 UTC
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.'
Comment 1 Andrew Pinski 2023-06-02 21:00:40 UTC
Dup of bug 109760.

*** This bug has been marked as a duplicate of bug 109760 ***