Implement a simple common-subexpression elimination.
It uses value numbering & a dominator tree to detect redundant computation.
Change-Id: Id0ff775e439c22f4d41bdd5976176017dd2a2086
Reviewed-on: https://go-review.googlesource.com/8172
Reviewed-by: Alan Donovan <adonovan@google.com>
opt: machine-independent optimization
fuse: join basic blocks
lower: convert to machine-dependent opcodes
critical: remove critical edges for register alloc
layout: order basic blocks
schedule: order values in basic blocks
cgen: generate assembly output
opt and lower use machine-generated matching rules using
the rule generator in rulegen/
cgen will probably change in the real compiler, as we want to
generate binary directly instead of ascii assembly.
Change-Id: Iedd7ca70f6f55a4cde30e27cfad6a7fa05691b83
Reviewed-on: https://go-review.googlesource.com/7981
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Keith Randall <khr@golang.org>