private static boolean removeUselessPhi(MethodNode mth) { List<PhiInsn> insnToRemove = new ArrayList<PhiInsn>(); for (SSAVar var : mth.getSVars()) { // phi result not used if (var.getUseCount() == 0) { InsnNode assignInsn = var.getAssign().getParentInsn(); if (assignInsn != null && assignInsn.getType() == InsnType.PHI) { insnToRemove.add((PhiInsn) assignInsn); } } } for (BlockNode block : mth.getBasicBlocks()) { PhiListAttr phiList = block.get(AType.PHI_LIST); if (phiList == null) { continue; } for (PhiInsn phi : phiList.getList()) { removePhiWithSameArgs(phi, insnToRemove); } } return removePhiList(mth, insnToRemove); }