public HashSet<Integer> chooseCorrectPushupPhi(final Block predecessor,
			final HashSet<Integer> liveness) {
		HashSet<Integer> validLive = new HashSet<Integer>(liveness);

		for (SSAInstruction ins : instructions) {
			if (ins.getOP() != OP.PHI) {
				break;
			}
			if (predecessor == thenPre) {
				removeLiveVarForOtherBranch(ins.getSrc(), validLive);
			}
			if (predecessor == elsePre) {
				removeLiveVarForOtherBranch(ins.getTarget(), validLive);
			}
			if (predecessor == loopBack) {
				removeLiveVarForOtherBranch(ins.getTarget(), validLive);
			}
			if (predecessor == normalPre) {
				removeLiveVarForOtherBranch(ins.getSrc(), validLive);
			}
		}
		// System.out.println("Block:" + predecessor.getID() + " out:" +
		// validLive + " from:" + this.getID());
		return validLive;
	}