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

            Bug ID: 123108
           Summary: [16 Regression] RISC-V rv64gcvb: ICE at -O2/O3 during
                    RTL pass: vsetvl
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xxs_chy at outlook dot com
  Target Milestone: ---

Reproducer: https://godbolt.org/z/8GeaxvE5z
Testcase:
#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
#include <riscv_bitmanip.h>
BS_VEC(uint8_t, 8) backsmith_pure_5(int64_t BS_ARG_0)
{
    BS_VEC(uint16_t, 32) BS_VAR_0;
    int16_t BS_TEMP_74 = 74;
    BS_VAR_0 =
        __builtin_convertvector(
            (BS_VEC(int16_t, 32)){
                BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74,
                BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74,
                BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74,
                BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74,
                BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74,
                BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74, BS_TEMP_74,
                BS_TEMP_74, BS_TEMP_74 },
            BS_VEC(uint16_t, 32))
        <= __builtin_convertvector(
            (BS_VEC(int64_t, 32)){
                BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0,
                BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0,
                BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0,
                BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0,
                BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0, BS_ARG_0,
                BS_ARG_0, BS_ARG_0 },
            BS_VEC(uint16_t, 32));
    BS_VAR_0[__builtin_convertvector(
        (BS_VEC(int64_t, 16)){}, BS_VEC(uint64_t, 16))[(uint64_t)BS_ARG_0]] =
        BS_ARG_0;
    if (__builtin_convertvector(
            (BS_VEC(int64_t, 4)){ BS_ARG_0 },
            BS_VEC(uint64_t, 4))[BS_VAR_0[0] < 4 ? BS_VAR_0[0] : 0])
        return __builtin_convertvector((BS_VEC(uint16_t, 8)){},
                                       BS_VEC(uint8_t, 8));
}

Command:
> riscv64-unknown-linux-musl-gcc -march=rv64gcv -O3 a.c

Dump:
during RTL pass: vsetvl
<source>: In function 'backsmith_pure_5':
<source>:35:1: internal compiler error: in calculate_ratio, at
config/riscv/riscv-v.cc:916
   35 | }
      | ^
0x72349d029e3f __libc_start_main
        ???:0
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1

Reply via email to