compiler.cfg.dominance: change needs-dominance effect from ( cfg -- cfg') to ( cfg -- )

db4
Björn Lindqvist 2014-12-10 17:49:52 +01:00
parent 054982f24a
commit 76cb665a8d
5 changed files with 14 additions and 15 deletions

View File

@ -4,7 +4,7 @@ compiler.cfg.predecessors compiler.cfg.utilities ;
IN: compiler.cfg.dominance.tests IN: compiler.cfg.dominance.tests
: test-dominance ( -- ) : test-dominance ( -- )
0 get block>cfg needs-dominance drop ; 0 get block>cfg needs-dominance ;
! Example with no back edges ! Example with no back edges
V{ } 0 test-bb V{ } 0 test-bb

View File

@ -78,9 +78,10 @@ PRIVATE>
PRIVATE> PRIVATE>
: needs-dominance ( cfg -- cfg' ) : needs-dominance ( cfg -- )
needs-predecessors needs-predecessors
dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless ; dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless
drop ;
: dominates? ( bb1 bb2 -- ? ) : dominates? ( bb1 bb2 -- ? )
swap [ pre-of ] [ [ pre-of ] [ maxpre-of ] bi ] bi* between? ; swap [ pre-of ] [ [ pre-of ] [ maxpre-of ] bi ] bi* between? ;

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs bit-arrays bit-sets fry USING: accessors arrays assocs bit-arrays bit-sets fry
hashtables hints kernel locals math namespaces sequences sets 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: namespaces => set ;
FROM: assocs => change-at ; FROM: assocs => change-at ;
IN: compiler.cfg.ssa.construction.tdmsc IN: compiler.cfg.ssa.construction.tdmsc
@ -81,12 +81,12 @@ SYMBOLS: merge-sets levels again? ;
PRIVATE> PRIVATE>
: compute-merge-sets ( cfg -- ) : compute-merge-sets ( cfg -- )
needs-dominance {
[ needs-dominance ]
[ compute-levels ] [ compute-levels ]
[ init-merge-sets ] [ init-merge-sets ]
[ compute-merge-set-loop ] [ compute-merge-set-loop ]
tri ; } cleave ;
: merge-set ( bbs -- bbs' ) : merge-set ( bbs -- bbs' )
(merge-set) [ members ] dip nths ; (merge-set) [ members ] dip nths ;

View File

@ -154,8 +154,7 @@ M: insn cleanup-insn , ;
PRIVATE> PRIVATE>
: destruct-ssa ( cfg -- cfg' ) : destruct-ssa ( cfg -- cfg' )
needs-dominance dup needs-dominance
dup construct-cssa dup construct-cssa
dup compute-defs dup compute-defs
dup compute-insns dup compute-insns

View File

@ -54,11 +54,10 @@ SYMBOLS: def-indices kill-indices ;
PRIVATE> PRIVATE>
: compute-live-ranges ( cfg -- ) : compute-live-ranges ( cfg -- )
needs-dominance
H{ } clone def-indices set H{ } clone def-indices set
H{ } clone kill-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-index ( vreg bb -- n )
def-indices get at at ; def-indices get at at ;