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

Reply via email to