private void fixUpPhiPredecessors(ArrayList<Instruction> phiInstructions,BasicBlock unoptimizedLoopExit,BasicBlock optimizedLoopExit){
  if (unoptimizedLoopExit != null) {
    for (    Instruction instruction : phiInstructions) {
      Phi.setPred(instruction,OPTIMIZED_LOOP_OPERAND,new BasicBlockOperand(optimizedLoopExit));
      Phi.setPred(instruction,UNOPTIMIZED_LOOP_OPERAND,new BasicBlockOperand(unoptimizedLoopExit));
    }
  }
 else {
    for (    Instruction instruction : phiInstructions) {
      Operand operand=Phi.getValue(instruction,OPTIMIZED_LOOP_OPERAND);
      Phi.resizeNumberOfPreds(instruction,1);
      Phi.resizeNumberOfValues(instruction,1);
      Phi.setValue(instruction,OPTIMIZED_LOOP_OPERAND,operand);
      Phi.setPred(instruction,OPTIMIZED_LOOP_OPERAND,new BasicBlockOperand(optimizedLoopExit));
    }
  }
}

private void fixUpPhiPredecessors ( ArrayList < Instruction > phiInstructions , BasicBlock unoptimizedLoopExit , BasicBlock optimizedLoopExit ) { if ( unoptimizedLoopExit != null ) { for ( Instruction instruction : phiInstructions ) { Phi . setPred ( instruction , OPTIMIZED_LOOP_OPERAND , new BasicBlockOperand ( optimizedLoopExit ) ) ; Phi . setPred ( instruction , UNOPTIMIZED_LOOP_OPERAND , new BasicBlockOperand ( unoptimizedLoopExit ) ) ; } } else { for ( Instruction instruction : phiInstructions ) { Operand operand = Phi . getValue ( instruction , OPTIMIZED_LOOP_OPERAND ) ; Phi . resizeNumberOfPreds ( instruction , 1 ) ; Phi . resizeNumberOfValues ( instruction , 1 ) ; Phi . setValue ( instruction , OPTIMIZED_LOOP_OPERAND , operand ) ; Phi . setPred ( instruction , OPTIMIZED_LOOP_OPERAND , new BasicBlockOperand ( optimizedLoopExit ) ) ; } } }
when phi nodes were generated the basic blocks weren ' t known for the predecessors , fix this up now . ( it may also not be possible to reach the unoptimized loop any more )
