From: Alexandru Moșoi Date: Fri, 11 Mar 2016 00:10:35 +0000 (+0100) Subject: cmd/compile: move decompose builtin closer to late opt X-Git-Tag: go1.7beta1~1359 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8ec80176d49d268beb282ec32ee9fe7275ef170b;p=gostls13.git cmd/compile: move decompose builtin closer to late opt * Shaves about 10k from pkg/tools/linux_amd64. * Was suggested by drchase before * Found by looking at ssa output of #14758 Change-Id: If2c4ddf3b2603d4dfd8fb4d9199b9a3dcb05b17d Reviewed-on: https://go-review.googlesource.com/20570 Reviewed-by: David Chase Run-TryBot: Alexandru Moșoi TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/compile/internal/ssa/compile.go b/src/cmd/compile/internal/ssa/compile.go index 8a12ec4b86..cbef6ea645 100644 --- a/src/cmd/compile/internal/ssa/compile.go +++ b/src/cmd/compile/internal/ssa/compile.go @@ -174,7 +174,6 @@ var passes = [...]pass{ {name: "early deadcode", fn: deadcode}, // remove generated dead code to avoid doing pointless work during opt {name: "short circuit", fn: shortcircuit}, {name: "decompose user", fn: decomposeUser, required: true}, - {name: "decompose builtin", fn: decomposeBuiltIn, required: true}, {name: "opt", fn: opt, required: true}, // TODO: split required rules and optimizing rules {name: "zero arg cse", fn: zcse, required: true}, // required to merge OpSB values {name: "opt deadcode", fn: deadcode}, // remove any blocks orphaned during opt @@ -182,6 +181,7 @@ var passes = [...]pass{ {name: "phiopt", fn: phiopt}, {name: "nilcheckelim", fn: nilcheckelim}, {name: "prove", fn: prove}, + {name: "decompose builtin", fn: decomposeBuiltIn, required: true}, {name: "dec", fn: dec, required: true}, {name: "late opt", fn: opt}, // TODO: split required rules and optimizing rules {name: "generic deadcode", fn: deadcode}, @@ -234,7 +234,7 @@ var passOrder = [...]constraint{ {"generic deadcode", "tighten"}, {"generic cse", "tighten"}, // don't run optimization pass until we've decomposed builtin objects - {"decompose builtin", "opt"}, + {"decompose builtin", "late opt"}, // don't layout blocks until critical edges have been removed {"critical", "layout"}, // regalloc requires the removal of all critical edges