]> gcc.gnu.org Git - gcc.git/commit
RISC-V: Fix ICE in riscv vector costs
authordemin.han <demin.han@starfivetech.com>
Wed, 6 Mar 2024 09:34:34 +0000 (17:34 +0800)
committerdemin.han <demin.han@starfivetech.com>
Fri, 8 Mar 2024 02:31:43 +0000 (10:31 +0800)
commit42187c6968af9907de1f9b7563d87de739857684
tree39cb15eb34a61396915fe93525930076f094533c
parenta0e945888d973fc1a4a9d2944aa7e96d2a4d7581
RISC-V: Fix ICE in riscv vector costs

The following code can result in ICE:
-march=rv64gcv --param riscv-autovec-lmul=dynamic -O3

char *jpeg_difference7_input_buf;
void jpeg_difference7(int *diff_buf) {
  unsigned width;
  int samp, Rb;
  while (--width) {
    Rb = samp = *jpeg_difference7_input_buf;
    *diff_buf++ = -(int)(samp + (long)Rb >> 1);
  }
}

One biggest_mode update missed in one branch and trigger assertion fail.
gcc_assert (biggest_size >= mode_size);

Tested On RV64 and no regression.

PR target/114264

gcc/ChangeLog:

* config/riscv/riscv-vector-costs.cc: Fix ICE

gcc/testsuite/ChangeLog:

* gcc.dg/vect/costmodel/riscv/rvv/pr114264.c: New test.

Signed-off-by: demin.han <demin.han@starfivetech.com>
gcc/config/riscv/riscv-vector-costs.cc
gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/pr114264.c [new file with mode: 0644]
This page took 0.071348 seconds and 5 git commands to generate.