mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-08 17:54:40 +00:00
Removed unused LValueLoHiByte.
This commit is contained in:
parent
4bcf51732b
commit
62a56f23fb
@ -161,7 +161,6 @@ public class Compiler {
|
|||||||
assertions.add(new Pass2AssertBlocks(program));
|
assertions.add(new Pass2AssertBlocks(program));
|
||||||
assertions.add(new Pass2AssertNoCallParameters(program));
|
assertions.add(new Pass2AssertNoCallParameters(program));
|
||||||
assertions.add(new Pass2AssertNoCallLvalues(program));
|
assertions.add(new Pass2AssertNoCallLvalues(program));
|
||||||
assertions.add(new Pass2AssertNoLvalueLoHi(program));
|
|
||||||
assertions.add(new Pass2AssertNoReturnValues(program));
|
assertions.add(new Pass2AssertNoReturnValues(program));
|
||||||
assertions.add(new Pass2AssertNoProcs(program));
|
assertions.add(new Pass2AssertNoProcs(program));
|
||||||
assertions.add(new Pass2AssertNoLabels(program));
|
assertions.add(new Pass2AssertNoLabels(program));
|
||||||
@ -215,16 +214,13 @@ public class Compiler {
|
|||||||
private void pass3Analysis() {
|
private void pass3Analysis() {
|
||||||
|
|
||||||
new Pass3AssertNoValueLists(program).check();
|
new Pass3AssertNoValueLists(program).check();
|
||||||
|
|
||||||
new Pass3BlockSequencePlanner(program).plan();
|
new Pass3BlockSequencePlanner(program).plan();
|
||||||
|
|
||||||
// Phi lifting ensures that all variables in phi-blocks are in different live range equivalence classes
|
// Phi lifting ensures that all variables in phi-blocks are in different live range equivalence classes
|
||||||
new Pass3PhiLifting(program).perform();
|
new Pass3PhiLifting(program).perform();
|
||||||
new Pass3BlockSequencePlanner(program).plan();
|
new Pass3BlockSequencePlanner(program).plan();
|
||||||
getLog().append("CONTROL FLOW GRAPH - PHI LIFTED");
|
getLog().append("CONTROL FLOW GRAPH - PHI LIFTED");
|
||||||
getLog().append(program.getGraph().toString(program));
|
getLog().append(program.getGraph().toString(program));
|
||||||
pass2AssertSSA();
|
pass2AssertSSA();
|
||||||
|
|
||||||
new Pass3AddNopBeforeCallOns(program).generate();
|
new Pass3AddNopBeforeCallOns(program).generate();
|
||||||
new PassNStatementIndices(program).generateStatementIndices();
|
new PassNStatementIndices(program).generateStatementIndices();
|
||||||
|
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -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<Void> checkCalls = new ControlFlowGraphBaseVisitor<Void>() {
|
|
||||||
@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());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user