package de.gaalop.tba.cfgImport.optimization.maxima; import de.gaalop.cfg.AssignmentNode; import de.gaalop.cfg.EmptyControlFlowVisitor; import de.gaalop.dfg.Variable; import java.util.LinkedList; /** * Collects all unused variables in a control flow graph * @author Christian Steinmetz */ public class UnusedCollector extends EmptyControlFlowVisitor { private LinkedList<AssignmentNode> unusedNodes = new LinkedList<AssignmentNode>(); private LinkedList<Variable> usedVariables; public UnusedCollector(LinkedList<Variable> usedVariables) { this.usedVariables = usedVariables; } public LinkedList<AssignmentNode> getUnusedNodes() { return unusedNodes; } /** * Determines, if a variable name is used * @param name The name of the variable * @return <value>true</value> if it is used, <value>false</value> otherwise */ private boolean isUsed(String name) { for (Variable var : usedVariables) { if (var.getName().equals(name)) { return true; } } return false; } @Override public void visit(AssignmentNode node) { if (!isUsed(node.getVariable().getName())) { unusedNodes.add(node); } super.visit(node); } }