[go] cmd/compile: fix prove to generate Const64 for 64bits slicemasks

2 views
Skip to first unread message

Jorropo (Gerrit)

unread,
Jun 6, 2026, 12:17:07 AM (yesterday) Jun 6
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Jorropo has uploaded the change for review

Commit message

cmd/compile: fix prove to generate Const64 for 64bits slicemasks

Fixes #79874
Change-Id: I155b6571db5b3c3537c549eadfe87a14b7d5836a

Change diff

diff --git a/src/cmd/compile/internal/ssa/prove.go b/src/cmd/compile/internal/ssa/prove.go
index 6f21432..6c991bd 100644
--- a/src/cmd/compile/internal/ssa/prove.go
+++ b/src/cmd/compile/internal/ssa/prove.go
@@ -2742,7 +2742,7 @@
// if x is larger than -y (y is negative), then slicemask is -1.
lim := ft.limits[x.ID]
if lim.umin > uint64(-delta) {
- if cap.Op == OpAdd64 {
+ if cap.Type.Size() == 8 {
v.reset(OpConst64)
} else {
v.reset(OpConst32)
diff --git a/test/fixedbugs/issue79874.go b/test/fixedbugs/issue79874.go
new file mode 100644
index 0000000..50059ab
--- /dev/null
+++ b/test/fixedbugs/issue79874.go
@@ -0,0 +1,28 @@
+// run
+
+//go:build unix && !(386 || arm || mips || mipsle)
+
+package main
+
+import (
+ "encoding/binary"
+ "fmt"
+)
+
+const l = 1 << 34
+
+//go:noinline
+func bug(s []byte) []byte {
+ if len(s) < l+8 {
+ panic("too short")
+ }
+ return s[min(l, len(s)):]
+}
+
+func main() {
+ s := make([]byte, l+8)
+ binary.LittleEndian.PutUint64(s[l:], l)
+ if v := binary.LittleEndian.Uint64(bug(s)); v != l {
+ panic(fmt.Sprintf("got %d, want %d", v, l))
+ }
+}

Change information

Files:
  • M src/cmd/compile/internal/ssa/prove.go
  • A test/fixedbugs/issue79874.go
Change size: S
Delta: 2 files changed, 29 insertions(+), 1 deletion(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I155b6571db5b3c3537c549eadfe87a14b7d5836a
Gerrit-Change-Number: 787720
Gerrit-PatchSet: 1
Gerrit-Owner: Jorropo <jorro...@gmail.com>
Gerrit-Reviewer: Jorropo <jorro...@gmail.com>
unsatisfied_requirement
satisfied_requirement
open
diffy
Reply all
Reply to author
Forward
0 new messages