diff options
author | Josh Bleecher Snyder <josharian@gmail.com> | 2019-05-07 11:07:10 -0700 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2019-08-27 21:04:53 +0000 |
commit | 260e3d08189a42e849b9e30bfbf6722e20026c15 (patch) | |
tree | 85f8311e1aebf4b2614de9de53ba0759556c114d /src/cmd/compile/internal/ssa/compile.go | |
parent | cc6feab39668bf81fcaae8d80173704add7f4918 (diff) | |
download | go-260e3d08189a42e849b9e30bfbf6722e20026c15.tar.gz go-260e3d08189a42e849b9e30bfbf6722e20026c15.zip |
cmd/compile: run deadcode before lowered CSE
CSE can make dead values live again.
Running deadcode first avoids that;
it also makes CSE more efficient.
file before after Δ %
api 5970616 5966520 -4096 -0.069%
asm 4867088 4846608 -20480 -0.421%
compile 23988320 23935072 -53248 -0.222%
link 6084376 6080280 -4096 -0.067%
nm 4165736 4161640 -4096 -0.098%
objdump 4572216 4568120 -4096 -0.090%
pprof 14452996 14457092 +4096 +0.028%
trace 11467292 11471388 +4096 +0.036%
total 132181100 132099180 -81920 -0.062%
Compiler performance impact is negligible:
name old alloc/op new alloc/op delta
Template 38.8MB ± 0% 38.8MB ± 0% -0.04% (p=0.008 n=5+5)
Unicode 28.2MB ± 0% 28.2MB ± 0% ~ (p=1.000 n=5+5)
GoTypes 131MB ± 0% 131MB ± 0% -0.14% (p=0.008 n=5+5)
Compiler 606MB ± 0% 606MB ± 0% -0.05% (p=0.008 n=5+5)
SSA 2.14GB ± 0% 2.13GB ± 0% -0.26% (p=0.008 n=5+5)
Flate 24.0MB ± 0% 24.0MB ± 0% -0.18% (p=0.008 n=5+5)
GoParser 28.8MB ± 0% 28.8MB ± 0% -0.15% (p=0.008 n=5+5)
Reflect 83.8MB ± 0% 83.7MB ± 0% -0.11% (p=0.008 n=5+5)
Tar 36.4MB ± 0% 36.4MB ± 0% -0.09% (p=0.008 n=5+5)
XML 47.9MB ± 0% 47.8MB ± 0% -0.15% (p=0.008 n=5+5)
[Geo mean] 84.6MB 84.5MB -0.12%
name old allocs/op new allocs/op delta
Template 379k ± 0% 380k ± 0% +0.15% (p=0.008 n=5+5)
Unicode 340k ± 0% 340k ± 0% ~ (p=0.738 n=5+5)
GoTypes 1.36M ± 0% 1.36M ± 0% +0.05% (p=0.008 n=5+5)
Compiler 5.49M ± 0% 5.49M ± 0% +0.12% (p=0.008 n=5+5)
SSA 17.5M ± 0% 17.5M ± 0% -0.18% (p=0.008 n=5+5)
Flate 235k ± 0% 235k ± 0% ~ (p=0.079 n=5+5)
GoParser 302k ± 0% 302k ± 0% ~ (p=0.310 n=5+5)
Reflect 976k ± 0% 977k ± 0% +0.08% (p=0.008 n=5+5)
Tar 352k ± 0% 352k ± 0% +0.12% (p=0.008 n=5+5)
XML 436k ± 0% 436k ± 0% -0.05% (p=0.008 n=5+5)
[Geo mean] 842k 842k +0.03%
Change-Id: I53e8faed1859885ca5c4a5d45067a50984f3eff1
Reviewed-on: https://go-review.googlesource.com/c/go/+/175879
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/compile.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/compile.go | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/compile.go b/src/cmd/compile/internal/ssa/compile.go index 937e0223b3..0b3310b8ef 100644 --- a/src/cmd/compile/internal/ssa/compile.go +++ b/src/cmd/compile/internal/ssa/compile.go @@ -424,6 +424,7 @@ var passes = [...]pass{ {name: "insert resched checks", fn: insertLoopReschedChecks, disabled: objabi.Preemptibleloops_enabled == 0}, // insert resched checks in loops. {name: "lower", fn: lower, required: true}, + {name: "lowered deadcode for cse", fn: deadcode}, // deadcode immediately before CSE avoids CSE making dead values live again {name: "lowered cse", fn: cse}, {name: "elim unread autos", fn: elimUnreadAutos}, {name: "lowered deadcode", fn: deadcode, required: true}, |