From b52db19b983d9b92c013184f7699bba2d0166c10 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Mon, 12 Nov 2018 16:31:47 -0500 Subject: [PATCH] cmd/compile: create "init" symbol earlier We create the "init" symbol and mark it as a function before compiling to SSA because SSA can initialize this symbol, but it turns out we do it slightly too late. peekitabs, at least, can also create the "init" LSym. Move this initialization to just after type-checking. Fixes the linux-amd64-ssacheck and the android-arm64-wiko-fever builders. Updates #27539. Change-Id: If145952c79d39f75c93b24e35e67fe026dd08329 Reviewed-on: https://go-review.googlesource.com/c/149137 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/main.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/cmd/compile/internal/gc/main.go b/src/cmd/compile/internal/gc/main.go index 087371c6f6..e5d42bfd7d 100644 --- a/src/cmd/compile/internal/gc/main.go +++ b/src/cmd/compile/internal/gc/main.go @@ -557,6 +557,11 @@ func Main(archInit func(*Arch)) { errorexit() } + // The "init" function is the only user-spellable symbol that + // we construct later. Mark it as a function now before + // anything can ask for its Linksym. + lookup("init").SetFunc(true) + // Phase 4: Decide how to capture closed variables. // This needs to run before escape analysis, // because variables captured by value do not escape. @@ -649,11 +654,6 @@ func Main(archInit func(*Arch)) { Curfn = nil peekitabs() - // The "init" function is the only user-spellable symbol that - // we construct later. Mark it as a function now before - // anything can ask for its Linksym. - lookup("init").SetFunc(true) - // Phase 8: Compile top level functions. // Don't use range--walk can add functions to xtop. timings.Start("be", "compilefuncs") -- 2.50.0