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
: test-dominance ( -- )
0 get block>cfg needs-dominance drop ;
0 get block>cfg needs-dominance ;
! Example with no back edges
V{ } 0 test-bb

View File

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

View File

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

View File

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

View File

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