Bug fixes for lcs.diff2html; xml.writer
[factor/jcg.git] / basis / compiler / cfg / optimizer / optimizer.factor
blob7887faeb613da9a37a129c4603af8b6885f073ac
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel sequences compiler.cfg.rpo
4 compiler.cfg.instructions
5 compiler.cfg.predecessors
6 compiler.cfg.useless-blocks
7 compiler.cfg.height
8 compiler.cfg.alias-analysis
9 compiler.cfg.value-numbering
10 compiler.cfg.dead-code
11 compiler.cfg.write-barrier ;
12 IN: compiler.cfg.optimizer
14 : trivial? ( insns -- ? )
15     dup length 2 = [ first ##call? ] [ drop f ] if ;
17 : optimize-cfg ( cfg -- cfg' )
18     compute-predecessors
19     delete-useless-blocks
20     delete-useless-conditionals
21     [
22         dup trivial? [
23             normalize-height
24             alias-analysis
25             value-numbering
26             eliminate-dead-code
27             eliminate-write-barriers
28         ] unless
29     ] change-basic-blocks ;