]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.17] cmd/compile: correct type of pointer difference on RISCV64
authorCherry Mui <cherryyz@google.com>
Mon, 14 Feb 2022 17:43:27 +0000 (12:43 -0500)
committerDmitri Shuralyov <dmitshur@golang.org>
Fri, 18 Feb 2022 00:51:21 +0000 (00:51 +0000)
commit7d8fa657893f93dd04071bb164166d12fbdeb8a5
treef0df8ec08bce5a45a09aebb6e2d81bf9653a7927
parent1ba25fa28871cd3862f8d539155a60e004b42d56
[release-branch.go1.17] cmd/compile: correct type of pointer difference on RISCV64

Pointer comparison is lowered to the following on RISCV64

(EqPtr x y) => (SEQZ (SUB <x.Type> x y))

The difference of two pointers (the SUB) should not be pointer
type. Otherwise it can cause the GC to find a bad pointer.

Updates #51101.
Fixes #51199.

Change-Id: I7e73c2155c36ff403c032981a9aa9cccbfdf0f64
Reviewed-on: https://go-review.googlesource.com/c/go/+/385655
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit 1ed30ca537a05b887f8479027b6363a03f957610)
Reviewed-on: https://go-review.googlesource.com/c/go/+/386474
src/cmd/compile/internal/ssa/gen/RISCV64.rules
src/cmd/compile/internal/ssa/rewriteRISCV64.go
test/fixedbugs/issue51101.go [new file with mode: 0644]