aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewrite.go
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2021-04-11 14:33:28 -0400
committerCherry Zhang <cherryyz@google.com>2021-04-12 16:44:49 +0000
commit70ed28e5f763d08ee0d3be7bde14b35ce3d6322e (patch)
tree9f354dc074b2fec5cd4318c3c8f6fa5a43d412c9 /src/cmd/compile/internal/ssa/rewrite.go
parent585b52261c1b4e26b029616581ee0e891ad49183 (diff)
downloadgo-70ed28e5f763d08ee0d3be7bde14b35ce3d6322e.tar.gz
go-70ed28e5f763d08ee0d3be7bde14b35ce3d6322e.zip
cmd/compile: support memmove inlining with register args
The rule that inlines memmove expects SSA ops that calls memmove with arguments in memory. This CL adds a version that matches it with arguments in registers, so the optimization works for both situations. Change-Id: Ideb64f65b7521481ab2ca7c9975a6cf7b70d5966 Reviewed-on: https://go-review.googlesource.com/c/go/+/309332 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewrite.go')
-rw-r--r--src/cmd/compile/internal/ssa/rewrite.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/ssa/rewrite.go b/src/cmd/compile/internal/ssa/rewrite.go
index f9ad980172..b8a9062d83 100644
--- a/src/cmd/compile/internal/ssa/rewrite.go
+++ b/src/cmd/compile/internal/ssa/rewrite.go
@@ -859,13 +859,13 @@ func disjoint(p1 *Value, n1 int64, p2 *Value, n2 int64) bool {
if p2.Op == OpAddr || p2.Op == OpLocalAddr || p2.Op == OpSP {
return true
}
- return p2.Op == OpArg && p1.Args[0].Op == OpSP
- case OpArg:
+ return (p2.Op == OpArg || p2.Op == OpArgIntReg) && p1.Args[0].Op == OpSP
+ case OpArg, OpArgIntReg:
if p2.Op == OpSP || p2.Op == OpLocalAddr {
return true
}
case OpSP:
- return p2.Op == OpAddr || p2.Op == OpLocalAddr || p2.Op == OpArg || p2.Op == OpSP
+ return p2.Op == OpAddr || p2.Op == OpLocalAddr || p2.Op == OpArg || p2.Op == OpArgIntReg || p2.Op == OpSP
}
return false
}