summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2020-12-02 22:54:33 -0500
committerRuss Cox <rsc@golang.org>2020-12-04 16:52:47 +0000
commit7fcf5b994cf24dc7eda4d65d448e25489dd357f6 (patch)
treeb430269a26110f59eefad4fe7174e4e6ea789b44
parent989a3f5041d2055e165e363d3fb2d27e75e2fa38 (diff)
downloadgo-git-7fcf5b994cf24dc7eda4d65d448e25489dd357f6.tar.gz
[dev.regabi] cmd/compile: replace inlcopy with ir.DeepCopy
Now inlcopy and ir.DeepCopy are semantically the same, so drop the inlcopy implementation. Passes buildall w/ toolstash -cmp. Change-Id: Id2abb39a412a8e57167a29be5ecf76e990dc9d3d Reviewed-on: https://go-review.googlesource.com/c/go/+/275310 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-rw-r--r--src/cmd/compile/internal/gc/inl.go37
1 files changed, 1 insertions, 36 deletions
diff --git a/src/cmd/compile/internal/gc/inl.go b/src/cmd/compile/internal/gc/inl.go
index 980ba7429a..efd6fea844 100644
--- a/src/cmd/compile/internal/gc/inl.go
+++ b/src/cmd/compile/internal/gc/inl.go
@@ -218,7 +218,7 @@ func caninl(fn *ir.Func) {
n.Func().Inl = &ir.Inline{
Cost: inlineMaxBudget - visitor.budget,
Dcl: pruneUnusedAutos(n.Defn.Func().Dcl, &visitor),
- Body: inlcopylist(fn.Body().Slice()),
+ Body: ir.DeepCopyList(src.NoXPos, fn.Body().Slice()),
}
if base.Flag.LowerM > 1 {
@@ -447,41 +447,6 @@ func (v *hairyVisitor) visit(n ir.Node) bool {
v.visitList(n.Init()) || v.visitList(n.Body())
}
-// inlcopylist (together with inlcopy) recursively copies a list of nodes, except
-// that it keeps the same ONAME, OTYPE, and OLITERAL nodes. It is used for copying
-// the body and dcls of an inlineable function.
-func inlcopylist(ll []ir.Node) []ir.Node {
- s := make([]ir.Node, 0, len(ll))
- for _, n := range ll {
- s = append(s, inlcopy(n))
- }
- return s
-}
-
-func inlcopy(n ir.Node) ir.Node {
- if n == nil {
- return nil
- }
-
- switch n.Op() {
- case ir.ONAME, ir.OTYPE, ir.OLITERAL, ir.ONIL:
- return n
- }
-
- m := ir.Copy(n)
- if n.Op() != ir.OCALLPART && m.Func() != nil {
- base.Fatalf("unexpected Func: %v", m)
- }
- m.SetLeft(inlcopy(n.Left()))
- m.SetRight(inlcopy(n.Right()))
- m.PtrList().Set(inlcopylist(n.List().Slice()))
- m.PtrRlist().Set(inlcopylist(n.Rlist().Slice()))
- m.PtrInit().Set(inlcopylist(n.Init().Slice()))
- m.PtrBody().Set(inlcopylist(n.Body().Slice()))
-
- return m
-}
-
func countNodes(n ir.Node) int {
if n == nil {
return 0