Skip to content

[RISCV] Miscompile with -O3 #90380

Closed
@dtcxzyw

Description

@dtcxzyw

Reduced test case:

#include "csmith.h"
uint8_t a = 55;
int32_t b;
int32_t c[4];
uint32_t e[4];
void f() {
  int32_t *o = &c[1];
  *o = 223;
  if (safe_mod_func_uint8_t_u_u(safe_sub_func_uint8_t_u_u(b, 1), a |= *o)) {
    e[0] = ++a;
  }
}
int main() {
  b = 0;
  f();
  printf("%d\n", a);
  return 0;
}
> bin/clang -O0 --target=riscv64-linux-gnu test.c -I/usr/include/csmith -w
> qemu-riscv64 -L /usr/riscv64-linux-gnu/ a.out
255
> bin/clang -O3 --target=riscv64-linux-gnu test.c -I/usr/include/csmith -w
> qemu-riscv64 -L /usr/riscv64-linux-gnu/ a.out
224

llvm version: d6c4ebb

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions