question: private void removePhiFunctions ( ) { ArrayList < SsaBasicBlock > blocks = ssaMeth . getBlocks ( ) ; for ( SsaBasicBlock block : blocks ) { block . forEachPhiInsn ( new PhiVisitor ( blocks ) ) ; block . removeAllPhiInsns ( ) ; } for ( SsaBasicBlock block : blocks ) { block . scheduleMovesFromPhis ( ) ; } }
target:  See Appel 19.6. To remove the phi instructions in an edge-split SSA representation we know we can always insert a move in a predecessor block.