cmd/compiler: skip some go/printer work in rulegen
We use go/format on the final output, so don't bother with the added
tabwriter work to align comments when using go/printer.
name old time/op new time/op delta
Rulegen 2.53s ± 2% 2.48s ± 1% -2.20% (p=0.032 n=5+5)
name old user-time/op new user-time/op delta
Rulegen 11.2s ± 1% 10.8s ± 0% -3.72% (p=0.008 n=5+5)
name old sys-time/op new sys-time/op delta
Rulegen 218ms ±17% 207ms ±19% ~ (p=0.548 n=5+5)
name old peak-RSS-bytes new peak-RSS-bytes delta
Rulegen 184MB ± 3% 175MB ± 4% ~ (p=0.056 n=5+5)
Change-Id: I53bad2ab15cace67415f2171fffcd13ed596e62b
Reviewed-on: https://go-review.googlesource.com/c/go/+/195219
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/cmd/compile/internal/ssa/gen/rulegen.go b/src/cmd/compile/internal/ssa/gen/rulegen.go
index 3a18ca2..ed3ed75 100644
--- a/src/cmd/compile/internal/ssa/gen/rulegen.go
+++ b/src/cmd/compile/internal/ssa/gen/rulegen.go
@@ -607,7 +607,7 @@
fprint(w, n.expr)
fmt.Fprintf(w, " {\nbreak\n}\n")
case ast.Node:
- printer.Fprint(w, emptyFset, n)
+ printConfig.Fprint(w, emptyFset, n)
if _, ok := n.(ast.Stmt); ok {
fmt.Fprintln(w)
}
@@ -616,6 +616,10 @@
}
}
+var printConfig = printer.Config{
+ Mode: printer.RawFormat, // we use go/format later, so skip work here
+}
+
var emptyFset = token.NewFileSet()
// Node can be a Statement or an ast.Expr.