package de.gaalop.tba.cfgImport; import de.gaalop.cfg.AlgebraDefinitionFile; import de.gaalop.cfg.AssignmentNode; import de.gaalop.dfg.Expression; import de.gaalop.dfg.MultivectorComponent; import de.gaalop.dfg.Variable; import de.gaalop.tba.UseAlgebra; import de.gaalop.tba.cfgImport.optimization.UpdateLocalVariableSet; /** * Changes the control flow graph by building the mvExpressions. * This is the main transformer class for TBA plugin * * @author Christian Steinmetz */ public class CFGImporter extends MvExpressionsBuilder { public CFGImporter(UseAlgebra usedAlgebra, boolean scalarFunctions, AlgebraDefinitionFile alFile) { super(usedAlgebra, scalarFunctions, alFile); } @Override protected AssignmentNode changeGraph(AssignmentNode node, MvExpressions mvExpr, Variable variable) { AssignmentNode lastNode = node; boolean inserted = false; // At first, output all assignments for (int i = 0; i < bladeCount; i++) { Expression e = mvExpr.bladeExpressions[i]; if (e != null) { inserted = true; AssignmentNode insNode = new AssignmentNode(node.getGraph(), new MultivectorComponent(variable.getName(), i), e); lastNode.insertAfter(insNode); lastNode = insNode; } } node.getGraph().removeNode(node); /* if (!inserted) { //Remove local variable (for gcd), //since there are no non-empty multivector components node.getGraph().removeLocalVariable(node.getVariable()); }*/ UpdateLocalVariableSet.updateVariableSets(node.getGraph()); return lastNode; } }