]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: optimize loads from readonly globals into constants
authorKeith Randall <khr@golang.org>
Wed, 10 Oct 2018 05:55:36 +0000 (22:55 -0700)
committerKeith Randall <khr@golang.org>
Sun, 14 Oct 2018 02:54:40 +0000 (02:54 +0000)
commit653a4bd8d46a8a329f37e8a9fc909c3bb92b02bc
tree4eb2f815a285575b41770a484b94387a5568308e
parentdf459d5e6cc14532961875058f5d4ba3d04b5ed4
cmd/compile: optimize loads from readonly globals into constants

Instead of
   MOVB go.string."foo"(SB), AX
do
   MOVB $102, AX

When we know the global we're loading from is readonly, we can
do that read at compile time.

I've made this arch-dependent mostly because the cases where this
happens often are memory->memory moves, and those don't get
decomposed until lowering.

Did amd64/386/arm/arm64. Other architectures could follow.

Update #26498

Change-Id: I41b1dc831b2cd0a52dac9b97f4f4457888a46389
Reviewed-on: https://go-review.googlesource.com/c/141118
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/cmd/compile/internal/ssa/gen/386.rules
src/cmd/compile/internal/ssa/gen/AMD64.rules
src/cmd/compile/internal/ssa/gen/ARM.rules
src/cmd/compile/internal/ssa/gen/ARM64.rules
src/cmd/compile/internal/ssa/rewrite.go
src/cmd/compile/internal/ssa/rewrite386.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewriteARM.go
src/cmd/compile/internal/ssa/rewriteARM64.go
test/codegen/strings.go