locals ;
IN: compiler.cfg.phi-elimination
+! assoc mapping predecessors to sequences
+SYMBOL: added-instructions
+
+: add-instructions ( predecessor quot -- )
+ [
+ added-instructions get
+ [ drop V{ } clone ] cache
+ building
+ ] dip with-variable ; inline
+
+: insert-basic-blocks ( bb -- )
+ [ added-instructions get ] dip
+ '[ [ _ ] dip <simple-block> insert-basic-block ] assoc-each ;
+
: insert-copy ( predecessor input output -- )
'[ _ _ swap ##copy ] add-instructions ;
: skip-empty-blocks ( bb -- bb' )
H{ } clone visited [ (skip-empty-blocks) ] with-variable ;
-! assoc mapping predecessors to sequences
-SYMBOL: added-instructions
-
-: add-instructions ( predecessor quot -- )
- [
- added-instructions get
- [ drop V{ } clone ] cache
- building
- ] dip with-variable ; inline
-
:: insert-basic-block ( from to bb -- )
bb from 1vector >>predecessors drop
bb to 1vector >>successors drop
swap >vector
\ ##branch new-insn over push
>>instructions ;
-
-: insert-basic-blocks ( bb -- )
- [ added-instructions get ] dip
- '[ [ _ ] dip <simple-block> insert-basic-block ] assoc-each ;