https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123283
Bug ID: 123283
Summary: [16 regression] [RISC-V] libgo miscompiled by
r16-5947-ga6c50ec2c6ebcb
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: [email protected]
CC: hjl.tools at gmail dot com
Target Milestone: ---
Target: riscv64-*-*
All go programs fail at runtime:
fatal error: atomicor8
runtime: panic before malloc heap initialized
runtime stack:
runtime.dopanic__m
../../../gcc/libgo/go/runtime/panic.go:1207
runtime.fatalthrow
../../../gcc/libgo/go/runtime/panic.go:1073
runtime.throw
../../../gcc/libgo/go/runtime/panic.go:1044
runtime.check
../../../gcc/libgo/go/runtime/runtime1.go:252
main
../../../gcc/libgo/runtime/go-main.c:53
__libc_start_call_main
:0
__libc_start_main@GLIBC_2.27
:0
_start
../sysdeps/riscv/start.S:67
:0
FAIL: go.go-torture/execute/array-1.go execution, -O0
These lines from libgo/go/runtime1.go are miscompiled:
m = [4]byte{1, 1, 1, 1}
atomic.Or8(&m[1], 0xf0)
before:
22b80: 01010737 lui a4,0x1010
22b86: 10170713 addi a4,a4,257 # 1010101
<.LLST7481+0xfb63c3>
22b8a: f007879b addiw a5,a5,-256 # ff00 <.LM8234+0xc>
22b8e: c03a sw a4,0(sp)
22b90: fff7c613 not a2,a5
22b94: 00110413 addi s0,sp,1
22b98: 76fd lui a3,0xfffff
22b9a: 160125af lr.w.aqrl a1,(sp)
22b9e: 00d5e533 or a0,a1,a3
22ba2: 8d7d and a0,a0,a5
22ba4: 00c5f833 and a6,a1,a2
22ba8: 00a86833 or a6,a6,a0
22bac: 1b01252f sc.w.rl a0,a6,(sp)
22bb0: f56d bnez a0,22b9a <.L1^B73>
after:
22912: 45a2 lw a1,8(sp)
22914: 4532 lw a0,12(sp)
22916: 010107b7 lui a5,0x1010
2291a: 10178793 addi a5,a5,257 # 1010101
<.LLST7477+0xfba98f>
2291e: c83e sw a5,16(sp)
22920: 01110413 addi s0,sp,17
22924: 77fd lui a5,0xfffff
22926: 01010813 addi a6,sp,16
2292a: 1608272f lr.w.aqrl a4,(a6)
2292e: 00f766b3 or a3,a4,a5
22932: 8eed and a3,a3,a1
22934: 00a77633 and a2,a4,a0
22938: 8e55 or a2,a2,a3
2293a: 1ac826af sc.w.rl a3,a2,(a6)
2293e: f6f5 bnez a3,2292a <.L1^B73>
Note that the contents of 8(sp) and 12(sp) are never initialized.