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 ;
|