mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.ssa] cmd/compile: optimization for && and || expressions
Compiling && and || expressions often leads to control flow of the following form: p: If a goto b else c b: <- p ... x = phi(a, ...) If x goto t else u Note that if we take the edge p->b, then we are guaranteed to take the edge b->t also. So in this situation, we might as well go directly from p to t. Change-Id: I6974f1e6367119a2ddf2014f9741fdb490edcc12 Reviewed-on: https://go-review.googlesource.com/18910 Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
9d6e605cf7
commit
d8a65672f8
4 changed files with 208 additions and 18 deletions
|
|
@ -89,6 +89,7 @@ var passes = [...]pass{
|
|||
{"early phielim", phielim, false},
|
||||
{"early copyelim", copyelim, false},
|
||||
{"early deadcode", deadcode, false}, // remove generated dead code to avoid doing pointless work during opt
|
||||
{"short circuit", shortcircuit, false},
|
||||
{"decompose", decompose, true},
|
||||
{"opt", opt, true}, // TODO: split required rules and optimizing rules
|
||||
{"opt deadcode", deadcode, false}, // remove any blocks orphaned during opt
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue