]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: don't discard inlineable but empty functions with binary export format
authorRobert Griesemer <gri@golang.org>
Tue, 26 Apr 2016 21:11:38 +0000 (14:11 -0700)
committerRobert Griesemer <gri@golang.org>
Tue, 26 Apr 2016 21:40:28 +0000 (21:40 +0000)
Change-Id: I0f016fa000f949d27847d645b4cdebe68a8abf20
Reviewed-on: https://go-review.googlesource.com/22474
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/bimport.go

index 7fed8b1342fc889f74ee623671d57f9c639b76f7..6fe30cdba9840a5ae931bbe31e123f6404145b88 100644 (file)
@@ -145,7 +145,16 @@ func Import(in *bufio.Reader) {
                if f := p.funcList[i]; f != nil {
                        // function not yet imported - read body and set it
                        funchdr(f)
-                       f.Func.Inl.Set(p.stmtList())
+                       body := p.stmtList()
+                       if body == nil {
+                               // Make sure empty body is not interpreted as
+                               // no inlineable body (see also parser.fnbody)
+                               // (not doing so can cause significant performance
+                               // degradation due to unnecessary calls to empty
+                               // functions).
+                               body = []*Node{Nod(OEMPTY, nil, nil)}
+                       }
+                       f.Func.Inl.Set(body)
                        funcbody(f)
                } else {
                        // function already imported - read body but discard declarations