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

            Bug ID: 123317
           Summary: [16 Regression] RISC-V rv64gcv: miscompile at -Os
           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: ---

gcc version 16.0.0 20251225 (experimental)
Testcase:
#include <stdint.h>
#include <stdio.h>
#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
#define safe_mod_func_uint32_t_u_u(_ui1, _ui2)                                
\
  ({                                                                          
\
    uint32_t ui1 = _ui1;                                                      
\
    uint32_t ui2 = _ui2;                                                      
\
    ui2 == 0 ? ui1 : 0;                                                       
\
  })
uint64_t BS_CHECKSUM;
int32_t g_1577;
void func_5(int32_t, int32_t, uint64_t);
void func_1() {
  int16_t l_32 = 42122;
  func_5(l_32, 0, l_32);
}
void func_5(int32_t p_8, int32_t p_9, uint64_t p_10) {
  BS_VEC(uint64_t, 4) BS_VAR_1[9] = {};
  uint64_t LOCAL_CHECKSUM = 0;
  int32_t l_1981 = 0;
  for (p_10 = 0; p_10 <= 4; p_10 += g_1577 -= 1) {
    l_1981 ^= safe_mod_func_uint32_t_u_u(p_8, p_9);
    BS_VAR_1[0] -= (BS_VEC(uint64_t, 4)){l_1981, l_1981, l_1981, l_1981};
  }
  for (uint32_t BS_TEMP_121 = 0; BS_TEMP_121 < 9; BS_TEMP_121++)
    for (uint32_t BS_TEMP_122 = 0; BS_TEMP_122 < 4; BS_TEMP_122++)
      LOCAL_CHECKSUM ^=
          BS_VAR_1[BS_TEMP_121][BS_TEMP_122] + LOCAL_CHECKSUM >> 2;
  BS_CHECKSUM += LOCAL_CHECKSUM;
}
int main() {
  func_1();
  printf("BackSmith Checksum = 0x%016llx\n", BS_CHECKSUM);
}

Command:
> riscv64-unknown-linux-musl-gcc -Os -march=rv64gcv -static a.c
> qemu-riscv64 a.out
BackSmith Checksum = 0x3500000007000881

> riscv64-unknown-linux-musl-gcc -O1 -march=rv64gcv -static a.c
> qemu-riscv64 a.out
BackSmith Checksum = 0x0000000000000881

Reply via email to