compute-next-uses ( cfg -- entries exits )


Vocabulary
compiler.cfg.register-allocation.chordal.spilling.next-use

Inputs
cfgan object


Outputs
entriesan object
exitsan object


Definition


:: compute-next-uses ( cfg -- entries exits )
cfg needs-loops cfg reverse-post-order :> blocks blocks
[ H{ } clone ] H{ } map>assoc :> entries blocks
[ H{ } clone ] H{ } map>assoc :> exits t :> changed!
[ changed ] [
f changed! blocks <reversed> [| bb |
bb entries successor-next-use
:> after after bb block-next-use
:> before before bb entries at = not
[ t changed! ] when before bb entries set-at
after bb exits set-at
] each
] while entries exits ;