]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: move testdclstack out of the xdcl_list loop
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 15 Mar 2016 04:01:43 +0000 (21:01 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 15 Mar 2016 04:15:41 +0000 (04:15 +0000)
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 <gri@golang.org>
src/cmd/compile/internal/gc/parser.go

index 3d5e0b6d18136b5af5c042f56a9c751116d2621d..6a5bb66542a9e876bcb674e8feec6d9f65362305 100644 (file)
@@ -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
 }