49 lines
1.2 KiB
Factor
49 lines
1.2 KiB
Factor
! Copyright (C) 2008, 2009 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: kernel sequences accessors combinators namespaces
|
|
compiler.cfg.tco
|
|
compiler.cfg.useless-conditionals
|
|
compiler.cfg.branch-splitting
|
|
compiler.cfg.block-joining
|
|
compiler.cfg.ssa
|
|
compiler.cfg.alias-analysis
|
|
compiler.cfg.value-numbering
|
|
compiler.cfg.copy-prop
|
|
compiler.cfg.dce
|
|
compiler.cfg.write-barrier
|
|
compiler.cfg.coalescing
|
|
compiler.cfg.empty-blocks
|
|
compiler.cfg.predecessors
|
|
compiler.cfg.rpo
|
|
compiler.cfg.checker ;
|
|
IN: compiler.cfg.optimizer
|
|
|
|
SYMBOL: check-optimizer?
|
|
|
|
: ?check ( cfg -- cfg' )
|
|
check-optimizer? get [
|
|
dup check-cfg
|
|
] when ;
|
|
|
|
: optimize-cfg ( cfg -- cfg' )
|
|
! Note that compute-predecessors has to be called several times.
|
|
! The passes that need this document it.
|
|
[
|
|
optimize-tail-calls
|
|
delete-useless-conditionals
|
|
compute-predecessors
|
|
split-branches
|
|
join-blocks
|
|
compute-predecessors
|
|
construct-ssa
|
|
alias-analysis
|
|
value-numbering
|
|
compute-predecessors
|
|
copy-propagation
|
|
eliminate-dead-code
|
|
eliminate-write-barriers
|
|
coalesce
|
|
delete-empty-blocks
|
|
?check
|
|
] with-scope ;
|