]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: define starting block before opening html writer
authorKeith Randall <khr@golang.org>
Thu, 20 Aug 2020 06:01:58 +0000 (23:01 -0700)
committerKeith Randall <khr@golang.org>
Thu, 20 Aug 2020 15:14:12 +0000 (15:14 +0000)
Opening the html writer can fail, and the failure printer wants
to use the entry block's line number. So make sure we set up
the entry block first.

Fixes #40919

Change-Id: I4ffa2839b45a721bbaf04ff84418e8108fa1cc37
Reviewed-on: https://go-review.googlesource.com/c/go/+/249497
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/gc/ssa.go

index 5d0098b4e6fa11d14cf778db40cd7fdf64127942..4124655b791411eaeef03ebd13a8131d78e0786a 100644 (file)
@@ -338,6 +338,10 @@ func buildssa(fn *Node, worker int) *ssa.Func {
        s.panics = map[funcLine]*ssa.Block{}
        s.softFloat = s.config.SoftFloat
 
+       // Allocate starting block
+       s.f.Entry = s.f.NewBlock(ssa.BlockPlain)
+       s.f.Entry.Pos = fn.Pos
+
        if printssa {
                s.f.HTMLWriter = ssa.NewHTMLWriter(ssaDumpFile, s.f, ssaDumpCFG)
                // TODO: generate and print a mapping from nodes to values and blocks
@@ -345,9 +349,6 @@ func buildssa(fn *Node, worker int) *ssa.Func {
                s.f.HTMLWriter.WriteAST("AST", astBuf)
        }
 
-       // Allocate starting block
-       s.f.Entry = s.f.NewBlock(ssa.BlockPlain)
-
        // Allocate starting values
        s.labels = map[string]*ssaLabel{}
        s.labeledNodes = map[*Node]*ssaLabel{}