]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: move decompose builtin closer to late opt
authorAlexandru Moșoi <mosoi@google.com>
Fri, 11 Mar 2016 00:10:35 +0000 (01:10 +0100)
committerAlexandru Moșoi <alexandru@mosoi.ro>
Sun, 13 Mar 2016 22:12:01 +0000 (22:12 +0000)
* 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 <drchase@google.com>
Run-TryBot: Alexandru Moșoi <alexandru@mosoi.ro>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/ssa/compile.go

index 8a12ec4b86dc206023249249e98da6e4ef7edceb..cbef6ea645a78abd97df207246f5c701b1be1829 100644 (file)
@@ -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