compiler.cfg.dominance: change needs-dominance effect from ( cfg -- cfg') to ( cfg -- )
parent
054982f24a
commit
76cb665a8d
|
@ -4,7 +4,7 @@ compiler.cfg.predecessors compiler.cfg.utilities ;
|
|||
IN: compiler.cfg.dominance.tests
|
||||
|
||||
: test-dominance ( -- )
|
||||
0 get block>cfg needs-dominance drop ;
|
||||
0 get block>cfg needs-dominance ;
|
||||
|
||||
! Example with no back edges
|
||||
V{ } 0 test-bb
|
||||
|
|
|
@ -78,9 +78,10 @@ PRIVATE>
|
|||
|
||||
PRIVATE>
|
||||
|
||||
: needs-dominance ( cfg -- cfg' )
|
||||
: needs-dominance ( cfg -- )
|
||||
needs-predecessors
|
||||
dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless ;
|
||||
dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless
|
||||
drop ;
|
||||
|
||||
: dominates? ( bb1 bb2 -- ? )
|
||||
swap [ pre-of ] [ [ pre-of ] [ maxpre-of ] bi ] bi* between? ;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors arrays assocs bit-arrays bit-sets fry
|
||||
hashtables hints kernel locals math namespaces sequences sets
|
||||
compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
|
||||
combinators compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
|
||||
FROM: namespaces => set ;
|
||||
FROM: assocs => change-at ;
|
||||
IN: compiler.cfg.ssa.construction.tdmsc
|
||||
|
@ -81,12 +81,12 @@ SYMBOLS: merge-sets levels again? ;
|
|||
PRIVATE>
|
||||
|
||||
: compute-merge-sets ( cfg -- )
|
||||
needs-dominance
|
||||
|
||||
[ compute-levels ]
|
||||
[ init-merge-sets ]
|
||||
[ compute-merge-set-loop ]
|
||||
tri ;
|
||||
{
|
||||
[ needs-dominance ]
|
||||
[ compute-levels ]
|
||||
[ init-merge-sets ]
|
||||
[ compute-merge-set-loop ]
|
||||
} cleave ;
|
||||
|
||||
: merge-set ( bbs -- bbs' )
|
||||
(merge-set) [ members ] dip nths ;
|
||||
|
|
|
@ -154,8 +154,7 @@ M: insn cleanup-insn , ;
|
|||
PRIVATE>
|
||||
|
||||
: destruct-ssa ( cfg -- cfg' )
|
||||
needs-dominance
|
||||
|
||||
dup needs-dominance
|
||||
dup construct-cssa
|
||||
dup compute-defs
|
||||
dup compute-insns
|
||||
|
|
|
@ -54,11 +54,10 @@ SYMBOLS: def-indices kill-indices ;
|
|||
PRIVATE>
|
||||
|
||||
: compute-live-ranges ( cfg -- )
|
||||
needs-dominance
|
||||
|
||||
H{ } clone def-indices set
|
||||
H{ } clone kill-indices set
|
||||
[ compute-local-live-ranges ] simple-analysis ;
|
||||
[ needs-dominance ]
|
||||
[ [ compute-local-live-ranges ] simple-analysis ] bi ;
|
||||
|
||||
: def-index ( vreg bb -- n )
|
||||
def-indices get at at ;
|
||||
|
|
Loading…
Reference in New Issue