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 ```