public static boolean isDeadCodeInjection(Stmt stmt) { return stmt instanceof IfStmt && MacroNames .isDeadByConstruction(((IfStmt) stmt).getCondition()); }
@Override public void visitIfStmt(IfStmt ifStmt) { super.visitIfStmt(ifStmt); if (MacroNames.isDeadByConstruction(ifStmt.getCondition()) || MacroNames.isIfWrapperFalse(ifStmt.getCondition()) || MacroNames.isIfWrapperTrue(ifStmt.getCondition())) { ifStmt.setCondition(ifStmt.getCondition().getChild(0)); } }
@Override public void visitIfStmt(IfStmt ifStmt) { super.visitIfStmt(ifStmt); if (MacroNames.isIfWrapperTrue(ifStmt.getCondition())) { addOpportunity(new UnwrapReductionOpportunity(ifStmt, ifStmt.getThenStmt(), parentMap, getVistitationDepth())); } else if (MacroNames.isIfWrapperFalse(ifStmt.getCondition())) { addOpportunity(new UnwrapReductionOpportunity(ifStmt, ifStmt.getElseStmt(), parentMap, getVistitationDepth())); } }
@Override public void visitIfStmt(IfStmt ifStmt) { visitChildFromParent(ifStmt.getCondition(), ifStmt); visitChildFromParent(ifStmt.getThenStmt(), ifStmt); if (ifStmt.hasElseStmt()) { visitChildFromParent(ifStmt.getElseStmt(), ifStmt); } }
@Override public void visitIfStmt(IfStmt ifStmt) { out.append(indent() + "if("); visit(ifStmt.getCondition()); out.append(")" + newLine()); increaseIndent(); visit(ifStmt.getThenStmt()); decreaseIndent(); if (ifStmt.hasElseStmt()) { out.append(indent() + "else" + newLine()); increaseIndent(); visit(ifStmt.getElseStmt()); decreaseIndent(); } }
@Override public void visitIfStmt(IfStmt ifStmt) { super.visitIfStmt(ifStmt); if (MacroNames.isDeadByConstruction(ifStmt.getCondition())) { return; } addOpportunity(ifStmt, ifStmt.getThenStmt()); if (ifStmt.hasElseStmt()) { addOpportunity(ifStmt, ifStmt.getElseStmt()); } }
private Optional<Integer> indexOfRestorationFromBackup() { final Optional<Integer> maybeAssignmentIndex = indexOfAssignment(getOriginalVariableName(), backupName); if (maybeAssignmentIndex.isPresent()) { return maybeAssignmentIndex; } for (int i = 0; i < block.getNumStmts(); i++) { final Stmt stmt = block.getStmt(i); if (!(stmt instanceof IfStmt)) { continue; } final IfStmt ifStmt = (IfStmt) stmt; if (!MacroNames.isIfWrapperTrue(ifStmt.getCondition())) { continue; } if (isAssignment(ifStmt.getThenStmt(), getOriginalVariableName(), backupName)) { return Optional.of(i); } if (ifStmt.getThenStmt() instanceof BlockStmt && ((BlockStmt) ifStmt.getThenStmt()).getNumStmts() == 1 && isAssignment(((BlockStmt) ifStmt.getThenStmt()).getStmt(0), getOriginalVariableName(), backupName)) { return Optional.of(i); } } return Optional.empty(); }