2008-10-19 02:10:21 -04:00
|
|
|
! Copyright (C) 2008 Slava Pestov.
|
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2008-10-22 22:59:07 -04:00
|
|
|
USING: namespaces assocs biassocs classes kernel math accessors
|
|
|
|
|
sorting sets sequences
|
2009-05-26 20:31:19 -04:00
|
|
|
compiler.cfg.liveness
|
2008-10-22 22:59:07 -04:00
|
|
|
compiler.cfg.value-numbering.graph
|
|
|
|
|
compiler.cfg.value-numbering.expressions
|
|
|
|
|
compiler.cfg.value-numbering.propagate
|
2008-10-23 03:49:26 -04:00
|
|
|
compiler.cfg.value-numbering.simplify
|
|
|
|
|
compiler.cfg.value-numbering.rewrite ;
|
2008-10-19 02:10:21 -04:00
|
|
|
IN: compiler.cfg.value-numbering
|
|
|
|
|
|
2009-05-26 20:31:19 -04:00
|
|
|
: number-input-values ( basic-block -- )
|
|
|
|
|
live-in keys [ [ next-input-expr ] dip set-vn ] each ;
|
|
|
|
|
|
|
|
|
|
: value-numbering-step ( basic-block -- )
|
2008-10-19 02:10:21 -04:00
|
|
|
init-value-graph
|
|
|
|
|
init-expressions
|
2009-05-26 20:31:19 -04:00
|
|
|
dup number-input-values
|
|
|
|
|
[ [ [ number-values ] [ rewrite propagate ] bi ] map ] change-instructions drop ;
|
|
|
|
|
|
|
|
|
|
: value-numbering ( rpo -- )
|
|
|
|
|
[ value-numbering-step ] each ;
|