public void pushUpPhi() {
		Block left = null;
		Block right = null;
		if (thenPre != null && elsePre != null) {
			left = thenPre;
			right = elsePre;
		} else if (loopBack != null && normalPre != null) {
			left = normalPre;
			right = loopBack;
		}
		for (Iterator<SSAInstruction> iter = instructions.iterator(); iter.hasNext();) {
			SSAInstruction ins = iter.next();
			if (ins.getOP() != OP.PHI) {
				break;
			}
			if (left == null || right == null) {
				throw new IllegalStateException("has phi, but no correct pre found");
			}
			left.insertCode(OP.MOVE, new SSAVar(ins.getId()), ins.getTarget());
			right.insertCode(OP.MOVE, new SSAVar(ins.getId()), ins.getSrc());
			iter.remove();
		}
	}