package de.gaalop.tba.cfgImport.optimization;
import de.gaalop.cfg.AssignmentNode;
import de.gaalop.cfg.EmptyControlFlowVisitor;
import de.gaalop.cfg.SequentialNode;
import de.gaalop.dfg.FloatConstant;
import java.util.LinkedList;
/**
* This class collects all zero assignments in a graph
* @author Christian Steinmetz
*/
public class ZeroAssignmentsCollector extends EmptyControlFlowVisitor {
private static final double EPSILON = (double) 10E-10;
private LinkedList<SequentialNode> toRemove = new LinkedList<SequentialNode>();
public LinkedList<SequentialNode> getToRemove() {
return toRemove;
}
@Override
public void visit(AssignmentNode node) {
if (node.getValue() instanceof FloatConstant) {
double value = ((FloatConstant) node.getValue()).getValue();
if (Math.abs(value) <= EPSILON)
toRemove.add(node);
}
super.visit(node);
}
}