]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/optimizer/optimizer.factor
Solution to Project Euler problem 65
[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.two-operand
16 compiler.cfg.ssa.destruction
17 compiler.cfg.empty-blocks
18 compiler.cfg.checker ;
19 IN: compiler.cfg.optimizer
20
21 SYMBOL: check-optimizer?
22
23 : ?check ( cfg -- cfg' )
24     check-optimizer? get [
25         dup check-cfg
26     ] when ;
27
28 : optimize-cfg ( cfg -- cfg' )
29     optimize-tail-calls
30     delete-useless-conditionals
31     split-branches
32     join-blocks
33     construct-ssa
34     alias-analysis
35     value-numbering
36     copy-propagation
37     eliminate-dead-code
38     eliminate-write-barriers
39     select-representations
40     convert-two-operand
41     destruct-ssa
42     delete-empty-blocks
43     ?check ;