https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122672

            Bug ID: 122672
           Summary: RISCV: ICE in gen_lowpart_general, at rtlhooks.cc:57
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ybni at cse dot cuhk.edu.hk
  Target Milestone: ---

This code triggers ICE with `-O2 -mrvv-vector-bits=zvl`:

```c
char a;
int b;
int d(char *e) {
  int c = *(int *)e;
  if (c < 0)
    return 1;
  return 0;
}
int f() {
  {
    char g[] = {a, a, a, a};
    int h = d(g);
    b = h;
  }
  b &&f();
}
```

Compiler command:

```sh
riscv64-unknown-linux-gnu-gcc -O2 -mrvv-vector-bits=zvl -march=rv64gcv
-mabi=lp64d case.c
```

Crash:

```sh
case.c:16:1: internal compiler error: in gen_lowpart_general, at rtlhooks.cc:57
   16 | }
      | ^
```

Backtrace:

```sh
0x2b27c66 internal_error(char const*, ...)
        ../.././gcc/gcc/diagnostic-global-context.cc:517
0xa82bf3 fancy_abort(char const*, int, char const*)
        ../.././gcc/gcc/diagnostic.cc:1749
0xa4de8b gen_lowpart_general(machine_mode, rtx_def*)
        ../.././gcc/gcc/rtlhooks.cc:57
0x14a5573 riscv_legitimize_move(machine_mode, rtx_def*, rtx_def*)
        ../.././gcc/gcc/config/riscv/riscv.cc:3601
0x2346d24 gen_movdi(rtx_def*, rtx_def*)
        ../.././gcc/gcc/config/riscv/riscv.md:2492
0xd25154 rtx_insn* insn_gen_fn::operator()<rtx_def*, rtx_def*>(rtx_def*,
rtx_def*) const
        ../.././gcc/gcc/recog.h:472
0xd25154 emit_move_ccmode
        ../.././gcc/gcc/expr.cc:4455
0xd25154 emit_move_insn_1(rtx_def*, rtx_def*)
        ../.././gcc/gcc/expr.cc:4600
0xd25545 emit_move_insn(rtx_def*, rtx_def*)
        ../.././gcc/gcc/expr.cc:4751
0xf2038c lra_emit_move(rtx_def*, rtx_def*)
        ../.././gcc/gcc/lra.cc:509
0xf38ca6 curr_insn_transform
        ../.././gcc/gcc/lra-constraints.cc:4815
0xf39f03 lra_constraints(bool)
        ../.././gcc/gcc/lra-constraints.cc:5572
0xf228ba lra(_IO_FILE*, int)
        ../.././gcc/gcc/lra.cc:2455
0xedb07f do_reload
        ../.././gcc/gcc/ira.cc:5987
0xedb07f execute
        ../.././gcc/gcc/ira.cc:6175
```

Compiler version:

```sh
$ riscv64-unknown-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/data/yunboni/utils/compilers/riscv-gcc/libexec/gcc/riscv64-unknown-linux-gnu/15.1.0/lto-wrapper
Target: riscv64-unknown-linux-gnu
Configured with:
/data/yunboni/utils/compilers/repos/riscv-gnu-toolchain/gcc/configure
--target=riscv64-unknown-linux-gnu
--prefix=/data/yunboni/utils/compilers/riscv-gcc
--with-sysroot=/data/yunboni/utils/compilers/riscv-gcc/sysroot
--with-pkgversion=g1b306039a --with-system-zlib --enable-shared --enable-tls
--enable-languages=c,c++,fortran --disable-libmudflap --disable-libssp
--disable-libquadmath --disable-libsanitizer --disable-nls --disable-bootstrap
--src=.././gcc --disable-default-pie --disable-multilib --with-abi=lp64d
--with-arch=rv64gc --with-isa-spec=20191213 'CFLAGS_FOR_TARGET=-O2   
-mcmodel=medlow' 'CXXFLAGS_FOR_TARGET=-O2    -mcmodel=medlow'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.1.0 (g1b306039a)
```

Reply via email to