From: Josh Bleecher Snyder Date: Tue, 15 Mar 2016 04:01:43 +0000 (-0700) Subject: cmd/compile: move testdclstack out of the xdcl_list loop X-Git-Tag: go1.7beta1~1330 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=11a80860ada89b5ce8fc34ee2d91f73dfa89ab7b;p=gostls13.git cmd/compile: move testdclstack out of the xdcl_list loop This is a band-aid, but it fixes the problem until a deeper fix is in place. Testing with genpkg -n 50000, I see: Before: 154.67 real 184.66 user 3.15 sys After: 61.82 real 96.99 user 2.17 sys Fixes #14781. Change-Id: I24c7822d60c289bdd6a18a7840b984954c95f7d4 Reviewed-on: https://go-review.googlesource.com/20696 Reviewed-by: Robert Griesemer --- diff --git a/src/cmd/compile/internal/gc/parser.go b/src/cmd/compile/internal/gc/parser.go index 3d5e0b6d18..6a5bb66542 100644 --- a/src/cmd/compile/internal/gc/parser.go +++ b/src/cmd/compile/internal/gc/parser.go @@ -2087,10 +2087,6 @@ func (p *parser) xdcl_list() (l []*Node) { continue } - if nsyntaxerrors == 0 { - testdclstack() - } - // Reset p.pragma BEFORE advancing to the next token (consuming ';') // since comments before may set pragmas for the next function decl. p.pragma = 0 @@ -2100,6 +2096,10 @@ func (p *parser) xdcl_list() (l []*Node) { p.advance(LVAR, LCONST, LTYPE, LFUNC) } } + + if nsyntaxerrors == 0 { + testdclstack() + } return }