compiler.cfg.ssa.destruction: tweak in preparation for landing Dan's new SSA liveness analysis
parent
1e8d13c1f1
commit
b133649edd
|
@ -55,3 +55,7 @@ SYMBOL: work-list
|
|||
H{ } clone live-outs set
|
||||
dup post-order add-to-work-list
|
||||
work-list get [ liveness-step ] slurp-deque ;
|
||||
|
||||
: live-in? ( vreg bb -- ? ) live-in key? ;
|
||||
|
||||
: live-out? ( vreg bb -- ? ) live-out key? ;
|
|
@ -2,7 +2,7 @@
|
|||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors assocs fry kernel namespaces sequences math
|
||||
arrays compiler.cfg.def-use compiler.cfg.instructions
|
||||
compiler.cfg.liveness compiler.cfg.rpo ;
|
||||
compiler.cfg.liveness.ssa compiler.cfg.rpo ;
|
||||
IN: compiler.cfg.ssa.destruction.live-ranges
|
||||
|
||||
! Live ranges for interference testing
|
||||
|
@ -52,9 +52,9 @@ PRIVATE>
|
|||
ERROR: bad-kill-index vreg bb ;
|
||||
|
||||
: kill-index ( vreg bb -- n )
|
||||
2dup live-out key? [ 2drop 1/0. ] [
|
||||
2dup live-out? [ 2drop 1/0. ] [
|
||||
2dup kill-indices get at at* [ 2nip ] [
|
||||
drop 2dup live-in key?
|
||||
drop 2dup live-in?
|
||||
[ bad-kill-index ] [ 2drop -1/0. ] if
|
||||
] if
|
||||
] if ;
|
||||
|
|
|
@ -4,7 +4,7 @@ USING: accessors assocs fry kernel locals math math.order arrays
|
|||
namespaces sequences sorting sets combinators combinators.short-circuit make
|
||||
compiler.cfg.def-use
|
||||
compiler.cfg.instructions
|
||||
compiler.cfg.liveness
|
||||
compiler.cfg.liveness.ssa
|
||||
compiler.cfg.dominance
|
||||
compiler.cfg.ssa.destruction.state
|
||||
compiler.cfg.ssa.destruction.forest
|
||||
|
@ -19,13 +19,13 @@ IN: compiler.cfg.ssa.destruction.process-blocks
|
|||
SYMBOLS: phi-union unioned-blocks ;
|
||||
|
||||
:: operand-live-into-phi-node's-block? ( bb src dst -- ? )
|
||||
src bb live-in key? ;
|
||||
src bb live-in? ;
|
||||
|
||||
:: phi-node-is-live-out-of-operand's-block? ( bb src dst -- ? )
|
||||
dst src def-of live-out key? ;
|
||||
dst src def-of live-out? ;
|
||||
|
||||
:: operand-is-phi-node-and-live-into-operand's-block? ( bb src dst -- ? )
|
||||
{ [ src insn-of ##phi? ] [ src src def-of live-in key? ] } 0&& ;
|
||||
{ [ src insn-of ##phi? ] [ src src def-of live-in? ] } 0&& ;
|
||||
|
||||
:: operand-being-renamed? ( bb src dst -- ? )
|
||||
src processed-names get key? ;
|
||||
|
|
Loading…
Reference in New Issue