diff options
author | Keith Randall <khr@golang.org> | 2024-03-21 09:15:30 -0700 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2024-03-21 19:45:41 +0000 |
commit | 802473cfda17a116f705e4060d7b70828e763689 (patch) | |
tree | 0c1cdfce1195168c6543759001594c7e97382aa5 /test | |
parent | 5e1e3a002528714f7c5954dd13068a89f41f747a (diff) | |
download | go-802473cfda17a116f705e4060d7b70828e763689.tar.gz go-802473cfda17a116f705e4060d7b70828e763689.zip |
cmd/compile: include constant bools in memcombine
Constant bools are like constant 1-byte values, they memcombine just fine.
(There are still trickier cases that this pass doesn't catch
yet, see TODO at memcombine.go:503.)
Fixes #66413
Change-Id: Ia67cf72ed1c416e27ac22da443bd88a3f09a6cc8
Reviewed-on: https://go-review.googlesource.com/c/go/+/573416
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/codegen/memcombine.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/codegen/memcombine.go b/test/codegen/memcombine.go index 6d6c33d947..ff67a442e4 100644 --- a/test/codegen/memcombine.go +++ b/test/codegen/memcombine.go @@ -918,3 +918,23 @@ func store16be(p *struct{ a, b uint16 }, x uint32) { // s390x:-"MOVH",-"SRW" p.b = uint16(x) } + +func storeBoolConst(p *struct{ a, b bool }) { + // amd64:"MOVW",-"MOVB" + // arm64:"MOVH",-"MOVB" + p.a = true + p.b = true +} +func issue66413(p *struct { + a byte + b bool + c bool + d int8 +}) { + // amd64:"MOVL",-"MOVB" + // arm64:"MOVW",-"MOVB" + p.a = 31 + p.b = false + p.c = true + p.d = 12 +} |