]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: create "init" symbol earlier
authorAustin Clements <austin@google.com>
Mon, 12 Nov 2018 21:31:47 +0000 (16:31 -0500)
committerAustin Clements <austin@google.com>
Mon, 12 Nov 2018 22:25:35 +0000 (22:25 +0000)
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 <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
src/cmd/compile/internal/gc/main.go

index 087371c6f6c9ca0c9b75709edd6a800dbc286432..e5d42bfd7da1549dd2c3c1983c67875da344bc87 100644 (file)
@@ -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")