diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index b283a0ac8..594218b1c 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -161,7 +161,6 @@ public class Compiler { assertions.add(new Pass2AssertBlocks(program)); assertions.add(new Pass2AssertNoCallParameters(program)); assertions.add(new Pass2AssertNoCallLvalues(program)); - assertions.add(new Pass2AssertNoLvalueLoHi(program)); assertions.add(new Pass2AssertNoReturnValues(program)); assertions.add(new Pass2AssertNoProcs(program)); assertions.add(new Pass2AssertNoLabels(program)); @@ -215,16 +214,13 @@ public class Compiler { private void pass3Analysis() { new Pass3AssertNoValueLists(program).check(); - new Pass3BlockSequencePlanner(program).plan(); - // Phi lifting ensures that all variables in phi-blocks are in different live range equivalence classes new Pass3PhiLifting(program).perform(); new Pass3BlockSequencePlanner(program).plan(); getLog().append("CONTROL FLOW GRAPH - PHI LIFTED"); getLog().append(program.getGraph().toString(program)); pass2AssertSSA(); - new Pass3AddNopBeforeCallOns(program).generate(); new PassNStatementIndices(program).generateStatementIndices(); diff --git a/src/main/java/dk/camelot64/kickc/model/LvalueLoHiByte.java b/src/main/java/dk/camelot64/kickc/model/LvalueLoHiByte.java deleted file mode 100644 index 8b5c39b8f..000000000 --- a/src/main/java/dk/camelot64/kickc/model/LvalueLoHiByte.java +++ /dev/null @@ -1,36 +0,0 @@ -package dk.camelot64.kickc.model; - -/** - * The low/high-byte component of a word variable or pointer variable - */ -public class LvalueLoHiByte implements LValue { - - private VariableRef variable; - - /** - * The lo/hi operator ({@link Operator#LOWBYTE} or {@link Operator#HIBYTE}). - */ - private Operator operator; - - public LvalueLoHiByte(Operator operator, VariableRef variable) { - this.variable = variable; - this.operator = operator; - } - - public VariableRef getVariable() { - return variable; - } - - public Operator getOperator() { - return operator; - } - - @Override - public String toString(Program program) { - return operator.getOperator() + "(" + variable.toString(program) + ")"; - } - - public void setVariable(VariableRef variable) { - this.variable = variable; - } -} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLvalueLoHi.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLvalueLoHi.java deleted file mode 100644 index dacef5910..000000000 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLvalueLoHi.java +++ /dev/null @@ -1,28 +0,0 @@ -package dk.camelot64.kickc.passes; - -import dk.camelot64.kickc.model.*; - -/** Asserts that the program does not contain any lo/hi lvalues (>plotter = $20) as they are replaced with =lo assignments ( plotter = plotter =lo $20 ) */ -public class Pass2AssertNoLvalueLoHi extends Pass2SsaAssertion { - - public Pass2AssertNoLvalueLoHi(Program program) { - super(program); - } - - @Override - public void check() throws AssertionFailed { - - ControlFlowGraphBaseVisitor checkCalls = new ControlFlowGraphBaseVisitor() { - @Override - public Void visitAssignment(StatementAssignment assignment) { - if(assignment.getlValue() instanceof LvalueLoHiByte) { - throw new AssertionFailed("No lValue lo/hi allowed! "+ assignment); - } - return null; - } - - }; - checkCalls.visitGraph(getGraph()); - } - -}