question: Set < Expr > clone_live ( Set < Expr > phis , Set < Expr > live , Edge p ) { if ( phis . isEmpty ( ) || live . isEmpty ( ) ) return live ; Set < Expr > copy = new TreeSet < Expr > ( ) ; for ( Expr e : live ) copy . add ( phis . contains ( e ) ? e . args [ findPhiArg ( e , p ) ] : e ) ; return copy ; }
target:  clone the live vars set for a particular predecessor edge, replacing phi's with the expr corresponding to that edge.