From 109d7580a5c507b1e4f460445a5c4cd7313e4aa6 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 20 Apr 2021 11:59:40 -0400 Subject: [PATCH] cmd/compile: disable name preservation on copies in expand_calls Apparently CL 309330 caused the compiler OOMing on some large input (giant generated switch statement). I don't quite understand it for now. Disable it for now. Change-Id: I19c84f3f5e158897bff0b32d6217fcff3c66874d Reviewed-on: https://go-review.googlesource.com/c/go/+/311829 Trust: Cherry Zhang Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh TryBot-Result: Go Bot --- src/cmd/compile/internal/ssa/expand_calls.go | 18 ++++++++++-------- test/live_regabi.go | 5 ++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/cmd/compile/internal/ssa/expand_calls.go b/src/cmd/compile/internal/ssa/expand_calls.go index b2b2b5d877..be460457a8 100644 --- a/src/cmd/compile/internal/ssa/expand_calls.go +++ b/src/cmd/compile/internal/ssa/expand_calls.go @@ -1450,15 +1450,17 @@ func expandCalls(f *Func) { // Step 6: elide any copies introduced. // Update named values. - 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] + 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 } - values[i] = a } } } diff --git a/test/live_regabi.go b/test/live_regabi.go index 2b0278ecb8..af14ede73f 100644 --- a/test/live_regabi.go +++ b/test/live_regabi.go @@ -1,5 +1,8 @@ // errorcheckwithauto -0 -l -live -wb=0 -d=ssa/insert_resched_checks/off -// +build amd64,goexperiment.regabidefer,goexperiment.regabiargs +// +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. // Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -- 2.50.0