From: Cherry Zhang Date: Wed, 21 Apr 2021 01:07:23 +0000 (-0400) Subject: cmd/compile: reenable name preservation on copies in expand_calls X-Git-Tag: go1.17beta1~526 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e5bc4f2a77;p=gostls13.git cmd/compile: reenable name preservation on copies in expand_calls This reverts CL 311829, and reenables CL 309330. The issue should be fixed in the previous CL. Change-Id: I69db0565c72470a1814f135d8f8ec62c781bfc5a Reviewed-on: https://go-review.googlesource.com/c/go/+/312094 Trust: Cherry Zhang Run-TryBot: Cherry Zhang TryBot-Result: Go Bot Reviewed-by: David Chase Reviewed-by: Than McIntosh --- diff --git a/src/cmd/compile/internal/ssa/expand_calls.go b/src/cmd/compile/internal/ssa/expand_calls.go index 48e40bb00a..4d5376b344 100644 --- a/src/cmd/compile/internal/ssa/expand_calls.go +++ b/src/cmd/compile/internal/ssa/expand_calls.go @@ -1452,17 +1452,15 @@ func expandCalls(f *Func) { // Step 6: elide any copies introduced. // Update named values. - if false { // TODO: reeanable. It caused compiler OOMing on large input. - for _, name := range f.Names { - values := f.NamedValues[name] - for i, v := range values { - if v.Op == OpCopy { - a := v.Args[0] - for a.Op == OpCopy { - a = a.Args[0] - } - values[i] = a + for _, name := range f.Names { + values := f.NamedValues[name] + for i, v := range values { + if v.Op == OpCopy { + a := v.Args[0] + for a.Op == OpCopy { + a = a.Args[0] } + values[i] = a } } } diff --git a/test/live_regabi.go b/test/live_regabi.go index af14ede73f..2b0278ecb8 100644 --- a/test/live_regabi.go +++ b/test/live_regabi.go @@ -1,8 +1,5 @@ // errorcheckwithauto -0 -l -live -wb=0 -d=ssa/insert_resched_checks/off -// +build amd64,goexperiment.regabidefer,goexperiment.regabiargs,ignore - -// Disabled for now. The compiler sometimes has bad name-value association -// for args, causing args appears as autotmps. +// +build amd64,goexperiment.regabidefer,goexperiment.regabiargs // Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style