]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/optimizer/optimizer.factor
merge project-euler.factor
[factor.git] / basis / compiler / cfg / optimizer / optimizer.factor
1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel sequences accessors combinators namespaces
4 compiler.cfg.tco
5 compiler.cfg.useless-conditionals
6 compiler.cfg.branch-splitting
7 compiler.cfg.block-joining
8 compiler.cfg.ssa.construction
9 compiler.cfg.alias-analysis
10 compiler.cfg.value-numbering
11 compiler.cfg.copy-prop
12 compiler.cfg.dce
13 compiler.cfg.write-barrier
14 compiler.cfg.representations
15 compiler.cfg.ssa.destruction
16 compiler.cfg.empty-blocks
17 compiler.cfg.checker ;
18 IN: compiler.cfg.optimizer
19
20 SYMBOL: check-optimizer?
21
22 : ?check ( cfg -- cfg' )
23     check-optimizer? get [
24         dup check-cfg
25     ] when ;
26
27 : optimize-cfg ( cfg -- cfg' )
28     optimize-tail-calls
29     delete-useless-conditionals
30     split-branches
31     join-blocks
32     construct-ssa
33     alias-analysis
34     value-numbering
35     copy-propagation
36     eliminate-dead-code
37     eliminate-write-barriers
38     select-representations
39     destruct-ssa
40     delete-empty-blocks
41     ?check ;