factor/basis/compiler/cfg/optimizer/optimizer.factor

30 lines
791 B
Factor
Raw Normal View History

2008-10-22 19:41:37 -04:00
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2008-10-22 22:59:07 -04:00
USING: kernel sequences compiler.cfg.rpo
compiler.cfg.instructions
2008-11-03 00:09:31 -05:00
compiler.cfg.predecessors
compiler.cfg.useless-blocks
2008-10-22 22:59:07 -04:00
compiler.cfg.height
compiler.cfg.alias-analysis
compiler.cfg.value-numbering
2008-10-23 06:27:54 -04:00
compiler.cfg.dead-code
2008-10-22 22:59:07 -04:00
compiler.cfg.write-barrier ;
2008-10-22 19:41:37 -04:00
IN: compiler.cfg.optimizer
2008-10-22 22:59:07 -04:00
: trivial? ( insns -- ? )
2008-11-03 00:09:31 -05:00
dup length 2 = [ first ##call? ] [ drop f ] if ;
2008-10-22 22:59:07 -04:00
2008-10-22 19:41:37 -04:00
: optimize-cfg ( cfg -- cfg' )
2008-11-03 00:09:31 -05:00
compute-predecessors
delete-useless-blocks
delete-useless-conditionals
2008-10-22 19:41:37 -04:00
[
2008-10-22 22:59:07 -04:00
dup trivial? [
normalize-height
alias-analysis
value-numbering
2008-10-23 06:27:54 -04:00
eliminate-dead-code
2008-10-22 22:59:07 -04:00
eliminate-write-barriers
] unless
2008-10-22 19:41:37 -04:00
] change-basic-blocks ;