https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115789
Bug ID: 115789
Summary: gcc miscompile itself with CFLAGS -O3
-march=rv64gcv_zvl256b
Product: gcc
Version: 14.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: lu_zero at gentoo dot org
Target Milestone: ---
while building with the produced compiler `gcc -O3 -march=rv64gcv_zvl256b
conftest.c`
the following sources
```
#include <stdio.h>
int
main (void)
{
FILE *f = fopen ("conftest.out", "w");
if (!f)
return 1;
return ferror (f) || fclose (f) != 0;
;
return 0;
}
```
You get this
```
Program received signal SIGBUS, Bus error.
0x0000002aad0872a2 in record_value_for_reg (reg=0x3ff744cfc0, insn=0x0,
value=0x0)
at
/usr/riscv64-unknown-linux-gnu/tmp/portage/sys-devel/gcc-14.1.1_p20240622/work/gcc-14-20240622/gcc/combine.cc:13370
13370 rsp->last_set_mode = VOIDmode;
(gdb) list
13365
13366 if (insn)
13367 rsp->last_set = insn;
13368
13369 rsp->last_set_value = 0;
13370 rsp->last_set_mode = VOIDmode;
13371 rsp->last_set_nonzero_bits = 0;
13372 rsp->last_set_sign_bit_copies = 0;
13373 rsp->last_death = 0;
13374 rsp->truncated_to_mode = VOIDmode;
```
```
(gdb) disassemble $pc-20,$pc+20
Dump of assembler code from 0x2aad08728e to 0x2aad0872b6:
0x0000002aad08728e <record_value_for_reg(rtx, rtx_insn*, rtx)+564>:
vmv.v.iv4,0
0x0000002aad087292 <record_value_for_reg(rtx, rtx_insn*, rtx)+568>: slli
a4,a4,0x20
0x0000002aad087294 <record_value_for_reg(rtx, rtx_insn*, rtx)+570>: srli
a4,a4,0x20
0x0000002aad087296 <record_value_for_reg(rtx, rtx_insn*, rtx)+572>:
vsetvlia5,a4,e64,m1,ta,ma
0x0000002aad08729a <record_value_for_reg(rtx, rtx_insn*, rtx)+576>:
vsuxei64.v v2,(a2),v1
0x0000002aad08729e <record_value_for_reg(rtx, rtx_insn*, rtx)+580>:
vsetvlizero,zero,e16,mf4,ta,ma
=> 0x0000002aad0872a2 <record_value_for_reg(rtx, rtx_insn*, rtx)+584>:
vsuxei64.v v3,(a1),v1
0x0000002aad0872a6 <record_value_for_reg(rtx, rtx_insn*, rtx)+588>:
vsetvlizero,zero,e64,m1,ta,ma
0x0000002aad0872aa <record_value_for_reg(rtx, rtx_insn*, rtx)+592>:
vsuxei64.v v2,(a0),v1
0x0000002aad0872ae <record_value_for_reg(rtx, rtx_insn*, rtx)+596>:
vsetvlizero,zero,e8,mf8,ta,ma
0x0000002aad0872b2 <record_value_for_reg(rtx, rtx_insn*, rtx)+600>:
vsuxei64.v v4,(a6),v1
(gdb) i r a1
a1 0x2aaee89f71 183323107185
```