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.

Reply via email to