| Issue |
87042
|
| Summary |
[RISCV] Miscompile with -O3
|
| Labels |
backend:RISC-V,
miscompilation
|
| Assignees |
dtcxzyw
|
| Reporter |
dtcxzyw
|
Reduced test case:
```
#include <stdio.h>
#include <stdint.h>
int16_t g;
int32_t f;
uint32_t h;
uint64_t j = 6;
static uint64_t o(int16_t x, uint32_t *a, int16_t ac) {
if (!x) j |= f;
f = ac ? 7 % ac : 7;
return j;
}
int main() {
uint64_t v1 = o(g, &h, 8);
uint64_t v2 = o(v1, &h, 0);
o(v2 >> 8, &h, 0);
printf("%lu\n", j);
return 0;
}
```
```
$ gcc -O0 -fsanitize=address,undefined test.c && ./a.out
7
$ bin/clang -O3 --target=riscv64-linux-gnu test.c
$ qemu-riscv64 -L /usr/riscv64-linux-gnu ./a.out
13
```
llvm version: ba6b2d22af177a72b132cdb8e9350a708f282d2c
qemu version: v8.2.0
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs