mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-11 20:37:40 +00:00
Clean-up of pass 1 log to avoid modifying log-files evey time stdlib is modified.
This commit is contained in:
parent
031cde10e9
commit
793a776b04
src
main
test/ref
address-0.logaddress-1.logaddress-2.logaddress-3.logaddress-4.logaddress-of-0.logaddress-of-1.logaddress-of-2.logaddress-of-3.logarray-16bit-lookup.logarray-length-symbolic-min.logarray-length-symbolic.logarrays-init-kasm-0.logarrays-init-short.logarrays-init.logasm-mnemonic-names.logasm-uses-0.logassignment-chained.logassignment-compound.logbitmap-circle-2.cfgbitmap-circle-2.logbitmap-circle-2.symbitmap-circle.cfgbitmap-circle.logbitmap-circle.symbitmap-line-anim-1.logbitmap-line-anim-2.cfgbitmap-line-anim-2.logbitmap-line-anim-2.symbitmap-plot-0.logbitmap-plot-1.cfgbitmap-plot-1.logbitmap-plot-1.symbitmap-plot-2.cfgbitmap-plot-2.logbitmap-plot-2.symbitmap-plot-3.cfgbitmap-plot-3.logbitmap-plot-3.symbitmap-plotter.logbitwise-not.logbool-const.logbool-function.logbool-ifs-min.logbool-ifs.logbool-nullpointer-exception.logbool-pointer.logbool-vars.logbresenham.logbresenhamarr.logc-types.logc64dtv-8bppcharstretch.logc64dtv-8bppchunkystretch.logc64dtv-blitter-box.logc64dtv-blittermin.logc64dtv-color.cfgc64dtv-color.logc64dtv-gfxexplorer.cfgc64dtv-gfxexplorer.logc64dtv-gfxexplorer.symc64dtv-gfxmodes.cfgc64dtv-gfxmodes.logc64dtv-gfxmodes.symcall-parameter-autocast.logcallconstparam.logcast-deref.logcast-not-needed-2.logcast-not-needed-3.logcast-not-needed.logcast-precedence-problem.logcasting.logchargen.logchessboard.logcia-timer-cyclecount.logcia-timer-simple.logclobber-a-problem.logcoalesce-assignment.logcode-after-return-1.logcomma-decl-2.logcomma-decl-for.logcomma-decl.logcomma-expr-1.logcomma-expr-for.logcomparison-rewriting-pointer.logcomparison-rewriting.logcomplex-conditional-problem.log
complex
@ -268,7 +268,7 @@ public class Compiler {
|
||||
new Pass1AddressOfHandling(program).execute();
|
||||
new Pass1FixLValuesLoHi(program).execute();
|
||||
new Pass1AssertNoLValueIntermediate(program).execute();
|
||||
new PassNAddTypeConversionAssignment(program, false).execute();
|
||||
new PassNAddTypeConversionAssignment(program, true).execute();
|
||||
new Pass1AssertProcedureCallParameters(program).execute();
|
||||
|
||||
if(getLog().isVerbosePass1CreateSsa()) {
|
||||
@ -285,9 +285,9 @@ public class Compiler {
|
||||
new Pass1UnwindStructVariables(program).execute();
|
||||
new Pass1UnwindStructValues(program).execute();
|
||||
|
||||
new PassNDeInlineCastValues(program).execute();
|
||||
new PassNAddBooleanCasts(program).execute();
|
||||
new PassNAddTypeConversionAssignment(program, false).execute();
|
||||
new PassNDeInlineCastValues(program, true).execute();
|
||||
new PassNAddBooleanCasts(program, true).execute();
|
||||
new PassNAddTypeConversionAssignment(program, true).execute();
|
||||
|
||||
new Pass1EarlyConstantIdentification(program).execute();
|
||||
new PassNAssertConstantModification(program).execute();
|
||||
@ -311,7 +311,8 @@ public class Compiler {
|
||||
new Pass1EliminateUncalledProcedures(program).execute();
|
||||
new PassNEliminateUnusedVars(program, false).execute();
|
||||
new Pass1ExtractInlineStrings(program).execute();
|
||||
new PassNCullEmptyBlocks(program).execute();
|
||||
new PassNCullEmptyBlocks(program, true).execute();
|
||||
new PassNRenumberLabels(program, true).execute();
|
||||
|
||||
new Pass1UnrollConditionVariableSsa(program).step();
|
||||
|
||||
@ -368,7 +369,7 @@ public class Compiler {
|
||||
optimizations.add(new PassNCastSimplification(program));
|
||||
optimizations.add(new PassNFinalizeNumberTypeConversions(program));
|
||||
optimizations.add(new PassNTypeInference(program));
|
||||
optimizations.add(new PassNAddTypeConversionAssignment(program, true));
|
||||
optimizations.add(new PassNAddTypeConversionAssignment(program, false));
|
||||
optimizations.add(new PassNTypeIdSimplification(program));
|
||||
optimizations.add(new PassNSizeOfSimplification(program));
|
||||
optimizations.add(new PassNStatementIndices(program));
|
||||
@ -395,7 +396,7 @@ public class Compiler {
|
||||
optimizations.add(new PassNStatementIndices(program));
|
||||
optimizations.add(new Pass2ConditionalJumpSimplification(program));
|
||||
optimizations.add(new Pass2ConditionalAndOrRewriting(program));
|
||||
optimizations.add(new PassNAddBooleanCasts(program));
|
||||
optimizations.add(new PassNAddBooleanCasts(program, false));
|
||||
optimizations.add(new PassNStructUnwoundPlaceholderRemoval(program));
|
||||
optimizations.add(new PassNArrayElementAddressOfRewriting(program));
|
||||
optimizations.add(new Pass2ConditionalJumpSequenceImprovement(program));
|
||||
@ -589,8 +590,8 @@ public class Compiler {
|
||||
|
||||
// Phi mem coalesce removes as many variables introduced by phi lifting as possible - as long as their live ranges do not overlap
|
||||
new Pass3PhiMemCoalesce(program).step();
|
||||
new PassNCullEmptyBlocks(program).step();
|
||||
new PassNRenumberLabels(program).execute();
|
||||
new PassNCullEmptyBlocks(program, false).step();
|
||||
new PassNRenumberLabels(program, false).execute();
|
||||
new PassNBlockSequencePlanner(program).step();
|
||||
new Pass3AddNopBeforeCallOns(program).generate();
|
||||
new PassNStatementIndices(program).execute();
|
||||
|
@ -45,12 +45,14 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
if(assignment instanceof StatementAssignment) {
|
||||
StatementAssignment assign = (StatementAssignment) assignment;
|
||||
if(assign.getrValue1() == null && assign.getOperator() == null && assign.getrValue2() instanceof ConstantValue) {
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
ConstantValue constantValue = (ConstantValue) assign.getrValue2();
|
||||
convertToConst(variable, constantValue, assignment.getComments(), aliases);
|
||||
convertToConst(variable, constantValue, assignment.getComments(), aliases);
|
||||
removeStmt.add(assign);
|
||||
} else if(assign.getrValue1() == null && assign.getOperator() instanceof OperatorCastPtr && assign.getrValue2() instanceof ConstantValue) {
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
ConstantValue constantValue = new ConstantCastValue(((OperatorCastPtr) assign.getOperator()).getToType(), (ConstantValue) assign.getrValue2());
|
||||
convertToConst(variable, constantValue, assignment.getComments(), aliases);
|
||||
removeStmt.add(assign);
|
||||
@ -59,7 +61,8 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
} else if(varAssignment.type.equals(VarAssignments.VarAssignment.Type.INIT_VALUE)) {
|
||||
if(!(variable.getType() instanceof SymbolTypeStruct)) {
|
||||
// Only assignment is the initValue
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
ConstantValue constantValue = variable.getInitValue();
|
||||
convertToConst(variable, constantValue, variable.getComments(), aliases);
|
||||
}
|
||||
@ -99,6 +102,7 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
|
||||
/**
|
||||
* Type check and potentially add cast to the constant value
|
||||
*
|
||||
* @param variable
|
||||
* @param constantValue
|
||||
* @return
|
||||
|
@ -55,7 +55,7 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
ConstantBinary binary = (ConstantBinary) programValue.get();
|
||||
if(Operators.PLUS.equals(binary.getOperator()) || Operators.MINUS.equals(binary.getOperator())) {
|
||||
SymbolTypePointer pointerType = getPointerType(binary.getLeft());
|
||||
if(pointerType!=null && pointerType.getElementType().getSizeBytes() > 1) {
|
||||
if(pointerType != null && pointerType.getElementType().getSizeBytes() > 1) {
|
||||
getLog().append("Fixing constant pointer addition " + binary.toString(getProgram()));
|
||||
ConstantRef sizeOfTargetType = SizeOfConstants.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType());
|
||||
binary.setRight(new ConstantBinary(binary.getRight(), Operators.MULTIPLY, sizeOfTargetType));
|
||||
@ -67,7 +67,8 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
if(pointerType != null) {
|
||||
if(pointerType.getElementType().getSizeBytes() > 1) {
|
||||
// Array-indexing into a non-byte pointer - multiply by sizeof()
|
||||
getLog().append("Fixing pointer array-indexing " + deref.toString(getProgram()));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Fixing pointer array-indexing " + deref.toString(getProgram()));
|
||||
SymbolVariableRef idx2VarRef = handled.getOrDefault(currentStmt, new LinkedHashMap<>()).get(deref.getIndex());
|
||||
if(idx2VarRef == null) {
|
||||
Variable idx2Var = getScope().getScope(currentBlock.getScope()).addVariableIntermediate();
|
||||
@ -95,7 +96,7 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
* @param assignment The assignment statement
|
||||
*/
|
||||
|
||||
public void fixPointerBinary(ControlFlowBlock block, ListIterator<Statement> stmtIt, StatementAssignment assignment) {
|
||||
private void fixPointerBinary(ControlFlowBlock block, ListIterator<Statement> stmtIt, StatementAssignment assignment) {
|
||||
SymbolTypePointer pointerType = getPointerType(assignment.getrValue1());
|
||||
if(pointerType != null) {
|
||||
if(SymbolType.VOID.equals(pointerType.getElementType())) {
|
||||
@ -111,7 +112,8 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
if(symbolR2.getType() instanceof SymbolTypePointer) {
|
||||
// RValue 2 is a pointer
|
||||
isPointerPlusConst = false;
|
||||
getLog().append("Fixing pointer addition " + assignment.toString(getProgram(), false));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Fixing pointer addition " + assignment.toString(getProgram(), false));
|
||||
LValue lValue = assignment.getlValue();
|
||||
Variable tmpVar = getScope().getScope(block.getScope()).addVariableIntermediate();
|
||||
tmpVar.setType(SymbolTypeInference.inferType(getScope(), assignment.getlValue()));
|
||||
@ -124,7 +126,8 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
if(isPointerPlusConst) {
|
||||
// Binary operation on a non-byte pointer - sizeof()-handling is probably needed!
|
||||
// Adding to a pointer - multiply by sizeof()
|
||||
getLog().append("Fixing pointer addition " + assignment.toString(getProgram(), false));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Fixing pointer addition " + assignment.toString(getProgram(), false));
|
||||
Variable tmpVar = getScope().getScope(block.getScope()).addVariableIntermediate();
|
||||
tmpVar.setType(SymbolTypeInference.inferType(getScope(), assignment.getrValue2()));
|
||||
stmtIt.remove();
|
||||
@ -143,7 +146,7 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
*
|
||||
* @param assignment The assignment statement
|
||||
*/
|
||||
public void fixPointerUnary(StatementAssignment assignment) {
|
||||
private void fixPointerUnary(StatementAssignment assignment) {
|
||||
// Found assignment with unary operator
|
||||
SymbolTypePointer pointerType = getPointerType(assignment.getrValue2());
|
||||
if(pointerType != null) {
|
||||
@ -156,13 +159,15 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
// Unary operation on non-byte pointer type - sizeof()-handling is needed!
|
||||
if(Operators.INCREMENT.equals(assignment.getOperator())) {
|
||||
// Pointer increment - add sizeof(type) instead
|
||||
getLog().append("Fixing pointer increment " + assignment.toString(getProgram(), false));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Fixing pointer increment " + assignment.toString(getProgram(), false));
|
||||
assignment.setrValue1(assignment.getrValue2());
|
||||
assignment.setOperator(Operators.PLUS);
|
||||
assignment.setrValue2(SizeOfConstants.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType()));
|
||||
} else if(Operators.DECREMENT.equals(assignment.getOperator())) {
|
||||
// Pointer Decrement - add sizeof(type) instead
|
||||
getLog().append("Fixing pointer decrement " + assignment.toString(getProgram(), false));
|
||||
if(getLog().isVerboseParse())
|
||||
getLog().append("Fixing pointer decrement " + assignment.toString(getProgram(), false));
|
||||
assignment.setrValue1(assignment.getrValue2());
|
||||
assignment.setOperator(Operators.MINUS);
|
||||
assignment.setrValue2(SizeOfConstants.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType()));
|
||||
@ -174,6 +179,7 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
/**
|
||||
* Examine the passed value to determine if it is a pointer.
|
||||
* If it is a pointer return the type of the pointer
|
||||
*
|
||||
* @param pointer The potential pointer to examine
|
||||
* @return The type of the pointer - if the value was a pointer. null if the value is not a pointer.
|
||||
*/
|
||||
|
@ -23,8 +23,11 @@ import java.util.ListIterator;
|
||||
*/
|
||||
public class PassNAddBooleanCasts extends Pass2SsaOptimization {
|
||||
|
||||
public PassNAddBooleanCasts(Program program) {
|
||||
private boolean pass1;
|
||||
|
||||
public PassNAddBooleanCasts(Program program, boolean pass1) {
|
||||
super(program);
|
||||
this.pass1 = pass1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,12 +38,13 @@ public class PassNAddBooleanCasts extends Pass2SsaOptimization {
|
||||
Statement currentStmt = stmtIt.next();
|
||||
if(currentStmt instanceof StatementConditionalJump) {
|
||||
StatementConditionalJump conditionalJump = (StatementConditionalJump) currentStmt;
|
||||
if(conditionalJump.getOperator()==null) {
|
||||
if(conditionalJump.getOperator() == null) {
|
||||
RValue rValue2 = conditionalJump.getrValue2();
|
||||
SymbolType type = SymbolTypeInference.inferType(getScope(), rValue2);
|
||||
if(SymbolType.isInteger(type) || type instanceof SymbolTypePointer) {
|
||||
// Found integer condition - add boolean cast
|
||||
getLog().append("Warning! Adding boolean cast to non-boolean condition "+rValue2.toString(getProgram()));
|
||||
if(!pass1)
|
||||
getLog().append("Warning! Adding boolean cast to non-boolean condition " + rValue2.toString(getProgram()));
|
||||
Variable tmpVar = addBooleanCast(rValue2, type, currentStmt, stmtIt, currentBlock);
|
||||
conditionalJump.setrValue2(tmpVar.getRef());
|
||||
}
|
||||
@ -54,10 +58,11 @@ public class PassNAddBooleanCasts extends Pass2SsaOptimization {
|
||||
RValue operand = unaryExpression.getOperand();
|
||||
SymbolType operandType = SymbolTypeInference.inferType(getScope(), operand);
|
||||
if(SymbolType.isInteger(operandType) || operandType instanceof SymbolTypePointer) {
|
||||
getLog().append("Warning! Adding boolean cast to non-boolean sub-expression "+operand.toString(getProgram()));
|
||||
if(!pass1)
|
||||
getLog().append("Warning! Adding boolean cast to non-boolean sub-expression " + operand.toString(getProgram()));
|
||||
if(operand instanceof ConstantValue) {
|
||||
unaryExpression.setOperand(new ConstantBinary(new ConstantInteger(0L, SymbolType.NUMBER), Operators.NEQ, (ConstantValue) operand));
|
||||
} else {
|
||||
} else {
|
||||
SymbolType type = SymbolTypeInference.inferType(getScope(), operand);
|
||||
Variable tmpVar = addBooleanCast(operand, type, currentStmt, stmtIt, currentBlock);
|
||||
unaryExpression.setOperand(tmpVar.getRef());
|
||||
@ -68,7 +73,7 @@ public class PassNAddBooleanCasts extends Pass2SsaOptimization {
|
||||
return false;
|
||||
}
|
||||
|
||||
public Variable addBooleanCast(RValue rValue, SymbolType rValueType, Statement currentStmt, ListIterator<Statement> stmtIt, ControlFlowBlock currentBlock) {
|
||||
private Variable addBooleanCast(RValue rValue, SymbolType rValueType, Statement currentStmt, ListIterator<Statement> stmtIt, ControlFlowBlock currentBlock) {
|
||||
Scope currentScope = getScope().getScope(currentBlock.getScope());
|
||||
stmtIt.previous();
|
||||
Variable tmpVar = currentScope.addVariableIntermediate();
|
||||
@ -77,7 +82,7 @@ public class PassNAddBooleanCasts extends Pass2SsaOptimization {
|
||||
ConstantValue nullValue;
|
||||
if(rValueType instanceof SymbolTypePointer) {
|
||||
nullValue = new ConstantCastValue(rValueType, new ConstantInteger(0L, SymbolType.WORD));
|
||||
} else {
|
||||
} else {
|
||||
nullValue = new ConstantInteger(0L, SymbolType.NUMBER);
|
||||
}
|
||||
stmtIt.add(new StatementAssignment((LValue) tmpVar.getRef(), nullValue, Operators.NEQ, rValue, true, currentStmt.getSource(), Comment.NO_COMMENTS));
|
||||
|
@ -17,11 +17,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
*/
|
||||
public class PassNAddTypeConversionAssignment extends Pass2SsaOptimization {
|
||||
|
||||
private boolean pass2;
|
||||
private boolean pass1;
|
||||
|
||||
public PassNAddTypeConversionAssignment(Program program, boolean pass2) {
|
||||
public PassNAddTypeConversionAssignment(Program program, boolean pass1) {
|
||||
super(program);
|
||||
this.pass2 = pass2;
|
||||
this.pass1 = pass1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -44,38 +44,38 @@ public class PassNAddTypeConversionAssignment extends Pass2SsaOptimization {
|
||||
// Assigning a pointer from an unsigned word
|
||||
if(programExpression instanceof ProgramExpressionBinary.ProgramExpressionBinaryAssignmentLValue || programExpression instanceof ProgramExpressionBinary.ProgramExpressionBinaryCallParameter) {
|
||||
if((leftType instanceof SymbolTypePointer) && SymbolType.isInteger(rightType)) {
|
||||
if(pass2 || getLog().isVerbosePass1CreateSsa())
|
||||
if(!pass1 || getLog().isVerbosePass1CreateSsa())
|
||||
getLog().append("Adding pointer type conversion cast (" + leftType + ") " + binary.getLeft().toString() + " in " + currentStmt.toString(getProgram(), false));
|
||||
binary.addRightCast(leftType, stmtIt, currentBlock.getScope(), getScope());
|
||||
modified.set(true);
|
||||
} else if((leftType instanceof SymbolTypePointer) && rightType instanceof SymbolTypePointer && SymbolType.VOID.equals(((SymbolTypePointer) leftType).getElementType())) {
|
||||
if(pass2 || getLog().isVerbosePass1CreateSsa())
|
||||
if(!pass1 || getLog().isVerbosePass1CreateSsa())
|
||||
getLog().append("Adding void pointer type conversion cast (" + leftType + ") " + binary.getRight().toString() + " in " + currentStmt.toString(getProgram(), false));
|
||||
binary.addRightCast(leftType, stmtIt, currentBlock.getScope(), getScope());
|
||||
modified.set(true);
|
||||
} else if((leftType instanceof SymbolTypePointer) && rightType instanceof SymbolTypePointer && SymbolType.VOID.equals(((SymbolTypePointer) rightType).getElementType())) {
|
||||
if(pass2 || getLog().isVerbosePass1CreateSsa())
|
||||
if(!pass1 || getLog().isVerbosePass1CreateSsa())
|
||||
getLog().append("Adding pointer type conversion cast to void pointer (" + leftType + ") " + binary.getRight().toString() + " in " + currentStmt.toString(getProgram(), false));
|
||||
binary.addRightCast(leftType, stmtIt, currentBlock.getScope(), getScope());
|
||||
modified.set(true);
|
||||
} else if(SymbolType.WORD.equals(leftType) && isLiteralWordCandidate(right)) {
|
||||
// Detect word literal constructor
|
||||
SymbolType conversionType = SymbolType.WORD;
|
||||
if(pass2 || getLog().isVerbosePass1CreateSsa())
|
||||
if(!pass1 || getLog().isVerbosePass1CreateSsa())
|
||||
getLog().append("Identified literal word (" + conversionType + ") " + binary.getRight().toString() + " in " + (currentStmt == null ? "" : currentStmt.toString(getProgram(), false)));
|
||||
binary.addRightCast(conversionType, stmtIt, currentBlock == null ? null : currentBlock.getScope(), getScope());
|
||||
modified.set(true);
|
||||
} else if(leftType instanceof SymbolTypePointer && isLiteralWordCandidate(right)) {
|
||||
// Detect word literal constructor
|
||||
SymbolType conversionType = SymbolType.WORD;
|
||||
if(pass2 || getLog().isVerbosePass1CreateSsa())
|
||||
if(!pass1 || getLog().isVerbosePass1CreateSsa())
|
||||
getLog().append("Identified literal word (" + conversionType + ") " + binary.getRight().toString() + " in " + (currentStmt == null ? "" : currentStmt.toString(getProgram(), false)));
|
||||
binary.addRightCast(conversionType, stmtIt, currentBlock == null ? null : currentBlock.getScope(), getScope());
|
||||
modified.set(true);
|
||||
} else if(SymbolType.DWORD.equals(leftType) && isLiteralWordCandidate(right)) {
|
||||
// Detect dword literal constructor
|
||||
SymbolType conversionType = SymbolType.DWORD;
|
||||
if(pass2 || getLog().isVerbosePass1CreateSsa())
|
||||
if(!pass1 || getLog().isVerbosePass1CreateSsa())
|
||||
getLog().append("Identified literal word (" + conversionType + ") " + binary.getRight().toString() + " in " + (currentStmt == null ? "" : currentStmt.toString(getProgram(), false)));
|
||||
binary.addRightCast(conversionType, stmtIt, currentBlock == null ? null : currentBlock.getScope(), getScope());
|
||||
modified.set(true);
|
||||
|
@ -1,10 +1,12 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.values.LabelRef;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.symbols.Label;
|
||||
import dk.camelot64.kickc.model.values.LabelRef;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
@ -14,8 +16,11 @@ import java.util.Map;
|
||||
/** Pass that culls empty control flow blocks from the program */
|
||||
public class PassNCullEmptyBlocks extends Pass2SsaOptimization {
|
||||
|
||||
public PassNCullEmptyBlocks(Program program) {
|
||||
private boolean pass1;
|
||||
|
||||
public PassNCullEmptyBlocks(Program program, boolean pass1) {
|
||||
super(program);
|
||||
this.pass1 = pass1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -94,7 +99,8 @@ public class PassNCullEmptyBlocks extends Pass2SsaOptimization {
|
||||
LabelRef removeBlockLabelRef = removeBlock.getLabel();
|
||||
Label removeBlockLabel = getScope().getLabel(removeBlockLabelRef);
|
||||
removeBlockLabel.getScope().remove(removeBlockLabel);
|
||||
getLog().append("Culled Empty Block " + removeBlockLabel.toString(getProgram()));
|
||||
if(!pass1)
|
||||
getLog().append("Culled Empty Block " + removeBlockLabel.toString(getProgram()));
|
||||
}
|
||||
remove.removeAll(dontRemove);
|
||||
return remove.size() > 0;
|
||||
|
@ -20,8 +20,11 @@ import java.util.ListIterator;
|
||||
*/
|
||||
public class PassNDeInlineCastValues extends Pass2SsaOptimization {
|
||||
|
||||
public PassNDeInlineCastValues(Program program) {
|
||||
private boolean pass1;
|
||||
|
||||
public PassNDeInlineCastValues(Program program, boolean pass1) {
|
||||
super(program);
|
||||
this.pass1 = pass1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -44,7 +47,8 @@ public class PassNDeInlineCastValues extends Pass2SsaOptimization {
|
||||
|
||||
private void deInlineCastValue(ProgramValue castProgramValue, ListIterator<Statement> stmtIt, ControlFlowBlock currentBlock, Statement currentStmt) {
|
||||
final CastValue castValue = (CastValue) castProgramValue.get();
|
||||
getLog().append("De-inlining cast "+castValue.toString());
|
||||
if(!pass1)
|
||||
getLog().append("De-inlining cast " + castValue.toString());
|
||||
final Scope scope = getScope().getScope(currentBlock.getScope());
|
||||
final Variable tmpVar = scope.addVariableIntermediate();
|
||||
tmpVar.setType(castValue.getToType());
|
||||
|
@ -18,8 +18,11 @@ import java.util.Map;
|
||||
*/
|
||||
public class PassNRenumberLabels extends Pass2SsaOptimization {
|
||||
|
||||
public PassNRenumberLabels(Program program) {
|
||||
private boolean pass1;
|
||||
|
||||
public PassNRenumberLabels(Program program, boolean pass1) {
|
||||
super(program);
|
||||
this.pass1 = pass1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -30,10 +33,10 @@ public class PassNRenumberLabels extends Pass2SsaOptimization {
|
||||
renumberLabels(scope, renamed);
|
||||
}
|
||||
ProgramValueIterator.execute(getGraph(), (programValue, currentStmt, stmtIt, currentBlock) -> {
|
||||
Value value = programValue.get();
|
||||
if(value instanceof LabelRef) {
|
||||
Value value = programValue.get();
|
||||
if(value instanceof LabelRef) {
|
||||
LabelRef newLabelRef = renamed.get(value);
|
||||
if(newLabelRef!=null) {
|
||||
if(newLabelRef != null) {
|
||||
programValue.set(newLabelRef);
|
||||
}
|
||||
}
|
||||
@ -56,7 +59,8 @@ public class PassNRenumberLabels extends Pass2SsaOptimization {
|
||||
oldLabels.add(oldLabel);
|
||||
newLabels.add(newLabel);
|
||||
renamed.put((oldLabel).getRef(), newLabel.getRef());
|
||||
getLog().append("Renumbering block "+oldLabel.getFullName()+" to "+newLabel.getFullName());
|
||||
if(!pass1)
|
||||
getLog().append("Renumbering block " + oldLabel.getFullName() + " to " + newLabel.getFullName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -42,3 +42,6 @@ void ultoa(unsigned long value, char* buffer, enum RADIX radix);
|
||||
// Returns the absolute value of int x.
|
||||
int abs(int x);
|
||||
|
||||
// Returns the absolute value of long int x.
|
||||
long labs(long x);
|
||||
|
||||
|
@ -256,3 +256,11 @@ inline int abs(int x) {
|
||||
else
|
||||
return x;
|
||||
}
|
||||
|
||||
// Returns the absolute value of long int x.
|
||||
inline long labs(long x) {
|
||||
if(x<0)
|
||||
return -x;
|
||||
else
|
||||
return x;
|
||||
}
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,10 +1,3 @@
|
||||
Fixing pointer array-indexing *((word*) SCREEN + (byte) main::i)
|
||||
Fixing pointer array-indexing *((word*) SCREEN + (byte) main::i)
|
||||
Identified constant variable (word*) SCREEN
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,7 +1,4 @@
|
||||
Setting inferred volatile on symbol affected by address-of (byte*) main::bp ← &(byte) main::b
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
Identified constant variable (byte*) main::bp
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,15 +1,13 @@
|
||||
Setting inferred volatile on symbol affected by address-of (void~) main::$0 ← call setByte &(byte) main::b1 (byte) 'c'
|
||||
Setting inferred volatile on symbol affected by address-of (void~) main::$1 ← call setByte &(byte) main::b2 (byte) 'm'
|
||||
Setting inferred volatile on symbol affected by address-of (void~) main::$2 ← call setByte &(byte) main::b3 (byte) 'l'
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
Culled Empty Block (label) @1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
main: scope:[main] from @1
|
||||
(volatile byte) main::b1 ← (byte) 0
|
||||
(volatile byte) main::b2 ← (byte) 0
|
||||
(volatile byte) main::b3 ← (byte) 0
|
||||
@ -45,16 +43,16 @@ setByte: scope:[setByte] from main main::@1 main::@2
|
||||
setByte::@return: scope:[setByte] from setByte
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
@ -118,8 +116,8 @@ Consolidated array index constant in *(main::SCREEN+1)
|
||||
Consolidated array index constant in *(main::SCREEN+2)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -129,8 +127,7 @@ Calls in [main] to setByte:8 setByte:10 setByte:12
|
||||
|
||||
Created 2 initial phi equivalence classes
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Renumbering block @2 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,15 +1,12 @@
|
||||
Setting inferred volatile on symbol affected by address-of (byte*) main::ptr ← &(byte) val
|
||||
Identified constant variable (byte*) main::ptr
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(volatile byte) val ← (byte) 0
|
||||
to:@3
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @3
|
||||
main: scope:[main] from @1
|
||||
(byte) main::idx#0 ← (byte) 0
|
||||
*((const nomodify byte*) main::SCREEN1 + (byte) main::idx#0) ← (volatile byte) val
|
||||
*((const nomodify byte*) main::SCREEN2 + (byte) main::idx#0) ← (byte) '.'
|
||||
@ -66,16 +63,16 @@ setp: scope:[setp] from main::@1
|
||||
setp::@return: scope:[setp] from setp
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @4
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
@ -216,8 +213,8 @@ Simplifying constant integer increment ++2
|
||||
Simplifying constant integer increment ++3
|
||||
Simplifying constant integer increment ++4
|
||||
Successful SSA optimization Pass2ConstantSimplification
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
@ -225,8 +222,7 @@ Calls in [main] to setv:16 setp:19
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @4
|
||||
Renumbering block @3 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
||||
|
@ -1,7 +1,4 @@
|
||||
Fixing constant pointer addition (const signed word*) VALS+(number) 1
|
||||
Fixing pointer array-indexing *((const signed word*) VALS + (byte) main::i)
|
||||
Fixing pointer array-indexing *((const nomodify signed word*) SCREEN + (byte) idx)
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -12,27 +9,27 @@ main: scope:[main] from @2
|
||||
(byte) idx#15 ← phi( @2/(byte) idx#17 )
|
||||
(signed word*) print::p#0 ← (const signed word*) VALS
|
||||
call print
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main
|
||||
(byte) idx#8 ← phi( main/(byte) idx#6 )
|
||||
(byte) idx#0 ← (byte) idx#8
|
||||
(signed word*) print::p#1 ← (const signed word*) VALS+(number) 1*(const byte) SIZEOF_SIGNED_WORD
|
||||
call print
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
(byte) idx#9 ← phi( main::@3/(byte) idx#6 )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte) idx#9 ← phi( main::@2/(byte) idx#6 )
|
||||
(byte) idx#1 ← (byte) idx#9
|
||||
(byte) main::i#0 ← (byte) 2
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@4 main::@5
|
||||
(byte) idx#16 ← phi( main::@4/(byte) idx#1 main::@5/(byte) idx#2 )
|
||||
(byte) main::i#2 ← phi( main::@4/(byte) main::i#0 main::@5/(byte) main::i#1 )
|
||||
main::@1: scope:[main] from main::@3 main::@4
|
||||
(byte) idx#16 ← phi( main::@3/(byte) idx#1 main::@4/(byte) idx#2 )
|
||||
(byte) main::i#2 ← phi( main::@3/(byte) main::i#0 main::@4/(byte) main::i#1 )
|
||||
(byte~) main::$5 ← (byte) main::i#2 * (const byte) SIZEOF_SIGNED_WORD
|
||||
(signed word*~) main::$2 ← & *((const signed word*) VALS + (byte~) main::$5)
|
||||
(signed word*) print::p#2 ← (signed word*~) main::$2
|
||||
call print
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@1
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@1
|
||||
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
|
||||
(byte) idx#10 ← phi( main::@1/(byte) idx#6 )
|
||||
(byte) idx#2 ← (byte) idx#10
|
||||
@ -40,8 +37,8 @@ main::@5: scope:[main] from main::@1
|
||||
(bool~) main::$4 ← (byte) main::i#1 != rangelast(2,3)
|
||||
if((bool~) main::$4) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@5
|
||||
(byte) idx#11 ← phi( main::@5/(byte) idx#2 )
|
||||
main::@return: scope:[main] from main::@4
|
||||
(byte) idx#11 ← phi( main::@4/(byte) idx#2 )
|
||||
(byte) idx#3 ← (byte) idx#11
|
||||
return
|
||||
to:@return
|
||||
@ -50,9 +47,9 @@ main::@return: scope:[main] from main::@5
|
||||
to:@2
|
||||
|
||||
(void()) print((signed word*) print::p)
|
||||
print: scope:[print] from main main::@1 main::@3
|
||||
(signed word*) print::p#3 ← phi( main/(signed word*) print::p#0 main::@1/(signed word*) print::p#2 main::@3/(signed word*) print::p#1 )
|
||||
(byte) idx#12 ← phi( main/(byte) idx#15 main::@1/(byte) idx#16 main::@3/(byte) idx#0 )
|
||||
print: scope:[print] from main main::@1 main::@2
|
||||
(signed word*) print::p#3 ← phi( main/(signed word*) print::p#0 main::@1/(signed word*) print::p#2 main::@2/(signed word*) print::p#1 )
|
||||
(byte) idx#12 ← phi( main/(byte) idx#15 main::@1/(byte) idx#16 main::@2/(byte) idx#0 )
|
||||
(byte~) print::$0 ← (byte) idx#12 * (const byte) SIZEOF_SIGNED_WORD
|
||||
*((const nomodify signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3)
|
||||
(byte) idx#5 ← ++ (byte) idx#12
|
||||
@ -105,9 +102,9 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$4
|
||||
(byte~) main::$5
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
@ -178,14 +175,14 @@ Constant inlined idx#17 = (byte) 0
|
||||
Constant inlined print::p#1 = (const signed word*) VALS+(byte) 1*(const byte) SIZEOF_SIGNED_WORD
|
||||
Constant inlined print::p#0 = (const signed word*) VALS
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@6(between main::@5 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@4 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@4
|
||||
Adding NOP phi() at start of main::@3
|
||||
CALL GRAPH
|
||||
Calls in [] to main:3
|
||||
Calls in [main] to print:7 print:9 print:16
|
||||
@ -198,11 +195,10 @@ Coalesced [20] main::i#4 ← main::i#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Renumbering block @2 to @1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@5 to main::@3
|
||||
Renumbering block main::@4 to main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,25 +1,19 @@
|
||||
Fixing pointer array-indexing *((word*) main::SCREEN + (byte) main::idx)
|
||||
Fixing pointer array-indexing *((const word*) arr16 + (number~) getValue::$0)
|
||||
Identified constant variable (word*) main::SCREEN
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) getValue::@1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
main: scope:[main] from @1
|
||||
(byte) main::idx#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
(byte) main::idx#2 ← phi( main/(byte) main::idx#0 main::@3/(byte) main::idx#1 )
|
||||
main::@1: scope:[main] from main main::@2
|
||||
(byte) main::idx#2 ← phi( main/(byte) main::idx#0 main::@2/(byte) main::idx#1 )
|
||||
(word) getValue::index#0 ← (byte) main::idx#2
|
||||
call getValue
|
||||
(word) getValue::return#0 ← (word) getValue::return#2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte) main::idx#3 ← phi( main::@1/(byte) main::idx#2 )
|
||||
(word) getValue::return#3 ← phi( main::@1/(word) getValue::return#0 )
|
||||
(word~) main::$0 ← (word) getValue::return#3
|
||||
@ -29,7 +23,7 @@ main::@3: scope:[main] from main::@1
|
||||
(bool~) main::$1 ← (byte) main::idx#1 != rangelast(0,$80)
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
|
||||
@ -47,16 +41,16 @@ getValue::@return: scope:[getValue] from getValue
|
||||
(word) getValue::return#2 ← (word) getValue::return#4
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) SIZEOF_WORD = (byte) 2
|
||||
@ -81,7 +75,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$1
|
||||
(byte~) main::$2
|
||||
(label) main::@1
|
||||
(label) main::@3
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word*) main::SCREEN = (word*)(number) $400
|
||||
(byte) main::idx
|
||||
@ -137,10 +131,10 @@ Constant inlined main::idx#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Eliminating unused constant (const byte) SIZEOF_WORD
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Added new block during phi lifting main::@4(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@3(between main::@2 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
CALL GRAPH
|
||||
@ -150,10 +144,8 @@ Calls in [main] to getValue:8
|
||||
Created 1 initial phi equivalence classes
|
||||
Coalesced [16] main::idx#4 ← main::idx#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) main::@4
|
||||
Renumbering block @2 to @1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,5 +1,3 @@
|
||||
Identified constant variable (byte*) main::cur_item
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -61,7 +59,7 @@ Inlining constant with var siblings (const byte) main::sub#0
|
||||
Constant inlined main::sub#0 = (byte) 0
|
||||
Constant inlined main::cur_item = (const byte*) items
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@3(between main::@1 and main::@1)
|
||||
Added new block during phi lifting main::@2(between main::@1 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -74,7 +72,7 @@ Created 1 initial phi equivalence classes
|
||||
Coalesced [11] main::sub#3 ← main::sub#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,4 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -132,8 +131,8 @@ Constant inlined main::sub#0 = (byte) 0
|
||||
Constant inlined main::cur_item#0 = (const byte*) items
|
||||
Constant inlined main::item#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@2 and main::@2)
|
||||
Added new block during phi lifting main::@4(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@2)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -148,8 +147,8 @@ Coalesced [18] main::cur_item#5 ← main::cur_item#1
|
||||
Coalesced [19] main::sub#3 ← main::sub#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,4 +1,3 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,12 +1,3 @@
|
||||
Warning! Adding boolean cast to non-boolean condition *((const byte*) msg1 + (byte) main::i)
|
||||
Warning! Adding boolean cast to non-boolean condition *((const byte*) msg2 + (byte) main::i1)
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@12
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -28,18 +19,18 @@ main::@2: scope:[main] from main::@1
|
||||
to:main::@1
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte) main::i1#0 ← (byte) 0
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@3 main::@8
|
||||
(byte) main::i1#2 ← phi( main::@3/(byte) main::i1#0 main::@8/(byte) main::i1#1 )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@5
|
||||
(byte) main::i1#2 ← phi( main::@3/(byte) main::i1#0 main::@5/(byte) main::i1#1 )
|
||||
(bool~) main::$1 ← (number) 0 != *((const byte*) msg2 + (byte) main::i1#2)
|
||||
if((bool~) main::$1) goto main::@8
|
||||
if((bool~) main::$1) goto main::@5
|
||||
to:main::@return
|
||||
main::@8: scope:[main] from main::@7
|
||||
(byte) main::i1#3 ← phi( main::@7/(byte) main::i1#2 )
|
||||
main::@5: scope:[main] from main::@4
|
||||
(byte) main::i1#3 ← phi( main::@4/(byte) main::i1#2 )
|
||||
*((const nomodify byte*) SCREEN+(number) $28 + (byte) main::i1#3) ← *((const byte*) msg2 + (byte) main::i1#3)
|
||||
(byte) main::i1#1 ← ++ (byte) main::i1#3
|
||||
to:main::@7
|
||||
main::@return: scope:[main] from main::@7
|
||||
to:main::@4
|
||||
main::@return: scope:[main] from main::@4
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
@ -61,8 +52,8 @@ SYMBOL TABLE SSA
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
@ -94,7 +85,7 @@ Alias main::i#2 = main::i#3
|
||||
Alias main::i1#2 = main::i1#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$0 [3] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [9] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@8
|
||||
Simple Condition (bool~) main::$1 [9] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@5
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte) main::i1#0 = 0
|
||||
@ -119,8 +110,8 @@ Coalesced [17] main::i#4 ← main::i#1
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Renumbering block main::@7 to main::@3
|
||||
Renumbering block main::@8 to main::@4
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@5 to main::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,4 +1,3 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,12 +1,10 @@
|
||||
Identified constant variable (byte) main::jmp
|
||||
Culled Empty Block (label) @1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
main: scope:[main] from @1
|
||||
*((const nomodify byte*) lda) ← (const byte) main::jmp
|
||||
(byte) bne::jsr#0 ← (const byte) main::jmp
|
||||
call bne
|
||||
@ -26,16 +24,16 @@ bne: scope:[bne] from main
|
||||
bne::@return: scope:[bne] from bne
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) bne((byte) bne::jsr)
|
||||
@ -65,8 +63,8 @@ Successful SSA optimization Pass2ConstantInlining
|
||||
Consolidated array index constant in *(lda+1)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
@ -74,8 +72,7 @@ Calls in [main] to bne:6
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Renumbering block @2 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,12 +1,11 @@
|
||||
Resolved forward reference init to (void()) init()
|
||||
Culled Empty Block (label) @1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
main: scope:[main] from @1
|
||||
asm { jsrinit }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
@ -20,16 +19,16 @@ init: scope:[init] from
|
||||
init::@return: scope:[init] from init
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d020
|
||||
@ -48,16 +47,15 @@ Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Renumbering block @2 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,4 +1,3 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,20 +1,13 @@
|
||||
Identified constant variable (byte*) screen1
|
||||
Identified constant variable (byte*) cols
|
||||
Identified constant variable (byte) GREEN
|
||||
Identified constant variable (byte) RED
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) test::@2
|
||||
Culled Empty Block (label) test::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*~) $0 ← (const byte*) screen1 + (number) $28
|
||||
(byte*) screen2#0 ← (byte*~) $0
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen2#2 ← phi( @2/(byte*) screen2#13 )
|
||||
main: scope:[main] from @1
|
||||
(byte*) screen2#2 ← phi( @1/(byte*) screen2#13 )
|
||||
(byte) main::i#0 ← (byte) 0
|
||||
(byte) main::a#0 ← (byte) 3
|
||||
(byte) test::i#0 ← (byte) main::i#0
|
||||
@ -138,30 +131,30 @@ test: scope:[test] from main main::@1 main::@10 main::@2 main::@3 main::@4 main
|
||||
*((byte*) screen2#1 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11)
|
||||
(bool~) test::$0 ← *((const byte*) ref + (byte) test::i#11) == (byte) test::a#11
|
||||
if((bool~) test::$0) goto test::@1
|
||||
to:test::@3
|
||||
to:test::@2
|
||||
test::@1: scope:[test] from test
|
||||
(byte) test::i#12 ← phi( test/(byte) test::i#11 )
|
||||
*((const byte*) cols + (byte) test::i#12) ← (const byte) GREEN
|
||||
to:test::@return
|
||||
test::@3: scope:[test] from test
|
||||
test::@2: scope:[test] from test
|
||||
(byte) test::i#13 ← phi( test/(byte) test::i#11 )
|
||||
*((const byte*) cols + (byte) test::i#13) ← (const byte) RED
|
||||
to:test::@return
|
||||
test::@return: scope:[test] from test::@1 test::@3
|
||||
test::@return: scope:[test] from test::@1 test::@2
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
(byte*) screen2#13 ← phi( @begin/(byte*) screen2#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(byte*~) $0
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (byte) 5
|
||||
@ -246,7 +239,7 @@ SYMBOL TABLE SSA
|
||||
(void()) test((byte) test::i , (byte) test::a)
|
||||
(bool~) test::$0
|
||||
(label) test::@1
|
||||
(label) test::@3
|
||||
(label) test::@2
|
||||
(label) test::@return
|
||||
(byte) test::a
|
||||
(byte) test::a#0
|
||||
@ -560,8 +553,8 @@ Successful SSA optimization Pass2ConstantSimplification
|
||||
Simplifying constant integer increment ++9
|
||||
Successful SSA optimization Pass2ConstantSimplification
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -581,10 +574,8 @@ Calls in [main] to test:6 test:8 test:10 test:12 test:14 test:16 test:18 test:20
|
||||
|
||||
Created 2 initial phi equivalence classes
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@11
|
||||
Renumbering block @2 to @1
|
||||
Renumbering block test::@3 to test::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -114,8 +114,8 @@ circle::@3: scope:[circle] from circle::@2
|
||||
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
|
||||
[57] (signed word) plot::y#8 ← phi( circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 )
|
||||
[57] (signed word) plot::x#8 ← phi( circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 )
|
||||
[57] (signed word) plot::y#8 ← phi( circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 )
|
||||
[57] (signed word) plot::x#8 ← phi( circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 )
|
||||
[58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return
|
||||
to:plot::@4
|
||||
plot::@4: scope:[plot] from plot
|
||||
|
@ -1,74 +1,48 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (signed word) circle::x
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) circle::@6
|
||||
Culled Empty Block (label) circle::@3
|
||||
Culled Empty Block (label) circle::@7
|
||||
Culled Empty Block (label) circle::@9
|
||||
Culled Empty Block (label) circle::@10
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) plot::@2
|
||||
Culled Empty Block (label) plot::@3
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) fill::@4
|
||||
Culled Empty Block (label) fill::@3
|
||||
Culled Empty Block (label) fill::@5
|
||||
Culled Empty Block (label) fill::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@8
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @8
|
||||
main: scope:[main] from @1
|
||||
(byte*) fill::start#0 ← (const nomodify byte*) BITMAP
|
||||
(signed word) fill::size#0 ← (number) $28*(number) $19*(number) 8
|
||||
(byte) fill::val#0 ← (number) 0
|
||||
call fill
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main
|
||||
(byte*) fill::start#1 ← (const nomodify byte*) SCREEN
|
||||
(signed word) fill::size#1 ← (number) $28*(number) $19
|
||||
(byte) fill::val#1 ← (number) $16
|
||||
call fill
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
*((const nomodify byte*) BORDERCOL) ← (const nomodify byte) BLUE
|
||||
*((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
*((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400
|
||||
(signed word) main::i#0 ← (signed word) 1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@10 main::@11
|
||||
(signed word) main::i#2 ← phi( main::@10/(signed word) main::i#0 main::@11/(signed word) main::i#1 )
|
||||
main::@1: scope:[main] from main::@5 main::@6
|
||||
(signed word) main::i#2 ← phi( main::@5/(signed word) main::i#0 main::@6/(signed word) main::i#1 )
|
||||
(bool~) main::$2 ← (signed word) main::i#2 < (number) $b4
|
||||
if((bool~) main::$2) goto main::@2
|
||||
to:main::@7
|
||||
to:main::@3
|
||||
main::@2: scope:[main] from main::@1
|
||||
(signed word) main::i#3 ← phi( main::@1/(signed word) main::i#2 )
|
||||
(signed word) circle::xc#0 ← (number) $a0
|
||||
(signed word) circle::yc#0 ← (number) $64
|
||||
(signed word) circle::r#0 ← (signed word) main::i#3
|
||||
call circle
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@2
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@2
|
||||
(signed word) main::i#4 ← phi( main::@2/(signed word) main::i#3 )
|
||||
(signed word) main::i#1 ← (signed word) main::i#4 + (number) 5
|
||||
to:main::@1
|
||||
main::@7: scope:[main] from main::@1 main::@7
|
||||
if(true) goto main::@7
|
||||
main::@3: scope:[main] from main::@1 main::@3
|
||||
if(true) goto main::@3
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@7
|
||||
main::@return: scope:[main] from main::@3
|
||||
return
|
||||
to:@return
|
||||
|
||||
@ -83,12 +57,12 @@ circle: scope:[circle] from main::@2
|
||||
(signed word) circle::p#0 ← (number~) circle::$1
|
||||
(signed word) circle::x1#0 ← (signed word) 0
|
||||
to:circle::@1
|
||||
circle::@1: scope:[circle] from circle circle::@18
|
||||
(signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@18/(signed word) circle::yc#14 )
|
||||
(signed word) circle::xc#12 ← phi( circle/(signed word) circle::xc#13 circle::@18/(signed word) circle::xc#14 )
|
||||
(signed word) circle::p#6 ← phi( circle/(signed word) circle::p#0 circle::@18/(signed word) circle::p#7 )
|
||||
(signed word) circle::y#2 ← phi( circle/(signed word) circle::y#0 circle::@18/(signed word) circle::y#12 )
|
||||
(signed word) circle::x1#2 ← phi( circle/(signed word) circle::x1#0 circle::@18/(signed word) circle::x1#1 )
|
||||
circle::@1: scope:[circle] from circle circle::@13
|
||||
(signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@13/(signed word) circle::yc#14 )
|
||||
(signed word) circle::xc#12 ← phi( circle/(signed word) circle::xc#13 circle::@13/(signed word) circle::xc#14 )
|
||||
(signed word) circle::p#6 ← phi( circle/(signed word) circle::p#0 circle::@13/(signed word) circle::p#7 )
|
||||
(signed word) circle::y#2 ← phi( circle/(signed word) circle::y#0 circle::@13/(signed word) circle::y#12 )
|
||||
(signed word) circle::x1#2 ← phi( circle/(signed word) circle::x1#0 circle::@13/(signed word) circle::x1#1 )
|
||||
(bool~) circle::$2 ← (signed word) circle::x1#2 <= (signed word) circle::y#2
|
||||
if((bool~) circle::$2) goto circle::@2
|
||||
to:circle::@return
|
||||
@ -99,9 +73,9 @@ circle::@2: scope:[circle] from circle::@1
|
||||
(signed word) circle::x1#14 ← phi( circle::@1/(signed word) circle::x1#2 )
|
||||
(signed word) circle::p#3 ← phi( circle::@1/(signed word) circle::p#6 )
|
||||
(bool~) circle::$3 ← (signed word) circle::p#3 < (number) 0
|
||||
if((bool~) circle::$3) goto circle::@4
|
||||
to:circle::@8
|
||||
circle::@4: scope:[circle] from circle::@2
|
||||
if((bool~) circle::$3) goto circle::@3
|
||||
to:circle::@5
|
||||
circle::@3: scope:[circle] from circle::@2
|
||||
(signed word) circle::y#14 ← phi( circle::@2/(signed word) circle::y#13 )
|
||||
(signed word) circle::yc#9 ← phi( circle::@2/(signed word) circle::yc#11 )
|
||||
(signed word) circle::xc#9 ← phi( circle::@2/(signed word) circle::xc#11 )
|
||||
@ -111,8 +85,8 @@ circle::@4: scope:[circle] from circle::@2
|
||||
(signed word~) circle::$10 ← (signed word) circle::p#4 + (signed word~) circle::$9
|
||||
(number~) circle::$11 ← (signed word~) circle::$10 + (number) 6
|
||||
(signed word) circle::p#1 ← (number~) circle::$11
|
||||
to:circle::@5
|
||||
circle::@8: scope:[circle] from circle::@2
|
||||
to:circle::@4
|
||||
circle::@5: scope:[circle] from circle::@2
|
||||
(signed word) circle::yc#10 ← phi( circle::@2/(signed word) circle::yc#11 )
|
||||
(signed word) circle::xc#10 ← phi( circle::@2/(signed word) circle::xc#11 )
|
||||
(signed word) circle::p#5 ← phi( circle::@2/(signed word) circle::p#3 )
|
||||
@ -125,109 +99,109 @@ circle::@8: scope:[circle] from circle::@2
|
||||
(signed word~) circle::$7 ← (signed word) circle::p#5 + (signed word~) circle::$6
|
||||
(number~) circle::$8 ← (signed word~) circle::$7 + (number) $a
|
||||
(signed word) circle::p#2 ← (number~) circle::$8
|
||||
to:circle::@5
|
||||
circle::@5: scope:[circle] from circle::@4 circle::@8
|
||||
(signed word) circle::p#15 ← phi( circle::@4/(signed word) circle::p#1 circle::@8/(signed word) circle::p#2 )
|
||||
(signed word) circle::y#4 ← phi( circle::@4/(signed word) circle::y#14 circle::@8/(signed word) circle::y#1 )
|
||||
(signed word) circle::yc#1 ← phi( circle::@4/(signed word) circle::yc#9 circle::@8/(signed word) circle::yc#10 )
|
||||
(signed word) circle::x1#5 ← phi( circle::@4/(signed word) circle::x1#3 circle::@8/(signed word) circle::x1#4 )
|
||||
(signed word) circle::xc#1 ← phi( circle::@4/(signed word) circle::xc#9 circle::@8/(signed word) circle::xc#10 )
|
||||
to:circle::@4
|
||||
circle::@4: scope:[circle] from circle::@3 circle::@5
|
||||
(signed word) circle::p#15 ← phi( circle::@3/(signed word) circle::p#1 circle::@5/(signed word) circle::p#2 )
|
||||
(signed word) circle::y#4 ← phi( circle::@3/(signed word) circle::y#14 circle::@5/(signed word) circle::y#1 )
|
||||
(signed word) circle::yc#1 ← phi( circle::@3/(signed word) circle::yc#9 circle::@5/(signed word) circle::yc#10 )
|
||||
(signed word) circle::x1#5 ← phi( circle::@3/(signed word) circle::x1#3 circle::@5/(signed word) circle::x1#4 )
|
||||
(signed word) circle::xc#1 ← phi( circle::@3/(signed word) circle::xc#9 circle::@5/(signed word) circle::xc#10 )
|
||||
(signed word~) circle::$12 ← (signed word) circle::xc#1 + (signed word) circle::x1#5
|
||||
(signed word~) circle::$13 ← (signed word) circle::yc#1 - (signed word) circle::y#4
|
||||
(signed word) plot::x#0 ← (signed word~) circle::$12
|
||||
(signed word) plot::y#0 ← (signed word~) circle::$13
|
||||
call plot
|
||||
to:circle::@11
|
||||
circle::@11: scope:[circle] from circle::@5
|
||||
(signed word) circle::p#14 ← phi( circle::@5/(signed word) circle::p#15 )
|
||||
(signed word) circle::y#5 ← phi( circle::@5/(signed word) circle::y#4 )
|
||||
(signed word) circle::yc#2 ← phi( circle::@5/(signed word) circle::yc#1 )
|
||||
(signed word) circle::x1#6 ← phi( circle::@5/(signed word) circle::x1#5 )
|
||||
(signed word) circle::xc#2 ← phi( circle::@5/(signed word) circle::xc#1 )
|
||||
to:circle::@6
|
||||
circle::@6: scope:[circle] from circle::@4
|
||||
(signed word) circle::p#14 ← phi( circle::@4/(signed word) circle::p#15 )
|
||||
(signed word) circle::y#5 ← phi( circle::@4/(signed word) circle::y#4 )
|
||||
(signed word) circle::yc#2 ← phi( circle::@4/(signed word) circle::yc#1 )
|
||||
(signed word) circle::x1#6 ← phi( circle::@4/(signed word) circle::x1#5 )
|
||||
(signed word) circle::xc#2 ← phi( circle::@4/(signed word) circle::xc#1 )
|
||||
(signed word~) circle::$15 ← (signed word) circle::xc#2 - (signed word) circle::x1#6
|
||||
(signed word~) circle::$16 ← (signed word) circle::yc#2 - (signed word) circle::y#5
|
||||
(signed word) plot::x#1 ← (signed word~) circle::$15
|
||||
(signed word) plot::y#1 ← (signed word~) circle::$16
|
||||
call plot
|
||||
to:circle::@12
|
||||
circle::@12: scope:[circle] from circle::@11
|
||||
(signed word) circle::p#13 ← phi( circle::@11/(signed word) circle::p#14 )
|
||||
(signed word) circle::y#6 ← phi( circle::@11/(signed word) circle::y#5 )
|
||||
(signed word) circle::yc#3 ← phi( circle::@11/(signed word) circle::yc#2 )
|
||||
(signed word) circle::x1#7 ← phi( circle::@11/(signed word) circle::x1#6 )
|
||||
(signed word) circle::xc#3 ← phi( circle::@11/(signed word) circle::xc#2 )
|
||||
to:circle::@7
|
||||
circle::@7: scope:[circle] from circle::@6
|
||||
(signed word) circle::p#13 ← phi( circle::@6/(signed word) circle::p#14 )
|
||||
(signed word) circle::y#6 ← phi( circle::@6/(signed word) circle::y#5 )
|
||||
(signed word) circle::yc#3 ← phi( circle::@6/(signed word) circle::yc#2 )
|
||||
(signed word) circle::x1#7 ← phi( circle::@6/(signed word) circle::x1#6 )
|
||||
(signed word) circle::xc#3 ← phi( circle::@6/(signed word) circle::xc#2 )
|
||||
(signed word~) circle::$18 ← (signed word) circle::xc#3 + (signed word) circle::x1#7
|
||||
(signed word~) circle::$19 ← (signed word) circle::yc#3 + (signed word) circle::y#6
|
||||
(signed word) plot::x#2 ← (signed word~) circle::$18
|
||||
(signed word) plot::y#2 ← (signed word~) circle::$19
|
||||
call plot
|
||||
to:circle::@13
|
||||
circle::@13: scope:[circle] from circle::@12
|
||||
(signed word) circle::p#12 ← phi( circle::@12/(signed word) circle::p#13 )
|
||||
(signed word) circle::y#7 ← phi( circle::@12/(signed word) circle::y#6 )
|
||||
(signed word) circle::yc#4 ← phi( circle::@12/(signed word) circle::yc#3 )
|
||||
(signed word) circle::x1#8 ← phi( circle::@12/(signed word) circle::x1#7 )
|
||||
(signed word) circle::xc#4 ← phi( circle::@12/(signed word) circle::xc#3 )
|
||||
to:circle::@8
|
||||
circle::@8: scope:[circle] from circle::@7
|
||||
(signed word) circle::p#12 ← phi( circle::@7/(signed word) circle::p#13 )
|
||||
(signed word) circle::y#7 ← phi( circle::@7/(signed word) circle::y#6 )
|
||||
(signed word) circle::yc#4 ← phi( circle::@7/(signed word) circle::yc#3 )
|
||||
(signed word) circle::x1#8 ← phi( circle::@7/(signed word) circle::x1#7 )
|
||||
(signed word) circle::xc#4 ← phi( circle::@7/(signed word) circle::xc#3 )
|
||||
(signed word~) circle::$21 ← (signed word) circle::xc#4 - (signed word) circle::x1#8
|
||||
(signed word~) circle::$22 ← (signed word) circle::yc#4 + (signed word) circle::y#7
|
||||
(signed word) plot::x#3 ← (signed word~) circle::$21
|
||||
(signed word) plot::y#3 ← (signed word~) circle::$22
|
||||
call plot
|
||||
to:circle::@14
|
||||
circle::@14: scope:[circle] from circle::@13
|
||||
(signed word) circle::p#11 ← phi( circle::@13/(signed word) circle::p#12 )
|
||||
(signed word) circle::x1#9 ← phi( circle::@13/(signed word) circle::x1#8 )
|
||||
(signed word) circle::yc#5 ← phi( circle::@13/(signed word) circle::yc#4 )
|
||||
(signed word) circle::y#8 ← phi( circle::@13/(signed word) circle::y#7 )
|
||||
(signed word) circle::xc#5 ← phi( circle::@13/(signed word) circle::xc#4 )
|
||||
to:circle::@9
|
||||
circle::@9: scope:[circle] from circle::@8
|
||||
(signed word) circle::p#11 ← phi( circle::@8/(signed word) circle::p#12 )
|
||||
(signed word) circle::x1#9 ← phi( circle::@8/(signed word) circle::x1#8 )
|
||||
(signed word) circle::yc#5 ← phi( circle::@8/(signed word) circle::yc#4 )
|
||||
(signed word) circle::y#8 ← phi( circle::@8/(signed word) circle::y#7 )
|
||||
(signed word) circle::xc#5 ← phi( circle::@8/(signed word) circle::xc#4 )
|
||||
(signed word~) circle::$24 ← (signed word) circle::xc#5 + (signed word) circle::y#8
|
||||
(signed word~) circle::$25 ← (signed word) circle::yc#5 - (signed word) circle::x1#9
|
||||
(signed word) plot::x#4 ← (signed word~) circle::$24
|
||||
(signed word) plot::y#4 ← (signed word~) circle::$25
|
||||
call plot
|
||||
to:circle::@15
|
||||
circle::@15: scope:[circle] from circle::@14
|
||||
(signed word) circle::p#10 ← phi( circle::@14/(signed word) circle::p#11 )
|
||||
(signed word) circle::x1#10 ← phi( circle::@14/(signed word) circle::x1#9 )
|
||||
(signed word) circle::yc#6 ← phi( circle::@14/(signed word) circle::yc#5 )
|
||||
(signed word) circle::y#9 ← phi( circle::@14/(signed word) circle::y#8 )
|
||||
(signed word) circle::xc#6 ← phi( circle::@14/(signed word) circle::xc#5 )
|
||||
to:circle::@10
|
||||
circle::@10: scope:[circle] from circle::@9
|
||||
(signed word) circle::p#10 ← phi( circle::@9/(signed word) circle::p#11 )
|
||||
(signed word) circle::x1#10 ← phi( circle::@9/(signed word) circle::x1#9 )
|
||||
(signed word) circle::yc#6 ← phi( circle::@9/(signed word) circle::yc#5 )
|
||||
(signed word) circle::y#9 ← phi( circle::@9/(signed word) circle::y#8 )
|
||||
(signed word) circle::xc#6 ← phi( circle::@9/(signed word) circle::xc#5 )
|
||||
(signed word~) circle::$27 ← (signed word) circle::xc#6 - (signed word) circle::y#9
|
||||
(signed word~) circle::$28 ← (signed word) circle::yc#6 - (signed word) circle::x1#10
|
||||
(signed word) plot::x#5 ← (signed word~) circle::$27
|
||||
(signed word) plot::y#5 ← (signed word~) circle::$28
|
||||
call plot
|
||||
to:circle::@16
|
||||
circle::@16: scope:[circle] from circle::@15
|
||||
(signed word) circle::p#9 ← phi( circle::@15/(signed word) circle::p#10 )
|
||||
(signed word) circle::x1#11 ← phi( circle::@15/(signed word) circle::x1#10 )
|
||||
(signed word) circle::yc#7 ← phi( circle::@15/(signed word) circle::yc#6 )
|
||||
(signed word) circle::y#10 ← phi( circle::@15/(signed word) circle::y#9 )
|
||||
(signed word) circle::xc#7 ← phi( circle::@15/(signed word) circle::xc#6 )
|
||||
to:circle::@11
|
||||
circle::@11: scope:[circle] from circle::@10
|
||||
(signed word) circle::p#9 ← phi( circle::@10/(signed word) circle::p#10 )
|
||||
(signed word) circle::x1#11 ← phi( circle::@10/(signed word) circle::x1#10 )
|
||||
(signed word) circle::yc#7 ← phi( circle::@10/(signed word) circle::yc#6 )
|
||||
(signed word) circle::y#10 ← phi( circle::@10/(signed word) circle::y#9 )
|
||||
(signed word) circle::xc#7 ← phi( circle::@10/(signed word) circle::xc#6 )
|
||||
(signed word~) circle::$30 ← (signed word) circle::xc#7 + (signed word) circle::y#10
|
||||
(signed word~) circle::$31 ← (signed word) circle::yc#7 + (signed word) circle::x1#11
|
||||
(signed word) plot::x#6 ← (signed word~) circle::$30
|
||||
(signed word) plot::y#6 ← (signed word~) circle::$31
|
||||
call plot
|
||||
to:circle::@17
|
||||
circle::@17: scope:[circle] from circle::@16
|
||||
(signed word) circle::p#8 ← phi( circle::@16/(signed word) circle::p#9 )
|
||||
(signed word) circle::x1#12 ← phi( circle::@16/(signed word) circle::x1#11 )
|
||||
(signed word) circle::yc#8 ← phi( circle::@16/(signed word) circle::yc#7 )
|
||||
(signed word) circle::y#11 ← phi( circle::@16/(signed word) circle::y#10 )
|
||||
(signed word) circle::xc#8 ← phi( circle::@16/(signed word) circle::xc#7 )
|
||||
to:circle::@12
|
||||
circle::@12: scope:[circle] from circle::@11
|
||||
(signed word) circle::p#8 ← phi( circle::@11/(signed word) circle::p#9 )
|
||||
(signed word) circle::x1#12 ← phi( circle::@11/(signed word) circle::x1#11 )
|
||||
(signed word) circle::yc#8 ← phi( circle::@11/(signed word) circle::yc#7 )
|
||||
(signed word) circle::y#11 ← phi( circle::@11/(signed word) circle::y#10 )
|
||||
(signed word) circle::xc#8 ← phi( circle::@11/(signed word) circle::xc#7 )
|
||||
(signed word~) circle::$33 ← (signed word) circle::xc#8 - (signed word) circle::y#11
|
||||
(signed word~) circle::$34 ← (signed word) circle::yc#8 + (signed word) circle::x1#12
|
||||
(signed word) plot::x#7 ← (signed word~) circle::$33
|
||||
(signed word) plot::y#7 ← (signed word~) circle::$34
|
||||
call plot
|
||||
to:circle::@18
|
||||
circle::@18: scope:[circle] from circle::@17
|
||||
(signed word) circle::yc#14 ← phi( circle::@17/(signed word) circle::yc#8 )
|
||||
(signed word) circle::xc#14 ← phi( circle::@17/(signed word) circle::xc#8 )
|
||||
(signed word) circle::p#7 ← phi( circle::@17/(signed word) circle::p#8 )
|
||||
(signed word) circle::y#12 ← phi( circle::@17/(signed word) circle::y#11 )
|
||||
(signed word) circle::x1#13 ← phi( circle::@17/(signed word) circle::x1#12 )
|
||||
to:circle::@13
|
||||
circle::@13: scope:[circle] from circle::@12
|
||||
(signed word) circle::yc#14 ← phi( circle::@12/(signed word) circle::yc#8 )
|
||||
(signed word) circle::xc#14 ← phi( circle::@12/(signed word) circle::xc#8 )
|
||||
(signed word) circle::p#7 ← phi( circle::@12/(signed word) circle::p#8 )
|
||||
(signed word) circle::y#12 ← phi( circle::@12/(signed word) circle::y#11 )
|
||||
(signed word) circle::x1#13 ← phi( circle::@12/(signed word) circle::x1#12 )
|
||||
(signed word) circle::x1#1 ← ++ (signed word) circle::x1#13
|
||||
to:circle::@1
|
||||
circle::@return: scope:[circle] from circle::@1
|
||||
@ -235,9 +209,9 @@ circle::@return: scope:[circle] from circle::@1
|
||||
to:@return
|
||||
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
plot: scope:[plot] from circle::@11 circle::@12 circle::@13 circle::@14 circle::@15 circle::@16 circle::@17 circle::@5
|
||||
(signed word) plot::y#8 ← phi( circle::@11/(signed word) plot::y#1 circle::@12/(signed word) plot::y#2 circle::@13/(signed word) plot::y#3 circle::@14/(signed word) plot::y#4 circle::@15/(signed word) plot::y#5 circle::@16/(signed word) plot::y#6 circle::@17/(signed word) plot::y#7 circle::@5/(signed word) plot::y#0 )
|
||||
(signed word) plot::x#8 ← phi( circle::@11/(signed word) plot::x#1 circle::@12/(signed word) plot::x#2 circle::@13/(signed word) plot::x#3 circle::@14/(signed word) plot::x#4 circle::@15/(signed word) plot::x#5 circle::@16/(signed word) plot::x#6 circle::@17/(signed word) plot::x#7 circle::@5/(signed word) plot::x#0 )
|
||||
plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
|
||||
(signed word) plot::y#8 ← phi( circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 )
|
||||
(signed word) plot::x#8 ← phi( circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 )
|
||||
(bool~) plot::$0 ← (signed word) plot::x#8 < (number) 0
|
||||
(bool~) plot::$1 ← (signed word) plot::x#8 > (number) $13f
|
||||
(bool~) plot::$2 ← (bool~) plot::$0 || (bool~) plot::$1
|
||||
@ -269,10 +243,10 @@ plot::@return: scope:[plot] from plot plot::@1
|
||||
to:@return
|
||||
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
fill: scope:[fill] from main main::@9
|
||||
(byte) fill::val#4 ← phi( main/(byte) fill::val#0 main::@9/(byte) fill::val#1 )
|
||||
(signed word) fill::size#2 ← phi( main/(signed word) fill::size#0 main::@9/(signed word) fill::size#1 )
|
||||
(byte*) fill::start#2 ← phi( main/(byte*) fill::start#0 main::@9/(byte*) fill::start#1 )
|
||||
fill: scope:[fill] from main main::@4
|
||||
(byte) fill::val#4 ← phi( main/(byte) fill::val#0 main::@4/(byte) fill::val#1 )
|
||||
(signed word) fill::size#2 ← phi( main/(signed word) fill::size#0 main::@4/(signed word) fill::size#1 )
|
||||
(byte*) fill::start#2 ← phi( main/(byte*) fill::start#0 main::@4/(byte*) fill::start#1 )
|
||||
(byte*~) fill::$0 ← (byte*) fill::start#2 + (signed word) fill::size#2
|
||||
(byte*) fill::end#0 ← (byte*~) fill::$0
|
||||
(byte*) fill::addr#0 ← (byte*) fill::start#2
|
||||
@ -294,16 +268,16 @@ fill::@2: scope:[fill] from fill::@1
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @9
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @8
|
||||
(label) @9
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BITMAP = (byte*)(number) $2000
|
||||
@ -346,18 +320,18 @@ SYMBOL TABLE SSA
|
||||
(number~) circle::$8
|
||||
(signed word~) circle::$9
|
||||
(label) circle::@1
|
||||
(label) circle::@10
|
||||
(label) circle::@11
|
||||
(label) circle::@12
|
||||
(label) circle::@13
|
||||
(label) circle::@14
|
||||
(label) circle::@15
|
||||
(label) circle::@16
|
||||
(label) circle::@17
|
||||
(label) circle::@18
|
||||
(label) circle::@2
|
||||
(label) circle::@3
|
||||
(label) circle::@4
|
||||
(label) circle::@5
|
||||
(label) circle::@6
|
||||
(label) circle::@7
|
||||
(label) circle::@8
|
||||
(label) circle::@9
|
||||
(label) circle::@return
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#0
|
||||
@ -475,11 +449,11 @@ SYMBOL TABLE SSA
|
||||
(void()) main()
|
||||
(bool~) main::$2
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@2
|
||||
(label) main::@7
|
||||
(label) main::@9
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@return
|
||||
(signed word) main::i
|
||||
(signed word) main::i#0
|
||||
@ -708,7 +682,7 @@ Identical Phi Values (byte) fill::val#2 (byte) fill::val#4
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) main::$2 [14] if((signed word) main::i#2<(signed word) $b4) goto main::@2
|
||||
Simple Condition (bool~) circle::$2 [28] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
|
||||
Simple Condition (bool~) circle::$3 [30] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4
|
||||
Simple Condition (bool~) circle::$3 [30] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3
|
||||
Simple Condition (bool~) fill::$1 [93] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Rewriting ! if()-condition to reversed if() [74] (bool~) plot::$7 ← ! (bool~) plot::$6
|
||||
@ -731,7 +705,7 @@ Constant (const signed word) circle::yc#0 = $64
|
||||
Constant (const signed word) circle::x1#0 = 0
|
||||
Constant (const byte*) plot::location#0 = BITMAP
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [20] if(true) goto main::@7
|
||||
if() condition always true - replacing block destination [20] if(true) goto main::@3
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
@ -770,12 +744,12 @@ Successful SSA optimization Pass2ConstantInlining
|
||||
Alias plot::$12 = plot::$17
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @8
|
||||
Adding NOP phi() at start of @9
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@9
|
||||
Adding NOP phi() at start of main::@7
|
||||
Adding NOP phi() at start of main::@4
|
||||
Adding NOP phi() at start of main::@3
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
Calls in [main] to fill:6 fill:8 circle:16
|
||||
@ -787,22 +761,22 @@ Coalesced [21] circle::y#15 ← circle::r#0
|
||||
Coalesced [22] circle::p#16 ← circle::p#0
|
||||
Coalesced [32] circle::y#18 ← circle::y#1
|
||||
Coalesced [33] circle::p#19 ← circle::p#2
|
||||
Coalesced [37] plot::x#17 ← plot::x#0
|
||||
Coalesced [38] plot::y#17 ← plot::y#0
|
||||
Coalesced [42] plot::x#10 ← plot::x#1
|
||||
Coalesced [43] plot::y#10 ← plot::y#1
|
||||
Coalesced [47] plot::x#11 ← plot::x#2
|
||||
Coalesced [48] plot::y#11 ← plot::y#2
|
||||
Coalesced [52] plot::x#12 ← plot::x#3
|
||||
Coalesced [53] plot::y#12 ← plot::y#3
|
||||
Coalesced [57] plot::x#13 ← plot::x#4
|
||||
Coalesced [58] plot::y#13 ← plot::y#4
|
||||
Coalesced [62] plot::x#14 ← plot::x#5
|
||||
Coalesced [63] plot::y#14 ← plot::y#5
|
||||
Coalesced [67] plot::x#15 ← plot::x#6
|
||||
Coalesced [68] plot::y#15 ← plot::y#6
|
||||
Coalesced [72] plot::x#16 ← plot::x#7
|
||||
Coalesced [73] plot::y#16 ← plot::y#7
|
||||
Coalesced [37] plot::x#13 ← plot::x#0
|
||||
Coalesced [38] plot::y#13 ← plot::y#0
|
||||
Coalesced [42] plot::x#14 ← plot::x#1
|
||||
Coalesced [43] plot::y#14 ← plot::y#1
|
||||
Coalesced [47] plot::x#15 ← plot::x#2
|
||||
Coalesced [48] plot::y#15 ← plot::y#2
|
||||
Coalesced [52] plot::x#16 ← plot::x#3
|
||||
Coalesced [53] plot::y#16 ← plot::y#3
|
||||
Coalesced [57] plot::x#17 ← plot::x#4
|
||||
Coalesced [58] plot::y#17 ← plot::y#4
|
||||
Coalesced [62] plot::x#10 ← plot::x#5
|
||||
Coalesced [63] plot::y#10 ← plot::y#5
|
||||
Coalesced [67] plot::x#11 ← plot::x#6
|
||||
Coalesced [68] plot::y#11 ← plot::y#6
|
||||
Coalesced [72] plot::x#12 ← plot::x#7
|
||||
Coalesced [73] plot::y#12 ← plot::y#7
|
||||
Coalesced [76] circle::x1#15 ← circle::x1#1
|
||||
Coalesced [77] circle::y#16 ← circle::y#10
|
||||
Coalesced [78] circle::p#17 ← circle::p#10
|
||||
@ -811,26 +785,7 @@ Coalesced [83] circle::p#18 ← circle::p#1
|
||||
Coalesced [105] fill::addr#4 ← fill::addr#0
|
||||
Coalesced [111] fill::addr#5 ← fill::addr#1
|
||||
Coalesced down to 9 phi equivalence classes
|
||||
Culled Empty Block (label) @9
|
||||
Renumbering block @8 to @1
|
||||
Renumbering block main::@7 to main::@3
|
||||
Renumbering block main::@9 to main::@4
|
||||
Renumbering block main::@10 to main::@5
|
||||
Renumbering block main::@11 to main::@6
|
||||
Renumbering block circle::@4 to circle::@3
|
||||
Renumbering block circle::@5 to circle::@4
|
||||
Renumbering block circle::@8 to circle::@5
|
||||
Renumbering block circle::@11 to circle::@6
|
||||
Renumbering block circle::@12 to circle::@7
|
||||
Renumbering block circle::@13 to circle::@8
|
||||
Renumbering block circle::@14 to circle::@9
|
||||
Renumbering block circle::@15 to circle::@10
|
||||
Renumbering block circle::@16 to circle::@11
|
||||
Renumbering block circle::@17 to circle::@12
|
||||
Renumbering block circle::@18 to circle::@13
|
||||
Renumbering block plot::@4 to plot::@2
|
||||
Renumbering block plot::@5 to plot::@3
|
||||
Renumbering block plot::@6 to plot::@4
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
@ -955,8 +910,8 @@ circle::@3: scope:[circle] from circle::@2
|
||||
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
|
||||
[57] (signed word) plot::y#8 ← phi( circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 )
|
||||
[57] (signed word) plot::x#8 ← phi( circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 )
|
||||
[57] (signed word) plot::y#8 ← phi( circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 )
|
||||
[57] (signed word) plot::x#8 ← phi( circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 )
|
||||
[58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return
|
||||
to:plot::@4
|
||||
plot::@4: scope:[plot] from plot
|
||||
@ -1088,8 +1043,8 @@ Initial phi equivalence classes
|
||||
[ circle::x1#10 circle::x1#1 ]
|
||||
[ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
[ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
[ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
[ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
|
||||
[ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
[ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
[ fill::size#2 ]
|
||||
[ fill::val#4 ]
|
||||
[ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -1117,8 +1072,8 @@ Complete equivalence classes
|
||||
[ circle::x1#10 circle::x1#1 ]
|
||||
[ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
[ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
[ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
[ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
|
||||
[ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
[ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
[ fill::size#2 ]
|
||||
[ fill::val#4 ]
|
||||
[ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -1145,8 +1100,8 @@ Allocated zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:4 [ circle::x1#10 circle::x1#1 ]
|
||||
Allocated zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
Allocated zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
Allocated zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
Allocated zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
|
||||
Allocated zp[2]:10 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated zp[2]:12 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
Allocated zp[2]:14 [ fill::size#2 ]
|
||||
Allocated zp[1]:16 [ fill::val#4 ]
|
||||
Allocated zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -1984,8 +1939,8 @@ Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ circle::x1#10 circle::x1#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:10 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:14 [ fill::size#2 ] : zp[2]:14 ,
|
||||
Potential registers zp[1]:16 [ fill::val#4 ] : zp[1]:16 , reg byte x ,
|
||||
Potential registers zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:17 ,
|
||||
@ -2010,13 +1965,13 @@ Potential registers zp[1]:50 [ plot::$14 ] : zp[1]:50 , reg byte a , reg byte x
|
||||
Potential registers zp[2]:51 [ fill::end#0 ] : zp[2]:51 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 2,080,017.2: zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 2,000,002: zp[2]:31 [ plot::$8 ] 2,000,002: zp[1]:35 [ plot::$9 ] 2,000,002: zp[1]:36 [ plot::$10 ] 2,000,002: zp[2]:41 [ plot::$15 ] 2,000,002: zp[2]:43 [ plot::$16 ] 2,000,002: zp[2]:45 [ plot::$12 ] 2,000,002: zp[1]:49 [ plot::$13 ] 2,000,002: zp[1]:50 [ plot::$14 ] 1,500,001.5: zp[2]:39 [ plot::$11 ] 1,120,008.8: zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 1,000,001: zp[2]:47 [ plot::location#3 ] 666,667.33: zp[2]:33 [ plot::location#1 ] 400,000.4: zp[2]:37 [ plot::location#2 ]
|
||||
Uplift Scope [plot] 2,080,017.2: zp[2]:12 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 2,000,002: zp[2]:31 [ plot::$8 ] 2,000,002: zp[1]:35 [ plot::$9 ] 2,000,002: zp[1]:36 [ plot::$10 ] 2,000,002: zp[2]:41 [ plot::$15 ] 2,000,002: zp[2]:43 [ plot::$16 ] 2,000,002: zp[2]:45 [ plot::$12 ] 2,000,002: zp[1]:49 [ plot::$13 ] 2,000,002: zp[1]:50 [ plot::$14 ] 1,500,001.5: zp[2]:39 [ plot::$11 ] 1,120,008.8: zp[2]:10 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 1,000,001: zp[2]:47 [ plot::location#3 ] 666,667.33: zp[2]:33 [ plot::location#1 ] 400,000.4: zp[2]:37 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 470,831.01: zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 236,113.47: zp[2]:4 [ circle::x1#10 circle::x1#1 ] 200,002: zp[2]:21 [ circle::$5 ] 200,002: zp[2]:23 [ circle::$6 ] 200,002: zp[2]:25 [ circle::$7 ] 200,002: zp[2]:27 [ circle::$9 ] 200,002: zp[2]:29 [ circle::$10 ] 169,843.88: zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 2,002: zp[2]:19 [ circle::$0 ]
|
||||
Uplift Scope [fill] 3,471.33: zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 220.4: zp[2]:51 [ fill::end#0 ] 166.83: zp[1]:16 [ fill::val#4 ] 101: zp[2]:14 [ fill::size#2 ]
|
||||
Uplift Scope [main] 303: zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ]
|
||||
Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:10 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 53688 combination zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:4 [ circle::x1#10 circle::x1#1 ] zp[2]:21 [ circle::$5 ] zp[2]:23 [ circle::$6 ] zp[2]:25 [ circle::$7 ] zp[2]:27 [ circle::$9 ] zp[2]:29 [ circle::$10 ] zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] zp[2]:19 [ circle::$0 ]
|
||||
Uplifting [fill] best 53672 combination zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:51 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:14 [ fill::size#2 ]
|
||||
@ -2025,7 +1980,7 @@ Uplifting [] best 53672 combination
|
||||
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:25 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:29 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ] ] with [ zp[2]:19 [ circle::$0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] ] with [ zp[2]:39 [ plot::$11 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:12 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:39 [ plot::$11 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:14 [ fill::size#2 ] ] with [ zp[2]:51 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ circle::$5 ] ] with [ zp[2]:23 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:31 [ plot::$8 ] ] with [ zp[2]:33 [ plot::location#1 ] ] - score: 1
|
||||
@ -2035,13 +1990,13 @@ Coalescing zero page register [ zp[2]:31 [ plot::$8 plot::location#1 ] ] with [
|
||||
Coalescing zero page register [ zp[2]:41 [ plot::$15 plot::$16 ] ] with [ zp[2]:45 [ plot::$12 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:14 [ fill::size#2 fill::end#0 ] ] with [ zp[2]:4 [ circle::x1#10 circle::x1#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:21 [ circle::$5 circle::$6 ] ] with [ zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:27 [ circle::$9 ] ] with [ zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ] ]
|
||||
Coalescing zero page register [ zp[2]:21 [ circle::$5 circle::$6 ] ] with [ zp[2]:10 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:27 [ circle::$9 ] ] with [ zp[2]:12 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ] ]
|
||||
Allocated (was zp[2]:8) zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
Allocated (was zp[2]:14) zp[2]:6 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
Allocated (was zp[2]:17) zp[2]:8 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
Allocated (was zp[2]:21) zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
Allocated (was zp[2]:27) zp[2]:12 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ]
|
||||
Allocated (was zp[2]:21) zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:27) zp[2]:12 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
Allocated (was zp[2]:31) zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
Allocated (was zp[2]:41) zp[2]:16 [ plot::$15 plot::$16 plot::$12 ]
|
||||
|
||||
@ -2935,8 +2890,8 @@ zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$
|
||||
zp[2]:6 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:8 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
zp[2]:12 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ]
|
||||
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:12 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$10 ]
|
||||
|
@ -121,8 +121,8 @@ zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$
|
||||
zp[2]:6 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:8 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
zp[2]:12 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ]
|
||||
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:12 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$10 ]
|
||||
|
@ -103,8 +103,8 @@ circle::@3: scope:[circle] from circle::@2
|
||||
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
|
||||
[52] (signed word) plot::y#8 ← phi( circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 )
|
||||
[52] (signed word) plot::x#8 ← phi( circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 )
|
||||
[52] (signed word) plot::y#8 ← phi( circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 )
|
||||
[52] (signed word) plot::x#8 ← phi( circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 )
|
||||
[53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8
|
||||
[54] (byte*) plot::location#1 ← (const nomodify byte*) BITMAP + (signed word~) plot::$0
|
||||
[55] (byte~) plot::$1 ← < (signed word) plot::y#8
|
||||
|
@ -1,43 +1,23 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (signed word) circle::x
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) circle::@6
|
||||
Culled Empty Block (label) circle::@3
|
||||
Culled Empty Block (label) circle::@7
|
||||
Culled Empty Block (label) circle::@9
|
||||
Culled Empty Block (label) circle::@10
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) fill::@4
|
||||
Culled Empty Block (label) fill::@3
|
||||
Culled Empty Block (label) fill::@5
|
||||
Culled Empty Block (label) fill::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@8
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @8
|
||||
main: scope:[main] from @1
|
||||
(byte*) fill::start#0 ← (const nomodify byte*) BITMAP
|
||||
(signed word) fill::size#0 ← (number) $28*(number) $19*(number) 8
|
||||
(byte) fill::val#0 ← (number) 0
|
||||
call fill
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main
|
||||
(byte*) fill::start#1 ← (const nomodify byte*) SCREEN
|
||||
(signed word) fill::size#1 ← (number) $28*(number) $19
|
||||
(byte) fill::val#1 ← (number) $16
|
||||
call fill
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
*((const nomodify byte*) BORDERCOL) ← (const nomodify byte) BLUE
|
||||
*((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
*((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400
|
||||
@ -45,10 +25,10 @@ main::@4: scope:[main] from main::@3
|
||||
(signed word) circle::yc#0 ← (number) $64
|
||||
(signed word) circle::r#0 ← (number) $32
|
||||
call circle
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@1 main::@5
|
||||
main::@1: scope:[main] from main::@1 main::@4
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
@ -56,22 +36,22 @@ main::@return: scope:[main] from main::@1
|
||||
to:@return
|
||||
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
circle: scope:[circle] from main::@4
|
||||
(signed word) circle::yc#13 ← phi( main::@4/(signed word) circle::yc#0 )
|
||||
(signed word) circle::xc#13 ← phi( main::@4/(signed word) circle::xc#0 )
|
||||
(signed word) circle::r#1 ← phi( main::@4/(signed word) circle::r#0 )
|
||||
circle: scope:[circle] from main::@3
|
||||
(signed word) circle::yc#13 ← phi( main::@3/(signed word) circle::yc#0 )
|
||||
(signed word) circle::xc#13 ← phi( main::@3/(signed word) circle::xc#0 )
|
||||
(signed word) circle::r#1 ← phi( main::@3/(signed word) circle::r#0 )
|
||||
(signed word) circle::y#0 ← (signed word) circle::r#1
|
||||
(signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
|
||||
(number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
|
||||
(signed word) circle::p#0 ← (number~) circle::$1
|
||||
(signed word) circle::x1#0 ← (signed word) 0
|
||||
to:circle::@1
|
||||
circle::@1: scope:[circle] from circle circle::@18
|
||||
(signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@18/(signed word) circle::yc#14 )
|
||||
(signed word) circle::xc#12 ← phi( circle/(signed word) circle::xc#13 circle::@18/(signed word) circle::xc#14 )
|
||||
(signed word) circle::p#6 ← phi( circle/(signed word) circle::p#0 circle::@18/(signed word) circle::p#7 )
|
||||
(signed word) circle::y#2 ← phi( circle/(signed word) circle::y#0 circle::@18/(signed word) circle::y#12 )
|
||||
(signed word) circle::x1#2 ← phi( circle/(signed word) circle::x1#0 circle::@18/(signed word) circle::x1#1 )
|
||||
circle::@1: scope:[circle] from circle circle::@13
|
||||
(signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@13/(signed word) circle::yc#14 )
|
||||
(signed word) circle::xc#12 ← phi( circle/(signed word) circle::xc#13 circle::@13/(signed word) circle::xc#14 )
|
||||
(signed word) circle::p#6 ← phi( circle/(signed word) circle::p#0 circle::@13/(signed word) circle::p#7 )
|
||||
(signed word) circle::y#2 ← phi( circle/(signed word) circle::y#0 circle::@13/(signed word) circle::y#12 )
|
||||
(signed word) circle::x1#2 ← phi( circle/(signed word) circle::x1#0 circle::@13/(signed word) circle::x1#1 )
|
||||
(bool~) circle::$2 ← (signed word) circle::x1#2 <= (signed word) circle::y#2
|
||||
if((bool~) circle::$2) goto circle::@2
|
||||
to:circle::@return
|
||||
@ -82,9 +62,9 @@ circle::@2: scope:[circle] from circle::@1
|
||||
(signed word) circle::x1#14 ← phi( circle::@1/(signed word) circle::x1#2 )
|
||||
(signed word) circle::p#3 ← phi( circle::@1/(signed word) circle::p#6 )
|
||||
(bool~) circle::$3 ← (signed word) circle::p#3 < (number) 0
|
||||
if((bool~) circle::$3) goto circle::@4
|
||||
to:circle::@8
|
||||
circle::@4: scope:[circle] from circle::@2
|
||||
if((bool~) circle::$3) goto circle::@3
|
||||
to:circle::@5
|
||||
circle::@3: scope:[circle] from circle::@2
|
||||
(signed word) circle::y#14 ← phi( circle::@2/(signed word) circle::y#13 )
|
||||
(signed word) circle::yc#9 ← phi( circle::@2/(signed word) circle::yc#11 )
|
||||
(signed word) circle::xc#9 ← phi( circle::@2/(signed word) circle::xc#11 )
|
||||
@ -94,8 +74,8 @@ circle::@4: scope:[circle] from circle::@2
|
||||
(signed word~) circle::$10 ← (signed word) circle::p#4 + (signed word~) circle::$9
|
||||
(number~) circle::$11 ← (signed word~) circle::$10 + (number) 6
|
||||
(signed word) circle::p#1 ← (number~) circle::$11
|
||||
to:circle::@5
|
||||
circle::@8: scope:[circle] from circle::@2
|
||||
to:circle::@4
|
||||
circle::@5: scope:[circle] from circle::@2
|
||||
(signed word) circle::yc#10 ← phi( circle::@2/(signed word) circle::yc#11 )
|
||||
(signed word) circle::xc#10 ← phi( circle::@2/(signed word) circle::xc#11 )
|
||||
(signed word) circle::p#5 ← phi( circle::@2/(signed word) circle::p#3 )
|
||||
@ -108,109 +88,109 @@ circle::@8: scope:[circle] from circle::@2
|
||||
(signed word~) circle::$7 ← (signed word) circle::p#5 + (signed word~) circle::$6
|
||||
(number~) circle::$8 ← (signed word~) circle::$7 + (number) $a
|
||||
(signed word) circle::p#2 ← (number~) circle::$8
|
||||
to:circle::@5
|
||||
circle::@5: scope:[circle] from circle::@4 circle::@8
|
||||
(signed word) circle::p#15 ← phi( circle::@4/(signed word) circle::p#1 circle::@8/(signed word) circle::p#2 )
|
||||
(signed word) circle::y#4 ← phi( circle::@4/(signed word) circle::y#14 circle::@8/(signed word) circle::y#1 )
|
||||
(signed word) circle::yc#1 ← phi( circle::@4/(signed word) circle::yc#9 circle::@8/(signed word) circle::yc#10 )
|
||||
(signed word) circle::x1#5 ← phi( circle::@4/(signed word) circle::x1#3 circle::@8/(signed word) circle::x1#4 )
|
||||
(signed word) circle::xc#1 ← phi( circle::@4/(signed word) circle::xc#9 circle::@8/(signed word) circle::xc#10 )
|
||||
to:circle::@4
|
||||
circle::@4: scope:[circle] from circle::@3 circle::@5
|
||||
(signed word) circle::p#15 ← phi( circle::@3/(signed word) circle::p#1 circle::@5/(signed word) circle::p#2 )
|
||||
(signed word) circle::y#4 ← phi( circle::@3/(signed word) circle::y#14 circle::@5/(signed word) circle::y#1 )
|
||||
(signed word) circle::yc#1 ← phi( circle::@3/(signed word) circle::yc#9 circle::@5/(signed word) circle::yc#10 )
|
||||
(signed word) circle::x1#5 ← phi( circle::@3/(signed word) circle::x1#3 circle::@5/(signed word) circle::x1#4 )
|
||||
(signed word) circle::xc#1 ← phi( circle::@3/(signed word) circle::xc#9 circle::@5/(signed word) circle::xc#10 )
|
||||
(signed word~) circle::$12 ← (signed word) circle::xc#1 + (signed word) circle::x1#5
|
||||
(signed word~) circle::$13 ← (signed word) circle::yc#1 - (signed word) circle::y#4
|
||||
(signed word) plot::x#0 ← (signed word~) circle::$12
|
||||
(signed word) plot::y#0 ← (signed word~) circle::$13
|
||||
call plot
|
||||
to:circle::@11
|
||||
circle::@11: scope:[circle] from circle::@5
|
||||
(signed word) circle::p#14 ← phi( circle::@5/(signed word) circle::p#15 )
|
||||
(signed word) circle::y#5 ← phi( circle::@5/(signed word) circle::y#4 )
|
||||
(signed word) circle::yc#2 ← phi( circle::@5/(signed word) circle::yc#1 )
|
||||
(signed word) circle::x1#6 ← phi( circle::@5/(signed word) circle::x1#5 )
|
||||
(signed word) circle::xc#2 ← phi( circle::@5/(signed word) circle::xc#1 )
|
||||
to:circle::@6
|
||||
circle::@6: scope:[circle] from circle::@4
|
||||
(signed word) circle::p#14 ← phi( circle::@4/(signed word) circle::p#15 )
|
||||
(signed word) circle::y#5 ← phi( circle::@4/(signed word) circle::y#4 )
|
||||
(signed word) circle::yc#2 ← phi( circle::@4/(signed word) circle::yc#1 )
|
||||
(signed word) circle::x1#6 ← phi( circle::@4/(signed word) circle::x1#5 )
|
||||
(signed word) circle::xc#2 ← phi( circle::@4/(signed word) circle::xc#1 )
|
||||
(signed word~) circle::$15 ← (signed word) circle::xc#2 - (signed word) circle::x1#6
|
||||
(signed word~) circle::$16 ← (signed word) circle::yc#2 - (signed word) circle::y#5
|
||||
(signed word) plot::x#1 ← (signed word~) circle::$15
|
||||
(signed word) plot::y#1 ← (signed word~) circle::$16
|
||||
call plot
|
||||
to:circle::@12
|
||||
circle::@12: scope:[circle] from circle::@11
|
||||
(signed word) circle::p#13 ← phi( circle::@11/(signed word) circle::p#14 )
|
||||
(signed word) circle::y#6 ← phi( circle::@11/(signed word) circle::y#5 )
|
||||
(signed word) circle::yc#3 ← phi( circle::@11/(signed word) circle::yc#2 )
|
||||
(signed word) circle::x1#7 ← phi( circle::@11/(signed word) circle::x1#6 )
|
||||
(signed word) circle::xc#3 ← phi( circle::@11/(signed word) circle::xc#2 )
|
||||
to:circle::@7
|
||||
circle::@7: scope:[circle] from circle::@6
|
||||
(signed word) circle::p#13 ← phi( circle::@6/(signed word) circle::p#14 )
|
||||
(signed word) circle::y#6 ← phi( circle::@6/(signed word) circle::y#5 )
|
||||
(signed word) circle::yc#3 ← phi( circle::@6/(signed word) circle::yc#2 )
|
||||
(signed word) circle::x1#7 ← phi( circle::@6/(signed word) circle::x1#6 )
|
||||
(signed word) circle::xc#3 ← phi( circle::@6/(signed word) circle::xc#2 )
|
||||
(signed word~) circle::$18 ← (signed word) circle::xc#3 + (signed word) circle::x1#7
|
||||
(signed word~) circle::$19 ← (signed word) circle::yc#3 + (signed word) circle::y#6
|
||||
(signed word) plot::x#2 ← (signed word~) circle::$18
|
||||
(signed word) plot::y#2 ← (signed word~) circle::$19
|
||||
call plot
|
||||
to:circle::@13
|
||||
circle::@13: scope:[circle] from circle::@12
|
||||
(signed word) circle::p#12 ← phi( circle::@12/(signed word) circle::p#13 )
|
||||
(signed word) circle::y#7 ← phi( circle::@12/(signed word) circle::y#6 )
|
||||
(signed word) circle::yc#4 ← phi( circle::@12/(signed word) circle::yc#3 )
|
||||
(signed word) circle::x1#8 ← phi( circle::@12/(signed word) circle::x1#7 )
|
||||
(signed word) circle::xc#4 ← phi( circle::@12/(signed word) circle::xc#3 )
|
||||
to:circle::@8
|
||||
circle::@8: scope:[circle] from circle::@7
|
||||
(signed word) circle::p#12 ← phi( circle::@7/(signed word) circle::p#13 )
|
||||
(signed word) circle::y#7 ← phi( circle::@7/(signed word) circle::y#6 )
|
||||
(signed word) circle::yc#4 ← phi( circle::@7/(signed word) circle::yc#3 )
|
||||
(signed word) circle::x1#8 ← phi( circle::@7/(signed word) circle::x1#7 )
|
||||
(signed word) circle::xc#4 ← phi( circle::@7/(signed word) circle::xc#3 )
|
||||
(signed word~) circle::$21 ← (signed word) circle::xc#4 - (signed word) circle::x1#8
|
||||
(signed word~) circle::$22 ← (signed word) circle::yc#4 + (signed word) circle::y#7
|
||||
(signed word) plot::x#3 ← (signed word~) circle::$21
|
||||
(signed word) plot::y#3 ← (signed word~) circle::$22
|
||||
call plot
|
||||
to:circle::@14
|
||||
circle::@14: scope:[circle] from circle::@13
|
||||
(signed word) circle::p#11 ← phi( circle::@13/(signed word) circle::p#12 )
|
||||
(signed word) circle::x1#9 ← phi( circle::@13/(signed word) circle::x1#8 )
|
||||
(signed word) circle::yc#5 ← phi( circle::@13/(signed word) circle::yc#4 )
|
||||
(signed word) circle::y#8 ← phi( circle::@13/(signed word) circle::y#7 )
|
||||
(signed word) circle::xc#5 ← phi( circle::@13/(signed word) circle::xc#4 )
|
||||
to:circle::@9
|
||||
circle::@9: scope:[circle] from circle::@8
|
||||
(signed word) circle::p#11 ← phi( circle::@8/(signed word) circle::p#12 )
|
||||
(signed word) circle::x1#9 ← phi( circle::@8/(signed word) circle::x1#8 )
|
||||
(signed word) circle::yc#5 ← phi( circle::@8/(signed word) circle::yc#4 )
|
||||
(signed word) circle::y#8 ← phi( circle::@8/(signed word) circle::y#7 )
|
||||
(signed word) circle::xc#5 ← phi( circle::@8/(signed word) circle::xc#4 )
|
||||
(signed word~) circle::$24 ← (signed word) circle::xc#5 + (signed word) circle::y#8
|
||||
(signed word~) circle::$25 ← (signed word) circle::yc#5 - (signed word) circle::x1#9
|
||||
(signed word) plot::x#4 ← (signed word~) circle::$24
|
||||
(signed word) plot::y#4 ← (signed word~) circle::$25
|
||||
call plot
|
||||
to:circle::@15
|
||||
circle::@15: scope:[circle] from circle::@14
|
||||
(signed word) circle::p#10 ← phi( circle::@14/(signed word) circle::p#11 )
|
||||
(signed word) circle::x1#10 ← phi( circle::@14/(signed word) circle::x1#9 )
|
||||
(signed word) circle::yc#6 ← phi( circle::@14/(signed word) circle::yc#5 )
|
||||
(signed word) circle::y#9 ← phi( circle::@14/(signed word) circle::y#8 )
|
||||
(signed word) circle::xc#6 ← phi( circle::@14/(signed word) circle::xc#5 )
|
||||
to:circle::@10
|
||||
circle::@10: scope:[circle] from circle::@9
|
||||
(signed word) circle::p#10 ← phi( circle::@9/(signed word) circle::p#11 )
|
||||
(signed word) circle::x1#10 ← phi( circle::@9/(signed word) circle::x1#9 )
|
||||
(signed word) circle::yc#6 ← phi( circle::@9/(signed word) circle::yc#5 )
|
||||
(signed word) circle::y#9 ← phi( circle::@9/(signed word) circle::y#8 )
|
||||
(signed word) circle::xc#6 ← phi( circle::@9/(signed word) circle::xc#5 )
|
||||
(signed word~) circle::$27 ← (signed word) circle::xc#6 - (signed word) circle::y#9
|
||||
(signed word~) circle::$28 ← (signed word) circle::yc#6 - (signed word) circle::x1#10
|
||||
(signed word) plot::x#5 ← (signed word~) circle::$27
|
||||
(signed word) plot::y#5 ← (signed word~) circle::$28
|
||||
call plot
|
||||
to:circle::@16
|
||||
circle::@16: scope:[circle] from circle::@15
|
||||
(signed word) circle::p#9 ← phi( circle::@15/(signed word) circle::p#10 )
|
||||
(signed word) circle::x1#11 ← phi( circle::@15/(signed word) circle::x1#10 )
|
||||
(signed word) circle::yc#7 ← phi( circle::@15/(signed word) circle::yc#6 )
|
||||
(signed word) circle::y#10 ← phi( circle::@15/(signed word) circle::y#9 )
|
||||
(signed word) circle::xc#7 ← phi( circle::@15/(signed word) circle::xc#6 )
|
||||
to:circle::@11
|
||||
circle::@11: scope:[circle] from circle::@10
|
||||
(signed word) circle::p#9 ← phi( circle::@10/(signed word) circle::p#10 )
|
||||
(signed word) circle::x1#11 ← phi( circle::@10/(signed word) circle::x1#10 )
|
||||
(signed word) circle::yc#7 ← phi( circle::@10/(signed word) circle::yc#6 )
|
||||
(signed word) circle::y#10 ← phi( circle::@10/(signed word) circle::y#9 )
|
||||
(signed word) circle::xc#7 ← phi( circle::@10/(signed word) circle::xc#6 )
|
||||
(signed word~) circle::$30 ← (signed word) circle::xc#7 + (signed word) circle::y#10
|
||||
(signed word~) circle::$31 ← (signed word) circle::yc#7 + (signed word) circle::x1#11
|
||||
(signed word) plot::x#6 ← (signed word~) circle::$30
|
||||
(signed word) plot::y#6 ← (signed word~) circle::$31
|
||||
call plot
|
||||
to:circle::@17
|
||||
circle::@17: scope:[circle] from circle::@16
|
||||
(signed word) circle::p#8 ← phi( circle::@16/(signed word) circle::p#9 )
|
||||
(signed word) circle::x1#12 ← phi( circle::@16/(signed word) circle::x1#11 )
|
||||
(signed word) circle::yc#8 ← phi( circle::@16/(signed word) circle::yc#7 )
|
||||
(signed word) circle::y#11 ← phi( circle::@16/(signed word) circle::y#10 )
|
||||
(signed word) circle::xc#8 ← phi( circle::@16/(signed word) circle::xc#7 )
|
||||
to:circle::@12
|
||||
circle::@12: scope:[circle] from circle::@11
|
||||
(signed word) circle::p#8 ← phi( circle::@11/(signed word) circle::p#9 )
|
||||
(signed word) circle::x1#12 ← phi( circle::@11/(signed word) circle::x1#11 )
|
||||
(signed word) circle::yc#8 ← phi( circle::@11/(signed word) circle::yc#7 )
|
||||
(signed word) circle::y#11 ← phi( circle::@11/(signed word) circle::y#10 )
|
||||
(signed word) circle::xc#8 ← phi( circle::@11/(signed word) circle::xc#7 )
|
||||
(signed word~) circle::$33 ← (signed word) circle::xc#8 - (signed word) circle::y#11
|
||||
(signed word~) circle::$34 ← (signed word) circle::yc#8 + (signed word) circle::x1#12
|
||||
(signed word) plot::x#7 ← (signed word~) circle::$33
|
||||
(signed word) plot::y#7 ← (signed word~) circle::$34
|
||||
call plot
|
||||
to:circle::@18
|
||||
circle::@18: scope:[circle] from circle::@17
|
||||
(signed word) circle::yc#14 ← phi( circle::@17/(signed word) circle::yc#8 )
|
||||
(signed word) circle::xc#14 ← phi( circle::@17/(signed word) circle::xc#8 )
|
||||
(signed word) circle::p#7 ← phi( circle::@17/(signed word) circle::p#8 )
|
||||
(signed word) circle::y#12 ← phi( circle::@17/(signed word) circle::y#11 )
|
||||
(signed word) circle::x1#13 ← phi( circle::@17/(signed word) circle::x1#12 )
|
||||
to:circle::@13
|
||||
circle::@13: scope:[circle] from circle::@12
|
||||
(signed word) circle::yc#14 ← phi( circle::@12/(signed word) circle::yc#8 )
|
||||
(signed word) circle::xc#14 ← phi( circle::@12/(signed word) circle::xc#8 )
|
||||
(signed word) circle::p#7 ← phi( circle::@12/(signed word) circle::p#8 )
|
||||
(signed word) circle::y#12 ← phi( circle::@12/(signed word) circle::y#11 )
|
||||
(signed word) circle::x1#13 ← phi( circle::@12/(signed word) circle::x1#12 )
|
||||
(signed word) circle::x1#1 ← ++ (signed word) circle::x1#13
|
||||
to:circle::@1
|
||||
circle::@return: scope:[circle] from circle::@1
|
||||
@ -218,9 +198,9 @@ circle::@return: scope:[circle] from circle::@1
|
||||
to:@return
|
||||
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
plot: scope:[plot] from circle::@11 circle::@12 circle::@13 circle::@14 circle::@15 circle::@16 circle::@17 circle::@5
|
||||
(signed word) plot::y#8 ← phi( circle::@11/(signed word) plot::y#1 circle::@12/(signed word) plot::y#2 circle::@13/(signed word) plot::y#3 circle::@14/(signed word) plot::y#4 circle::@15/(signed word) plot::y#5 circle::@16/(signed word) plot::y#6 circle::@17/(signed word) plot::y#7 circle::@5/(signed word) plot::y#0 )
|
||||
(signed word) plot::x#8 ← phi( circle::@11/(signed word) plot::x#1 circle::@12/(signed word) plot::x#2 circle::@13/(signed word) plot::x#3 circle::@14/(signed word) plot::x#4 circle::@15/(signed word) plot::x#5 circle::@16/(signed word) plot::x#6 circle::@17/(signed word) plot::x#7 circle::@5/(signed word) plot::x#0 )
|
||||
plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
|
||||
(signed word) plot::y#8 ← phi( circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 )
|
||||
(signed word) plot::x#8 ← phi( circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 )
|
||||
(byte*) plot::location#0 ← (const nomodify byte*) BITMAP
|
||||
(number~) plot::$0 ← (signed word) plot::x#8 & (number) $fff8
|
||||
(byte*) plot::location#1 ← (byte*) plot::location#0 + (number~) plot::$0
|
||||
@ -239,10 +219,10 @@ plot::@return: scope:[plot] from plot
|
||||
to:@return
|
||||
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
fill: scope:[fill] from main main::@3
|
||||
(byte) fill::val#4 ← phi( main/(byte) fill::val#0 main::@3/(byte) fill::val#1 )
|
||||
(signed word) fill::size#2 ← phi( main/(signed word) fill::size#0 main::@3/(signed word) fill::size#1 )
|
||||
(byte*) fill::start#2 ← phi( main/(byte*) fill::start#0 main::@3/(byte*) fill::start#1 )
|
||||
fill: scope:[fill] from main main::@2
|
||||
(byte) fill::val#4 ← phi( main/(byte) fill::val#0 main::@2/(byte) fill::val#1 )
|
||||
(signed word) fill::size#2 ← phi( main/(signed word) fill::size#0 main::@2/(signed word) fill::size#1 )
|
||||
(byte*) fill::start#2 ← phi( main/(byte*) fill::start#0 main::@2/(byte*) fill::start#1 )
|
||||
(byte*~) fill::$0 ← (byte*) fill::start#2 + (signed word) fill::size#2
|
||||
(byte*) fill::end#0 ← (byte*~) fill::$0
|
||||
(byte*) fill::addr#0 ← (byte*) fill::start#2
|
||||
@ -264,16 +244,16 @@ fill::@2: scope:[fill] from fill::@1
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @9
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @8
|
||||
(label) @9
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BITMAP = (byte*)(number) $2000
|
||||
@ -316,18 +296,18 @@ SYMBOL TABLE SSA
|
||||
(number~) circle::$8
|
||||
(signed word~) circle::$9
|
||||
(label) circle::@1
|
||||
(label) circle::@10
|
||||
(label) circle::@11
|
||||
(label) circle::@12
|
||||
(label) circle::@13
|
||||
(label) circle::@14
|
||||
(label) circle::@15
|
||||
(label) circle::@16
|
||||
(label) circle::@17
|
||||
(label) circle::@18
|
||||
(label) circle::@2
|
||||
(label) circle::@3
|
||||
(label) circle::@4
|
||||
(label) circle::@5
|
||||
(label) circle::@6
|
||||
(label) circle::@7
|
||||
(label) circle::@8
|
||||
(label) circle::@9
|
||||
(label) circle::@return
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#0
|
||||
@ -444,9 +424,9 @@ SYMBOL TABLE SSA
|
||||
(byte) fill::val#4
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(number~) plot::$0
|
||||
@ -640,7 +620,7 @@ Identical Phi Values (byte*) fill::end#1 (byte*) fill::end#0
|
||||
Identical Phi Values (byte) fill::val#2 (byte) fill::val#4
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) circle::$2 [23] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
|
||||
Simple Condition (bool~) circle::$3 [25] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4
|
||||
Simple Condition (bool~) circle::$3 [25] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3
|
||||
Simple Condition (bool~) fill::$1 [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant right-side identified [1] (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8
|
||||
@ -692,12 +672,12 @@ Successful SSA optimization Pass2ConstantInlining
|
||||
Alias plot::$4 = plot::$9
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @8
|
||||
Adding NOP phi() at start of @9
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@5
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of main::@4
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of circle
|
||||
CALL GRAPH
|
||||
@ -708,22 +688,22 @@ Calls in [circle] to plot:32 plot:37 plot:42 plot:47 plot:52 plot:57 plot:62 plo
|
||||
Created 11 initial phi equivalence classes
|
||||
Coalesced [25] circle::y#17 ← circle::y#1
|
||||
Coalesced [26] circle::p#18 ← circle::p#2
|
||||
Coalesced [30] plot::x#16 ← plot::x#0
|
||||
Coalesced [31] plot::y#16 ← plot::y#0
|
||||
Coalesced [35] plot::x#9 ← plot::x#1
|
||||
Coalesced [36] plot::y#9 ← plot::y#1
|
||||
Coalesced [40] plot::x#10 ← plot::x#2
|
||||
Coalesced [41] plot::y#10 ← plot::y#2
|
||||
Coalesced [45] plot::x#11 ← plot::x#3
|
||||
Coalesced [46] plot::y#11 ← plot::y#3
|
||||
Coalesced [50] plot::x#12 ← plot::x#4
|
||||
Coalesced [51] plot::y#12 ← plot::y#4
|
||||
Coalesced [55] plot::x#13 ← plot::x#5
|
||||
Coalesced [56] plot::y#13 ← plot::y#5
|
||||
Coalesced [60] plot::x#14 ← plot::x#6
|
||||
Coalesced [61] plot::y#14 ← plot::y#6
|
||||
Coalesced [65] plot::x#15 ← plot::x#7
|
||||
Coalesced [66] plot::y#15 ← plot::y#7
|
||||
Coalesced [30] plot::x#12 ← plot::x#0
|
||||
Coalesced [31] plot::y#12 ← plot::y#0
|
||||
Coalesced [35] plot::x#13 ← plot::x#1
|
||||
Coalesced [36] plot::y#13 ← plot::y#1
|
||||
Coalesced [40] plot::x#14 ← plot::x#2
|
||||
Coalesced [41] plot::y#14 ← plot::y#2
|
||||
Coalesced [45] plot::x#15 ← plot::x#3
|
||||
Coalesced [46] plot::y#15 ← plot::y#3
|
||||
Coalesced [50] plot::x#16 ← plot::x#4
|
||||
Coalesced [51] plot::y#16 ← plot::y#4
|
||||
Coalesced [55] plot::x#9 ← plot::x#5
|
||||
Coalesced [56] plot::y#9 ← plot::y#5
|
||||
Coalesced [60] plot::x#10 ← plot::x#6
|
||||
Coalesced [61] plot::y#10 ← plot::y#6
|
||||
Coalesced [65] plot::x#11 ← plot::x#7
|
||||
Coalesced [66] plot::y#11 ← plot::y#7
|
||||
Coalesced [69] circle::x1#15 ← circle::x1#1
|
||||
Coalesced [70] circle::y#15 ← circle::y#10
|
||||
Coalesced [71] circle::p#16 ← circle::p#10
|
||||
@ -732,22 +712,8 @@ Coalesced [76] circle::p#17 ← circle::p#1
|
||||
Coalesced [94] fill::addr#4 ← fill::addr#0
|
||||
Coalesced [100] fill::addr#5 ← fill::addr#1
|
||||
Coalesced down to 8 phi equivalence classes
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) main::@5
|
||||
Renumbering block @8 to @1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block circle::@4 to circle::@3
|
||||
Renumbering block circle::@5 to circle::@4
|
||||
Renumbering block circle::@8 to circle::@5
|
||||
Renumbering block circle::@11 to circle::@6
|
||||
Renumbering block circle::@12 to circle::@7
|
||||
Renumbering block circle::@13 to circle::@8
|
||||
Renumbering block circle::@14 to circle::@9
|
||||
Renumbering block circle::@15 to circle::@10
|
||||
Renumbering block circle::@16 to circle::@11
|
||||
Renumbering block circle::@17 to circle::@12
|
||||
Renumbering block circle::@18 to circle::@13
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
@ -862,8 +828,8 @@ circle::@3: scope:[circle] from circle::@2
|
||||
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
|
||||
[52] (signed word) plot::y#8 ← phi( circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 )
|
||||
[52] (signed word) plot::x#8 ← phi( circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 )
|
||||
[52] (signed word) plot::y#8 ← phi( circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 )
|
||||
[52] (signed word) plot::x#8 ← phi( circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 )
|
||||
[53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8
|
||||
[54] (byte*) plot::location#1 ← (const nomodify byte*) BITMAP + (signed word~) plot::$0
|
||||
[55] (byte~) plot::$1 ← < (signed word) plot::y#8
|
||||
@ -976,8 +942,8 @@ Initial phi equivalence classes
|
||||
[ circle::x1#10 circle::x1#1 ]
|
||||
[ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
[ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
[ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
[ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
|
||||
[ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
[ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
[ fill::size#2 ]
|
||||
[ fill::val#4 ]
|
||||
[ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -1003,8 +969,8 @@ Complete equivalence classes
|
||||
[ circle::x1#10 circle::x1#1 ]
|
||||
[ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
[ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
[ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
[ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
|
||||
[ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
[ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
[ fill::size#2 ]
|
||||
[ fill::val#4 ]
|
||||
[ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -1029,8 +995,8 @@ Complete equivalence classes
|
||||
Allocated zp[2]:2 [ circle::x1#10 circle::x1#1 ]
|
||||
Allocated zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Allocated zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
Allocated zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
Allocated zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
|
||||
Allocated zp[2]:8 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated zp[2]:10 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
Allocated zp[2]:12 [ fill::size#2 ]
|
||||
Allocated zp[1]:14 [ fill::val#4 ]
|
||||
Allocated zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -1766,8 +1732,8 @@ Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill
|
||||
Potential registers zp[2]:2 [ circle::x1#10 circle::x1#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:8 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:10 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ fill::size#2 ] : zp[2]:12 ,
|
||||
Potential registers zp[1]:14 [ fill::val#4 ] : zp[1]:14 , reg byte x ,
|
||||
Potential registers zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:15 ,
|
||||
@ -1791,13 +1757,13 @@ Potential registers zp[1]:46 [ plot::$6 ] : zp[1]:46 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:47 [ fill::end#0 ] : zp[2]:47 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 20,684.33: zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 20,002: zp[2]:27 [ plot::$0 ] 20,002: zp[1]:31 [ plot::$1 ] 20,002: zp[1]:32 [ plot::$2 ] 20,002: zp[2]:37 [ plot::$7 ] 20,002: zp[2]:39 [ plot::$8 ] 20,002: zp[2]:41 [ plot::$4 ] 20,002: zp[1]:45 [ plot::$5 ] 20,002: zp[1]:46 [ plot::$6 ] 15,001.5: zp[2]:35 [ plot::$3 ] 10,554.36: zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 10,001: zp[2]:43 [ plot::location#3 ] 6,667.33: zp[2]:29 [ plot::location#1 ] 4,000.4: zp[2]:33 [ plot::location#2 ]
|
||||
Uplift Scope [plot] 20,684.33: zp[2]:10 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 20,002: zp[2]:27 [ plot::$0 ] 20,002: zp[1]:31 [ plot::$1 ] 20,002: zp[1]:32 [ plot::$2 ] 20,002: zp[2]:37 [ plot::$7 ] 20,002: zp[2]:39 [ plot::$8 ] 20,002: zp[2]:41 [ plot::$4 ] 20,002: zp[1]:45 [ plot::$5 ] 20,002: zp[1]:46 [ plot::$6 ] 15,001.5: zp[2]:35 [ plot::$3 ] 10,554.36: zp[2]:8 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 10,001: zp[2]:43 [ plot::location#3 ] 6,667.33: zp[2]:29 [ plot::location#1 ] 4,000.4: zp[2]:33 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 4,691.5: zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 2,363.47: zp[2]:2 [ circle::x1#10 circle::x1#1 ] 2,002: zp[2]:17 [ circle::$5 ] 2,002: zp[2]:19 [ circle::$6 ] 2,002: zp[2]:21 [ circle::$7 ] 2,002: zp[2]:23 [ circle::$9 ] 2,002: zp[2]:25 [ circle::$10 ] 1,691.43: zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplift Scope [fill] 3,471.33: zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 220.4: zp[2]:47 [ fill::end#0 ] 166.83: zp[1]:14 [ fill::val#4 ] 101: zp[2]:12 [ fill::size#2 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 6419 combination zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:27 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:37 [ plot::$7 ] zp[2]:39 [ plot::$8 ] zp[2]:41 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:35 [ plot::$3 ] zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:43 [ plot::location#3 ] zp[2]:29 [ plot::location#1 ] zp[2]:33 [ plot::location#2 ]
|
||||
Uplifting [plot] best 6419 combination zp[2]:10 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:27 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:37 [ plot::$7 ] zp[2]:39 [ plot::$8 ] zp[2]:41 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:35 [ plot::$3 ] zp[2]:8 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:43 [ plot::location#3 ] zp[2]:29 [ plot::location#1 ] zp[2]:33 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 6419 combination zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:2 [ circle::x1#10 circle::x1#1 ] zp[2]:17 [ circle::$5 ] zp[2]:19 [ circle::$6 ] zp[2]:21 [ circle::$7 ] zp[2]:23 [ circle::$9 ] zp[2]:25 [ circle::$10 ] zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplifting [fill] best 6403 combination zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:47 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:12 [ fill::size#2 ]
|
||||
@ -1805,7 +1771,7 @@ Uplifting [main] best 6403 combination
|
||||
Uplifting [] best 6403 combination
|
||||
Coalescing zero page register [ zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:21 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:25 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] ] with [ zp[2]:35 [ plot::$3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:10 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:35 [ plot::$3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:12 [ fill::size#2 ] ] with [ zp[2]:47 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:17 [ circle::$5 ] ] with [ zp[2]:19 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:27 [ plot::$0 ] ] with [ zp[2]:29 [ plot::location#1 ] ] - score: 1
|
||||
@ -1815,13 +1781,13 @@ Coalescing zero page register [ zp[2]:27 [ plot::$0 plot::location#1 ] ] with [
|
||||
Coalescing zero page register [ zp[2]:37 [ plot::$7 plot::$8 ] ] with [ zp[2]:41 [ plot::$4 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:12 [ fill::size#2 fill::end#0 ] ] with [ zp[2]:2 [ circle::x1#10 circle::x1#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:17 [ circle::$5 circle::$6 ] ] with [ zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:23 [ circle::$9 ] ] with [ zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$3 ] ]
|
||||
Coalescing zero page register [ zp[2]:17 [ circle::$5 circle::$6 ] ] with [ zp[2]:8 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:23 [ circle::$9 ] ] with [ zp[2]:10 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ] ]
|
||||
Allocated (was zp[2]:6) zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
Allocated (was zp[2]:12) zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
Allocated (was zp[2]:15) zp[2]:6 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Allocated (was zp[2]:17) zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
Allocated (was zp[2]:23) zp[2]:10 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$3 ]
|
||||
Allocated (was zp[2]:17) zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:23) zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ]
|
||||
Allocated (was zp[2]:27) zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
Allocated (was zp[2]:37) zp[2]:14 [ plot::$7 plot::$8 plot::$4 ]
|
||||
|
||||
@ -2605,8 +2571,8 @@ zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$1
|
||||
zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:6 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::y#13 circle::y#10 circle::y#1 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$3 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ]
|
||||
zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$2 ]
|
||||
|
@ -108,8 +108,8 @@ zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$1
|
||||
zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:6 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::y#13 circle::y#10 circle::y#1 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$3 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ]
|
||||
zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$2 ]
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -135,8 +135,8 @@ bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
|
||||
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
|
||||
[66] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(const word) bitmap_line::x1#0 bitmap_line::@6/(word) bitmap_plot::x#1 )
|
||||
[66] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) 0 bitmap_line::@6/(byte) bitmap_plot::y#1 )
|
||||
[66] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(const word) bitmap_line::x1#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 )
|
||||
[66] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) 0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 )
|
||||
[67] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
|
||||
[68] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8
|
||||
[69] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -187,11 +187,11 @@
|
||||
|
||||
zp[2]:2 [ next#5 next#3 next#1 bitmap_line::x2#0 ]
|
||||
zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[2]:6 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:8 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:12 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ]
|
||||
zp[2]:12 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
|
@ -2,56 +2,12 @@ Resolved forward reference frame_cnt to (volatile byte) frame_cnt
|
||||
Resolved forward reference frame_cnt to (volatile byte) frame_cnt
|
||||
Resolved forward reference frame_cnt to (volatile byte) frame_cnt
|
||||
Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
De-inlining cast (byte*)memcpy::source
|
||||
De-inlining cast (word)memmove::destination
|
||||
De-inlining cast (word)memmove::source
|
||||
De-inlining cast (byte*)memmove::source
|
||||
De-inlining cast (byte*)memmove::destination
|
||||
De-inlining cast (byte*)memset::str
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strupr::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
|
||||
Warning! Adding boolean cast to non-boolean condition (number~) abs_u16::$1
|
||||
Warning! Adding boolean cast to non-boolean condition (number~) sgn_u16::$1
|
||||
Warning! Adding boolean cast to non-boolean sub-expression (volatile byte) frame_cnt
|
||||
Identified constant variable (byte*) BITMAP
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call (byte~) main::$2 ← call toD018 (const byte*) SCREEN (const byte*) BITMAP
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) memset::@7
|
||||
Culled Empty Block (label) memset::@6
|
||||
Culled Empty Block (label) memset::@8
|
||||
Culled Empty Block (label) memset::@9
|
||||
Culled Empty Block (label) memset::@3
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) bitmap_init::@8
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) main::toD0181_@1
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) @19
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@11
|
||||
to:@1
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
||||
@ -62,8 +18,8 @@ memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
||||
(bool~) memset::$1 ← ! (bool~) memset::$0
|
||||
if((bool~) memset::$1) goto memset::@1
|
||||
to:memset::@2
|
||||
memset::@1: scope:[memset] from memset memset::@4
|
||||
(void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@4/(void*) memset::str#5 )
|
||||
memset::@1: scope:[memset] from memset memset::@3
|
||||
(void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@3/(void*) memset::str#5 )
|
||||
(void*) memset::return#0 ← (void*) memset::str#2
|
||||
to:memset::@return
|
||||
memset::@2: scope:[memset] from memset
|
||||
@ -74,32 +30,32 @@ memset::@2: scope:[memset] from memset
|
||||
(byte*~) memset::$2 ← (byte*~) memset::$4 + (word) memset::num#3
|
||||
(byte*) memset::end#0 ← (byte*~) memset::$2
|
||||
(byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#3
|
||||
to:memset::@4
|
||||
memset::@4: scope:[memset] from memset::@2 memset::@5
|
||||
(byte) memset::c#3 ← phi( memset::@2/(byte) memset::c#4 memset::@5/(byte) memset::c#2 )
|
||||
(void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@5/(void*) memset::str#6 )
|
||||
(byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
|
||||
(byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
|
||||
to:memset::@3
|
||||
memset::@3: scope:[memset] from memset::@2 memset::@4
|
||||
(byte) memset::c#3 ← phi( memset::@2/(byte) memset::c#4 memset::@4/(byte) memset::c#2 )
|
||||
(void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@4/(void*) memset::str#6 )
|
||||
(byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#2 )
|
||||
(byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 )
|
||||
(bool~) memset::$3 ← (byte*) memset::dst#2 != (byte*) memset::end#1
|
||||
if((bool~) memset::$3) goto memset::@5
|
||||
if((bool~) memset::$3) goto memset::@4
|
||||
to:memset::@1
|
||||
memset::@5: scope:[memset] from memset::@4
|
||||
(void*) memset::str#6 ← phi( memset::@4/(void*) memset::str#5 )
|
||||
(byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
|
||||
(byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
|
||||
(byte) memset::c#2 ← phi( memset::@4/(byte) memset::c#3 )
|
||||
memset::@4: scope:[memset] from memset::@3
|
||||
(void*) memset::str#6 ← phi( memset::@3/(void*) memset::str#5 )
|
||||
(byte*) memset::end#2 ← phi( memset::@3/(byte*) memset::end#1 )
|
||||
(byte*) memset::dst#3 ← phi( memset::@3/(byte*) memset::dst#2 )
|
||||
(byte) memset::c#2 ← phi( memset::@3/(byte) memset::c#3 )
|
||||
*((byte*) memset::dst#3) ← (byte) memset::c#2
|
||||
(byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
|
||||
to:memset::@4
|
||||
to:memset::@3
|
||||
memset::@return: scope:[memset] from memset::@1
|
||||
(void*) memset::return#4 ← phi( memset::@1/(void*) memset::return#0 )
|
||||
(void*) memset::return#1 ← (void*) memset::return#4
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
(byte*) bitmap_screen#0 ← (byte*) 0
|
||||
(byte*) bitmap_gfx#0 ← (byte*) 0
|
||||
to:@18
|
||||
to:@2
|
||||
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
bitmap_init: scope:[bitmap_init] from main
|
||||
@ -188,11 +144,11 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6
|
||||
to:@return
|
||||
|
||||
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@12
|
||||
(byte*) bitmap_gfx#12 ← phi( main::@12/(byte*) bitmap_gfx#3 )
|
||||
(byte*) bitmap_screen#7 ← phi( main::@12/(byte*) bitmap_screen#3 )
|
||||
(byte) bitmap_clear::bgcol#1 ← phi( main::@12/(byte) bitmap_clear::bgcol#0 )
|
||||
(byte) bitmap_clear::fgcol#1 ← phi( main::@12/(byte) bitmap_clear::fgcol#0 )
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@8
|
||||
(byte*) bitmap_gfx#12 ← phi( main::@8/(byte*) bitmap_gfx#3 )
|
||||
(byte*) bitmap_screen#7 ← phi( main::@8/(byte*) bitmap_screen#3 )
|
||||
(byte) bitmap_clear::bgcol#1 ← phi( main::@8/(byte) bitmap_clear::bgcol#0 )
|
||||
(byte) bitmap_clear::fgcol#1 ← phi( main::@8/(byte) bitmap_clear::fgcol#0 )
|
||||
(number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10
|
||||
(number~) bitmap_clear::$1 ← (number~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
|
||||
(byte) bitmap_clear::col#0 ← (number~) bitmap_clear::$1
|
||||
@ -231,14 +187,14 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @20
|
||||
(byte*) bitmap_screen#12 ← phi( @20/(byte*) bitmap_screen#14 )
|
||||
(byte*) bitmap_gfx#13 ← phi( @20/(byte*) bitmap_gfx#15 )
|
||||
main: scope:[main] from @3
|
||||
(byte*) bitmap_screen#12 ← phi( @3/(byte*) bitmap_screen#14 )
|
||||
(byte*) bitmap_gfx#13 ← phi( @3/(byte*) bitmap_gfx#15 )
|
||||
(byte*) bitmap_init::gfx#0 ← (const byte*) BITMAP
|
||||
(byte*) bitmap_init::screen#0 ← (const byte*) SCREEN
|
||||
call bitmap_init
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main
|
||||
(byte*) bitmap_screen#8 ← phi( main/(byte*) bitmap_screen#2 )
|
||||
(byte*) bitmap_gfx#8 ← phi( main/(byte*) bitmap_gfx#2 )
|
||||
(byte*) bitmap_gfx#3 ← (byte*) bitmap_gfx#8
|
||||
@ -246,19 +202,19 @@ main::@12: scope:[main] from main
|
||||
(byte) bitmap_clear::bgcol#0 ← (const nomodify byte) BLACK
|
||||
(byte) bitmap_clear::fgcol#0 ← (const nomodify byte) WHITE
|
||||
call bitmap_clear
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main::@12
|
||||
(byte*) bitmap_screen#32 ← phi( main::@12/(byte*) bitmap_screen#3 )
|
||||
(byte*) bitmap_gfx#33 ← phi( main::@12/(byte*) bitmap_gfx#3 )
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
(byte*) bitmap_screen#32 ← phi( main::@8/(byte*) bitmap_screen#3 )
|
||||
(byte*) bitmap_gfx#33 ← phi( main::@8/(byte*) bitmap_gfx#3 )
|
||||
*((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
(byte*) main::toD0181_screen#0 ← (const byte*) SCREEN
|
||||
(byte*) main::toD0181_gfx#0 ← (const byte*) BITMAP
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main::@13
|
||||
(byte*) bitmap_screen#30 ← phi( main::@13/(byte*) bitmap_screen#32 )
|
||||
(byte*) bitmap_gfx#31 ← phi( main::@13/(byte*) bitmap_gfx#33 )
|
||||
(byte*) main::toD0181_gfx#1 ← phi( main::@13/(byte*) main::toD0181_gfx#0 )
|
||||
(byte*) main::toD0181_screen#1 ← phi( main::@13/(byte*) main::toD0181_screen#0 )
|
||||
main::toD0181: scope:[main] from main::@9
|
||||
(byte*) bitmap_screen#30 ← phi( main::@9/(byte*) bitmap_screen#32 )
|
||||
(byte*) bitmap_gfx#31 ← phi( main::@9/(byte*) bitmap_gfx#33 )
|
||||
(byte*) main::toD0181_gfx#1 ← phi( main::@9/(byte*) main::toD0181_gfx#0 )
|
||||
(byte*) main::toD0181_screen#1 ← phi( main::@9/(byte*) main::toD0181_screen#0 )
|
||||
(word~) main::toD0181_$7 ← (word)(byte*) main::toD0181_screen#1
|
||||
(number~) main::toD0181_$0 ← (word~) main::toD0181_$7 & (number) $3fff
|
||||
(number~) main::toD0181_$1 ← (number~) main::toD0181_$0 * (number) 4
|
||||
@ -274,30 +230,30 @@ main::toD0181_@return: scope:[main] from main::toD0181
|
||||
(byte*) bitmap_gfx#26 ← phi( main::toD0181/(byte*) bitmap_gfx#31 )
|
||||
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
||||
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::toD0181_@return
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::toD0181_@return
|
||||
(byte*) bitmap_screen#21 ← phi( main::toD0181_@return/(byte*) bitmap_screen#25 )
|
||||
(byte*) bitmap_gfx#22 ← phi( main::toD0181_@return/(byte*) bitmap_gfx#26 )
|
||||
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
||||
(byte~) main::$2 ← (byte) main::toD0181_return#3
|
||||
*((const nomodify byte*) D018) ← (byte~) main::$2
|
||||
call init_irq
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@11
|
||||
(byte*) bitmap_screen#17 ← phi( main::@11/(byte*) bitmap_screen#21 )
|
||||
(byte*) bitmap_gfx#18 ← phi( main::@11/(byte*) bitmap_gfx#22 )
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@7
|
||||
(byte*) bitmap_screen#17 ← phi( main::@7/(byte*) bitmap_screen#21 )
|
||||
(byte*) bitmap_gfx#18 ← phi( main::@7/(byte*) bitmap_gfx#22 )
|
||||
(word) main::x#0 ← (word) 0
|
||||
(byte) main::y#0 ← (byte) 0
|
||||
(word) main::vx#0 ← (word) 1
|
||||
(byte) main::vy#0 ← (byte) 1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@14 main::@5
|
||||
(byte) main::vy#6 ← phi( main::@14/(byte) main::vy#0 main::@5/(byte) main::vy#8 )
|
||||
(word) main::vx#5 ← phi( main::@14/(word) main::vx#0 main::@5/(word) main::vx#6 )
|
||||
(byte*) bitmap_screen#13 ← phi( main::@14/(byte*) bitmap_screen#17 main::@5/(byte*) bitmap_screen#18 )
|
||||
(byte*) bitmap_gfx#14 ← phi( main::@14/(byte*) bitmap_gfx#18 main::@5/(byte*) bitmap_gfx#19 )
|
||||
(byte) main::y#5 ← phi( main::@14/(byte) main::y#0 main::@5/(byte) main::y#7 )
|
||||
(word) main::x#4 ← phi( main::@14/(word) main::x#0 main::@5/(word) main::x#5 )
|
||||
main::@1: scope:[main] from main::@10 main::@4
|
||||
(byte) main::vy#6 ← phi( main::@10/(byte) main::vy#0 main::@4/(byte) main::vy#8 )
|
||||
(word) main::vx#5 ← phi( main::@10/(word) main::vx#0 main::@4/(word) main::vx#6 )
|
||||
(byte*) bitmap_screen#13 ← phi( main::@10/(byte*) bitmap_screen#17 main::@4/(byte*) bitmap_screen#18 )
|
||||
(byte*) bitmap_gfx#14 ← phi( main::@10/(byte*) bitmap_gfx#18 main::@4/(byte*) bitmap_gfx#19 )
|
||||
(byte) main::y#5 ← phi( main::@10/(byte) main::y#0 main::@4/(byte) main::y#7 )
|
||||
(word) main::x#4 ← phi( main::@10/(word) main::x#0 main::@4/(word) main::x#5 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
@ -310,8 +266,8 @@ main::@2: scope:[main] from main::@1
|
||||
(word) bitmap_plot::x#0 ← (word) main::x#2
|
||||
(byte) bitmap_plot::y#0 ← (byte) main::y#2
|
||||
call bitmap_plot
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main::@2
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@2
|
||||
(byte*) bitmap_screen#26 ← phi( main::@2/(byte*) bitmap_screen#31 )
|
||||
(byte*) bitmap_gfx#27 ← phi( main::@2/(byte*) bitmap_gfx#32 )
|
||||
(byte) main::vy#2 ← phi( main::@2/(byte) main::vy#4 )
|
||||
@ -324,50 +280,50 @@ main::@15: scope:[main] from main::@2
|
||||
(bool~) main::$6 ← (word) main::x#1 == (number) 0
|
||||
(bool~) main::$7 ← (bool~) main::$5 || (bool~) main::$6
|
||||
(bool~) main::$8 ← ! (bool~) main::$7
|
||||
if((bool~) main::$8) goto main::@4
|
||||
to:main::@8
|
||||
main::@4: scope:[main] from main::@15 main::@8
|
||||
(word) main::vx#7 ← phi( main::@15/(word) main::vx#2 main::@8/(word) main::vx#1 )
|
||||
(byte*) bitmap_screen#22 ← phi( main::@15/(byte*) bitmap_screen#26 main::@8/(byte*) bitmap_screen#27 )
|
||||
(byte*) bitmap_gfx#23 ← phi( main::@15/(byte*) bitmap_gfx#27 main::@8/(byte*) bitmap_gfx#28 )
|
||||
(word) main::x#6 ← phi( main::@15/(word) main::x#1 main::@8/(word) main::x#8 )
|
||||
(byte) main::vy#5 ← phi( main::@15/(byte) main::vy#2 main::@8/(byte) main::vy#7 )
|
||||
(byte) main::y#4 ← phi( main::@15/(byte) main::y#1 main::@8/(byte) main::y#6 )
|
||||
if((bool~) main::$8) goto main::@3
|
||||
to:main::@5
|
||||
main::@3: scope:[main] from main::@11 main::@5
|
||||
(word) main::vx#7 ← phi( main::@11/(word) main::vx#2 main::@5/(word) main::vx#1 )
|
||||
(byte*) bitmap_screen#22 ← phi( main::@11/(byte*) bitmap_screen#26 main::@5/(byte*) bitmap_screen#27 )
|
||||
(byte*) bitmap_gfx#23 ← phi( main::@11/(byte*) bitmap_gfx#27 main::@5/(byte*) bitmap_gfx#28 )
|
||||
(word) main::x#6 ← phi( main::@11/(word) main::x#1 main::@5/(word) main::x#8 )
|
||||
(byte) main::vy#5 ← phi( main::@11/(byte) main::vy#2 main::@5/(byte) main::vy#7 )
|
||||
(byte) main::y#4 ← phi( main::@11/(byte) main::y#1 main::@5/(byte) main::y#6 )
|
||||
(bool~) main::$10 ← (byte) main::y#4 == (number) $c7
|
||||
(bool~) main::$11 ← (byte) main::y#4 == (number) 0
|
||||
(bool~) main::$12 ← (bool~) main::$10 || (bool~) main::$11
|
||||
(bool~) main::$13 ← ! (bool~) main::$12
|
||||
if((bool~) main::$13) goto main::@5
|
||||
to:main::@9
|
||||
main::@8: scope:[main] from main::@15
|
||||
(byte*) bitmap_screen#27 ← phi( main::@15/(byte*) bitmap_screen#26 )
|
||||
(byte*) bitmap_gfx#28 ← phi( main::@15/(byte*) bitmap_gfx#27 )
|
||||
(word) main::x#8 ← phi( main::@15/(word) main::x#1 )
|
||||
(byte) main::vy#7 ← phi( main::@15/(byte) main::vy#2 )
|
||||
(byte) main::y#6 ← phi( main::@15/(byte) main::y#1 )
|
||||
(word) main::vx#3 ← phi( main::@15/(word) main::vx#2 )
|
||||
if((bool~) main::$13) goto main::@4
|
||||
to:main::@6
|
||||
main::@5: scope:[main] from main::@11
|
||||
(byte*) bitmap_screen#27 ← phi( main::@11/(byte*) bitmap_screen#26 )
|
||||
(byte*) bitmap_gfx#28 ← phi( main::@11/(byte*) bitmap_gfx#27 )
|
||||
(word) main::x#8 ← phi( main::@11/(word) main::x#1 )
|
||||
(byte) main::vy#7 ← phi( main::@11/(byte) main::vy#2 )
|
||||
(byte) main::y#6 ← phi( main::@11/(byte) main::y#1 )
|
||||
(word) main::vx#3 ← phi( main::@11/(word) main::vx#2 )
|
||||
(word~) main::$9 ← - (word) main::vx#3
|
||||
(word) main::vx#1 ← (word~) main::$9
|
||||
to:main::@4
|
||||
main::@5: scope:[main] from main::@4 main::@9
|
||||
(byte) main::vy#8 ← phi( main::@4/(byte) main::vy#5 main::@9/(byte) main::vy#1 )
|
||||
(word) main::vx#6 ← phi( main::@4/(word) main::vx#7 main::@9/(word) main::vx#8 )
|
||||
(byte*) bitmap_screen#18 ← phi( main::@4/(byte*) bitmap_screen#22 main::@9/(byte*) bitmap_screen#23 )
|
||||
(byte*) bitmap_gfx#19 ← phi( main::@4/(byte*) bitmap_gfx#23 main::@9/(byte*) bitmap_gfx#24 )
|
||||
(byte) main::y#7 ← phi( main::@4/(byte) main::y#4 main::@9/(byte) main::y#8 )
|
||||
(word) main::x#5 ← phi( main::@4/(word) main::x#6 main::@9/(word) main::x#7 )
|
||||
to:main::@3
|
||||
main::@4: scope:[main] from main::@3 main::@6
|
||||
(byte) main::vy#8 ← phi( main::@3/(byte) main::vy#5 main::@6/(byte) main::vy#1 )
|
||||
(word) main::vx#6 ← phi( main::@3/(word) main::vx#7 main::@6/(word) main::vx#8 )
|
||||
(byte*) bitmap_screen#18 ← phi( main::@3/(byte*) bitmap_screen#22 main::@6/(byte*) bitmap_screen#23 )
|
||||
(byte*) bitmap_gfx#19 ← phi( main::@3/(byte*) bitmap_gfx#23 main::@6/(byte*) bitmap_gfx#24 )
|
||||
(byte) main::y#7 ← phi( main::@3/(byte) main::y#4 main::@6/(byte) main::y#8 )
|
||||
(word) main::x#5 ← phi( main::@3/(word) main::x#6 main::@6/(word) main::x#7 )
|
||||
*((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt)
|
||||
to:main::@1
|
||||
main::@9: scope:[main] from main::@4
|
||||
(word) main::vx#8 ← phi( main::@4/(word) main::vx#7 )
|
||||
(byte*) bitmap_screen#23 ← phi( main::@4/(byte*) bitmap_screen#22 )
|
||||
(byte*) bitmap_gfx#24 ← phi( main::@4/(byte*) bitmap_gfx#23 )
|
||||
(byte) main::y#8 ← phi( main::@4/(byte) main::y#4 )
|
||||
(word) main::x#7 ← phi( main::@4/(word) main::x#6 )
|
||||
(byte) main::vy#3 ← phi( main::@4/(byte) main::vy#5 )
|
||||
main::@6: scope:[main] from main::@3
|
||||
(word) main::vx#8 ← phi( main::@3/(word) main::vx#7 )
|
||||
(byte*) bitmap_screen#23 ← phi( main::@3/(byte*) bitmap_screen#22 )
|
||||
(byte*) bitmap_gfx#24 ← phi( main::@3/(byte*) bitmap_gfx#23 )
|
||||
(byte) main::y#8 ← phi( main::@3/(byte) main::y#4 )
|
||||
(word) main::x#7 ← phi( main::@3/(word) main::x#6 )
|
||||
(byte) main::vy#3 ← phi( main::@3/(byte) main::vy#5 )
|
||||
(byte~) main::$14 ← - (byte) main::vy#3
|
||||
(byte) main::vy#1 ← (byte~) main::$14
|
||||
to:main::@5
|
||||
to:main::@4
|
||||
main::@return: scope:[main] from main::@1
|
||||
(byte*) bitmap_screen#9 ← phi( main::@1/(byte*) bitmap_screen#13 )
|
||||
(byte*) bitmap_gfx#9 ← phi( main::@1/(byte*) bitmap_gfx#14 )
|
||||
@ -375,14 +331,14 @@ main::@return: scope:[main] from main::@1
|
||||
(byte*) bitmap_screen#4 ← (byte*) bitmap_screen#9
|
||||
return
|
||||
to:@return
|
||||
@18: scope:[] from @11
|
||||
(byte*) bitmap_screen#19 ← phi( @11/(byte*) bitmap_screen#0 )
|
||||
(byte*) bitmap_gfx#20 ← phi( @11/(byte*) bitmap_gfx#0 )
|
||||
@2: scope:[] from @1
|
||||
(byte*) bitmap_screen#19 ← phi( @1/(byte*) bitmap_screen#0 )
|
||||
(byte*) bitmap_gfx#20 ← phi( @1/(byte*) bitmap_gfx#0 )
|
||||
(volatile byte) frame_cnt ← (byte) 1
|
||||
to:@20
|
||||
to:@3
|
||||
|
||||
(void()) init_irq()
|
||||
init_irq: scope:[init_irq] from main::@11
|
||||
init_irq: scope:[init_irq] from main::@7
|
||||
asm { sei }
|
||||
*((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
||||
*((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
||||
@ -414,24 +370,24 @@ irq::@2: scope:[irq] from irq
|
||||
irq::@return: scope:[irq] from irq::@1
|
||||
return
|
||||
to:@return
|
||||
@20: scope:[] from @18
|
||||
(byte*) bitmap_screen#14 ← phi( @18/(byte*) bitmap_screen#19 )
|
||||
(byte*) bitmap_gfx#15 ← phi( @18/(byte*) bitmap_gfx#20 )
|
||||
@3: scope:[] from @2
|
||||
(byte*) bitmap_screen#14 ← phi( @2/(byte*) bitmap_screen#19 )
|
||||
(byte*) bitmap_gfx#15 ← phi( @2/(byte*) bitmap_gfx#20 )
|
||||
call main
|
||||
to:@21
|
||||
@21: scope:[] from @20
|
||||
(byte*) bitmap_screen#10 ← phi( @20/(byte*) bitmap_screen#4 )
|
||||
(byte*) bitmap_gfx#10 ← phi( @20/(byte*) bitmap_gfx#4 )
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
(byte*) bitmap_screen#10 ← phi( @3/(byte*) bitmap_screen#4 )
|
||||
(byte*) bitmap_gfx#10 ← phi( @3/(byte*) bitmap_gfx#4 )
|
||||
(byte*) bitmap_gfx#5 ← (byte*) bitmap_gfx#10
|
||||
(byte*) bitmap_screen#5 ← (byte*) bitmap_screen#10
|
||||
to:@end
|
||||
@end: scope:[] from @21
|
||||
@end: scope:[] from @4
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @11
|
||||
(label) @18
|
||||
(label) @20
|
||||
(label) @21
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @4
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d021
|
||||
@ -632,14 +588,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(bool~) main::$8
|
||||
(word~) main::$9
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@13
|
||||
(label) main::@14
|
||||
(label) main::@15
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::@return
|
||||
@ -712,8 +668,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(byte*~) memset::$4
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@4
|
||||
(label) memset::@5
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#0
|
||||
@ -974,7 +930,7 @@ Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Identified duplicate assignment right side [49] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
||||
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||
Simple Condition (bool~) memset::$1 [2] if((word) memset::num#2<=(byte) 0) goto memset::@1
|
||||
Simple Condition (bool~) memset::$3 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
|
||||
Simple Condition (bool~) memset::$3 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@4
|
||||
Simple Condition (bool~) bitmap_init::$1 [24] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2
|
||||
Simple Condition (bool~) bitmap_init::$2 [28] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
|
||||
Simple Condition (bool~) bitmap_init::$9 [40] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6
|
||||
@ -1045,13 +1001,13 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias bitmap_init::$7 = bitmap_init::$3
|
||||
Alias bitmap_clear::col#0 = bitmap_clear::$0
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$5 [62] if((word) main::x#1==(word) $13f) goto main::@8
|
||||
Simple Condition (bool~) main::$10 [66] if((byte) main::y#1==(byte) $c7) goto main::@9
|
||||
Simple Condition (bool~) main::$6 [89] if((word) main::x#1==(byte) 0) goto main::@8
|
||||
Simple Condition (bool~) main::$11 [90] if((byte) main::y#1==(byte) 0) goto main::@9
|
||||
Simple Condition (bool~) main::$5 [62] if((word) main::x#1==(word) $13f) goto main::@5
|
||||
Simple Condition (bool~) main::$10 [66] if((byte) main::y#1==(byte) $c7) goto main::@6
|
||||
Simple Condition (bool~) main::$6 [89] if((word) main::x#1==(byte) 0) goto main::@5
|
||||
Simple Condition (bool~) main::$11 [90] if((byte) main::y#1==(byte) 0) goto main::@6
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Negating conditional jump and destination [89] if((word) main::x#1!=(byte) 0) goto main::@4
|
||||
Negating conditional jump and destination [90] if((byte) main::y#1!=(byte) 0) goto main::@5
|
||||
Negating conditional jump and destination [89] if((word) main::x#1!=(byte) 0) goto main::@3
|
||||
Negating conditional jump and destination [90] if((byte) main::y#1!=(byte) 0) goto main::@4
|
||||
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
||||
Constant right-side identified [30] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10
|
||||
Constant right-side identified [45] (word~) main::toD0181_$0 ← (const word) main::toD0181_$7 & (word) $3fff
|
||||
@ -1127,22 +1083,22 @@ Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0
|
||||
Constant inlined bitmap_init::x#0 = (byte) 0
|
||||
Constant inlined memset::c#1 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1)
|
||||
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
|
||||
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@6 and bitmap_init::@5)
|
||||
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@5 and bitmap_init::@6)
|
||||
Added new block during phi lifting main::@18(between main::@16 and main::@4)
|
||||
Added new block during phi lifting main::@19(between main::@17 and main::@5)
|
||||
Added new block during phi lifting bitmap_init::@8(between bitmap_init::@2 and bitmap_init::@1)
|
||||
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@1 and bitmap_init::@2)
|
||||
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@6 and bitmap_init::@5)
|
||||
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@5 and bitmap_init::@6)
|
||||
Added new block during phi lifting main::@14(between main::@12 and main::@3)
|
||||
Added new block during phi lifting main::@15(between main::@13 and main::@4)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @20
|
||||
Adding NOP phi() at start of @21
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@12
|
||||
Adding NOP phi() at start of main::@8
|
||||
Adding NOP phi() at start of main::toD0181
|
||||
Adding NOP phi() at start of main::toD0181_@return
|
||||
Adding NOP phi() at start of main::@14
|
||||
Adding NOP phi() at start of main::@10
|
||||
Adding NOP phi() at start of bitmap_clear
|
||||
Adding NOP phi() at start of bitmap_clear::@1
|
||||
Adding NOP phi() at start of bitmap_clear::@2
|
||||
@ -1173,38 +1129,31 @@ Coalesced [100] bitmap_init::bits#5 ← bitmap_init::bits#4
|
||||
Coalesced [101] bitmap_init::x#5 ← bitmap_init::x#1
|
||||
Coalesced [102] bitmap_init::bits#6 ← bitmap_init::bits#1
|
||||
Coalesced down to 12 phi equivalence classes
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) main::toD0181_@return
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@15
|
||||
Culled Empty Block (label) main::@14
|
||||
Culled Empty Block (label) main::@19
|
||||
Culled Empty Block (label) main::@18
|
||||
Culled Empty Block (label) bitmap_clear::@2
|
||||
Culled Empty Block (label) memset::@1
|
||||
Culled Empty Block (label) bitmap_init::@3
|
||||
Culled Empty Block (label) bitmap_init::@4
|
||||
Culled Empty Block (label) bitmap_init::@10
|
||||
Culled Empty Block (label) bitmap_init::@11
|
||||
Culled Empty Block (label) bitmap_init::@12
|
||||
Culled Empty Block (label) bitmap_init::@9
|
||||
Renumbering block @18 to @1
|
||||
Renumbering block @20 to @2
|
||||
Culled Empty Block (label) bitmap_init::@8
|
||||
Renumbering block @2 to @1
|
||||
Renumbering block @3 to @2
|
||||
Renumbering block memset::@2 to memset::@1
|
||||
Renumbering block memset::@4 to memset::@2
|
||||
Renumbering block memset::@5 to memset::@3
|
||||
Renumbering block memset::@3 to memset::@2
|
||||
Renumbering block memset::@4 to memset::@3
|
||||
Renumbering block bitmap_init::@5 to bitmap_init::@3
|
||||
Renumbering block bitmap_init::@6 to bitmap_init::@4
|
||||
Renumbering block bitmap_init::@7 to bitmap_init::@5
|
||||
Renumbering block bitmap_init::@10 to bitmap_init::@6
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@5 to main::@4
|
||||
Renumbering block main::@8 to main::@5
|
||||
Renumbering block main::@9 to main::@6
|
||||
Renumbering block main::@11 to main::@7
|
||||
Renumbering block main::@12 to main::@8
|
||||
Renumbering block main::@13 to main::@9
|
||||
Renumbering block main::@15 to main::@10
|
||||
Renumbering block main::@16 to main::@11
|
||||
Renumbering block main::@17 to main::@12
|
||||
Renumbering block bitmap_init::@9 to bitmap_init::@6
|
||||
Renumbering block main::@11 to main::@10
|
||||
Renumbering block main::@12 to main::@11
|
||||
Renumbering block main::@13 to main::@12
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -366,9 +366,9 @@ sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
||||
[188] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
|
||||
[188] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
|
||||
[188] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[188] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 )
|
||||
[188] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16s::@9/(word) mulu16_sel::v2#3 )
|
||||
[188] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16s::@9/(word) mulu16_sel::v1#3 )
|
||||
[189] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[190] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[191] call mul16u
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -376,7 +376,7 @@ zp[4]:12 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
reg byte y [ sin16s::isUpper#2 ]
|
||||
zp[4]:16 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
zp[2]:20 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
zp[2]:20 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
zp[1]:22 [ frame_cnt ]
|
||||
reg byte alu [ main::$7 ]
|
||||
@ -385,7 +385,7 @@ reg byte alu [ main::$11 ]
|
||||
zp[2]:25 [ main::y#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
reg byte a [ bitmap_plot::y#0 ]
|
||||
zp[2]:27 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16s::a#3 mul16s::a#0 mul16s::$12 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ]
|
||||
zp[2]:29 [ bitmap_plot::$0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
zp[2]:29 [ bitmap_plot::$0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
||||
reg byte x [ bitmap_plot::$1 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
zp[1]:31 [ bitmap_init::$7 ]
|
||||
|
@ -80,7 +80,7 @@ main::@16: scope:[main] from main::@14
|
||||
[44] phi()
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@14 main::@16
|
||||
[45] (word) main::idx_x#10 ← phi( main::@14/(byte) 0 main::@16/(word) main::idx_x#1 )
|
||||
[45] (word) main::idx_x#10 ← phi( main::@16/(word) main::idx_x#1 main::@14/(byte) 0 )
|
||||
[46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10
|
||||
[47] if((word) main::idx_y#1<(word) $200) goto main::@17
|
||||
to:main::@4
|
||||
@ -88,7 +88,7 @@ main::@17: scope:[main] from main::@3
|
||||
[48] phi()
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@17 main::@3
|
||||
[49] (word) main::idx_y#10 ← phi( main::@3/(byte) 0 main::@17/(word) main::idx_y#1 )
|
||||
[49] (word) main::idx_y#10 ← phi( main::@17/(word) main::idx_y#1 main::@3/(byte) 0 )
|
||||
[50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10
|
||||
[51] if((word) main::idx_x#10!=(byte) 0) goto main::@5
|
||||
to:main::@15
|
||||
@ -99,7 +99,7 @@ main::@6: scope:[main] from main::@15
|
||||
[53] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@15 main::@4 main::@6
|
||||
[54] (byte) main::r_add#12 ← phi( main::@6/(byte) main::r_add#1 main::@4/(byte) main::r_add#10 )
|
||||
[54] (byte) main::r_add#12 ← phi( main::@4/(byte) main::r_add#10 main::@6/(byte) main::r_add#1 )
|
||||
[55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7
|
||||
to:main::@1
|
||||
main::@7: scope:[main] from main::@5 main::@7
|
||||
@ -120,8 +120,8 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
mul16s: scope:[mul16s] from main::@12 main::@2 sin16s_gen2::@4
|
||||
[63] (signed word) mul16s::b#3 ← phi( main::@2/(signed word) mul16s::b#1 main::@12/(signed word) mul16s::b#2 sin16s_gen2::@4/(const signed word) sin16s_gen2::ampl#0 )
|
||||
[63] (signed word) mul16s::a#3 ← phi( main::@2/(signed word) mul16s::a#1 main::@12/(signed word) mul16s::a#2 sin16s_gen2::@4/(signed word) mul16s::a#0 )
|
||||
[63] (signed word) mul16s::b#3 ← phi( main::@12/(signed word) mul16s::b#2 main::@2/(signed word) mul16s::b#1 sin16s_gen2::@4/(const signed word) sin16s_gen2::ampl#0 )
|
||||
[63] (signed word) mul16s::a#3 ← phi( main::@12/(signed word) mul16s::a#2 main::@2/(signed word) mul16s::a#1 sin16s_gen2::@4/(signed word) mul16s::a#0 )
|
||||
[64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3
|
||||
[65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3
|
||||
[66] call mul16u
|
||||
@ -385,9 +385,9 @@ sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
||||
[197] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
|
||||
[197] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
|
||||
[197] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[197] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 )
|
||||
[197] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16s::@9/(word) mulu16_sel::v2#3 )
|
||||
[197] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16s::@9/(word) mulu16_sel::v1#3 )
|
||||
[198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[200] call mul16u
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -379,10 +379,10 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(dword) sin16s_gen2::x#2 x zp[4]:17 250.25
|
||||
|
||||
zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
||||
zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
|
||||
zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
|
||||
zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
||||
zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
||||
zp[2]:9 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 main::cos_x#0 main::sin_y#0 main::$26 main::$30 main::$27 main::$31 ]
|
||||
zp[2]:9 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$26 main::$30 main::$27 main::$31 ]
|
||||
zp[4]:11 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$6 mulu16_sel::$0 mulu16_sel::$1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
@ -393,11 +393,11 @@ zp[4]:17 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
reg byte y [ sin16s::isUpper#2 ]
|
||||
zp[4]:21 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
zp[2]:25 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
zp[2]:25 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
zp[1]:27 [ frame_cnt ]
|
||||
zp[2]:28 [ main::$28 main::$7 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp[2]:30 [ main::$29 main::$11 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
zp[2]:30 [ main::$29 main::$11 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
||||
reg byte a [ bitmap_plot::y#0 ]
|
||||
reg byte x [ bitmap_plot::$1 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
|
@ -150,8 +150,8 @@ bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
|
||||
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
|
||||
[74] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 )
|
||||
[74] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 )
|
||||
[74] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 )
|
||||
[74] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 )
|
||||
[75] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
|
||||
[76] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8
|
||||
[77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -205,8 +205,8 @@
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
zp[2]:4 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$13 ]
|
||||
reg byte a [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
|
||||
zp[2]:4 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ]
|
||||
reg byte a [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[2]:6 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:8 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
|
@ -1,45 +1,10 @@
|
||||
De-inlining cast (word)SCREEN
|
||||
Identified constant variable (byte*) D011
|
||||
Identified constant variable (byte) RST8
|
||||
Identified constant variable (byte) ECM
|
||||
Identified constant variable (byte) BMM
|
||||
Identified constant variable (byte) DEN
|
||||
Identified constant variable (byte) RSEL
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte*) D016
|
||||
Identified constant variable (byte) MCM
|
||||
Identified constant variable (byte) CSEL
|
||||
Identified constant variable (byte*) D018
|
||||
Identified constant variable (byte*) BGCOL
|
||||
Identified constant variable (byte*) FGCOL
|
||||
Identified constant variable (byte*) COLS
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte) plots_cnt
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) plots::@4
|
||||
Culled Empty Block (label) plots::@3
|
||||
Culled Empty Block (label) plots::@5
|
||||
Culled Empty Block (label) plots::@6
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) init_plot_tables::@8
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) init_screen::@4
|
||||
Culled Empty Block (label) init_screen::@5
|
||||
Culled Empty Block (label) init_screen::@6
|
||||
Culled Empty Block (label) init_screen::@10
|
||||
Culled Empty Block (label) init_screen::@9
|
||||
Culled Empty Block (label) init_screen::@11
|
||||
Culled Empty Block (label) init_screen::@12
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@5
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @1
|
||||
*((const byte*) BGCOL) ← (number) 0
|
||||
*((const byte*) FGCOL) ← (number) 0
|
||||
(byte~) main::$0 ← (const byte) BMM | (const byte) DEN
|
||||
@ -51,34 +16,34 @@ main: scope:[main] from @5
|
||||
(number~) main::$4 ← (number~) main::$3 | (word)(const nomodify byte*) BITMAP/(number) $400
|
||||
*((const byte*) D018) ← (byte)(number~) main::$4
|
||||
call init_screen
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main
|
||||
call init_plot_tables
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@2 main::@6 main::@7
|
||||
(bool~) main::$7 ← *((const byte*) RASTER) != (number) $ff
|
||||
if((bool~) main::$7) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
main::@3: scope:[main] from main
|
||||
call init_plot_tables
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@1 main::@4 main::@5
|
||||
(bool~) main::$7 ← *((const byte*) RASTER) != (number) $ff
|
||||
if((bool~) main::$7) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
*((const byte*) BGCOL) ← ++ *((const byte*) BGCOL)
|
||||
call plots
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@3
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@2
|
||||
*((const byte*) BGCOL) ← -- *((const byte*) BGCOL)
|
||||
if(true) goto main::@2
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@7
|
||||
main::@return: scope:[main] from main::@5
|
||||
return
|
||||
to:@return
|
||||
|
||||
(void()) plots()
|
||||
plots: scope:[plots] from main::@3
|
||||
plots: scope:[plots] from main::@2
|
||||
(byte) plots::i#0 ← (byte) 0
|
||||
to:plots::@1
|
||||
plots::@1: scope:[plots] from plots plots::@7
|
||||
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@7/(byte) plots::i#1 )
|
||||
plots::@1: scope:[plots] from plots plots::@3
|
||||
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
|
||||
(bool~) plots::$0 ← (byte) plots::i#2 < (const byte) plots_cnt
|
||||
if((bool~) plots::$0) goto plots::@2
|
||||
to:plots::@return
|
||||
@ -87,8 +52,8 @@ plots::@2: scope:[plots] from plots::@1
|
||||
(byte) plot::x#0 ← *((const byte*) plots_x + (byte) plots::i#3)
|
||||
(byte) plot::y#0 ← *((const byte*) plots_y + (byte) plots::i#3)
|
||||
call plot
|
||||
to:plots::@7
|
||||
plots::@7: scope:[plots] from plots::@2
|
||||
to:plots::@3
|
||||
plots::@3: scope:[plots] from plots::@2
|
||||
(byte) plots::i#4 ← phi( plots::@2/(byte) plots::i#3 )
|
||||
(byte) plots::i#1 ← ++ (byte) plots::i#4
|
||||
to:plots::@1
|
||||
@ -120,7 +85,7 @@ plot::@return: scope:[plot] from plot
|
||||
to:@return
|
||||
|
||||
(void()) init_plot_tables()
|
||||
init_plot_tables: scope:[init_plot_tables] from main::@5
|
||||
init_plot_tables: scope:[init_plot_tables] from main::@3
|
||||
(byte) init_plot_tables::bits#0 ← (byte) $80
|
||||
(byte) init_plot_tables::x#0 ← (byte) 0
|
||||
to:init_plot_tables::@1
|
||||
@ -199,31 +164,31 @@ init_screen::@2: scope:[init_screen] from init_screen::@1
|
||||
to:init_screen::@1
|
||||
init_screen::@3: scope:[init_screen] from init_screen::@1
|
||||
(byte*) init_screen::c#0 ← (const byte*) SCREEN
|
||||
to:init_screen::@7
|
||||
init_screen::@7: scope:[init_screen] from init_screen::@3 init_screen::@8
|
||||
(byte*) init_screen::c#2 ← phi( init_screen::@3/(byte*) init_screen::c#0 init_screen::@8/(byte*) init_screen::c#1 )
|
||||
to:init_screen::@4
|
||||
init_screen::@4: scope:[init_screen] from init_screen::@3 init_screen::@5
|
||||
(byte*) init_screen::c#2 ← phi( init_screen::@3/(byte*) init_screen::c#0 init_screen::@5/(byte*) init_screen::c#1 )
|
||||
(byte*~) init_screen::$1 ← (const byte*) SCREEN + (number) $400
|
||||
(bool~) init_screen::$2 ← (byte*) init_screen::c#2 != (byte*~) init_screen::$1
|
||||
if((bool~) init_screen::$2) goto init_screen::@8
|
||||
if((bool~) init_screen::$2) goto init_screen::@5
|
||||
to:init_screen::@return
|
||||
init_screen::@8: scope:[init_screen] from init_screen::@7
|
||||
(byte*) init_screen::c#3 ← phi( init_screen::@7/(byte*) init_screen::c#2 )
|
||||
init_screen::@5: scope:[init_screen] from init_screen::@4
|
||||
(byte*) init_screen::c#3 ← phi( init_screen::@4/(byte*) init_screen::c#2 )
|
||||
*((byte*) init_screen::c#3) ← (number) $14
|
||||
(byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#3
|
||||
to:init_screen::@7
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@7
|
||||
to:init_screen::@4
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@4
|
||||
return
|
||||
to:@return
|
||||
@5: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@6
|
||||
@6: scope:[] from @5
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) BGCOL = (byte*)(number) $d020
|
||||
@ -290,8 +255,8 @@ SYMBOL TABLE SSA
|
||||
(label) init_screen::@1
|
||||
(label) init_screen::@2
|
||||
(label) init_screen::@3
|
||||
(label) init_screen::@7
|
||||
(label) init_screen::@8
|
||||
(label) init_screen::@4
|
||||
(label) init_screen::@5
|
||||
(label) init_screen::@return
|
||||
(byte*) init_screen::b
|
||||
(byte*) init_screen::b#0
|
||||
@ -311,11 +276,11 @@ SYMBOL TABLE SSA
|
||||
(number~) main::$3
|
||||
(number~) main::$4
|
||||
(bool~) main::$7
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@return
|
||||
(void()) plot((byte) plot::x , (byte) plot::y)
|
||||
(byte*~) plot::$4
|
||||
@ -350,7 +315,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) plots::$0
|
||||
(label) plots::@1
|
||||
(label) plots::@2
|
||||
(label) plots::@7
|
||||
(label) plots::@3
|
||||
(label) plots::@return
|
||||
(byte) plots::i
|
||||
(byte) plots::i#0
|
||||
@ -471,14 +436,14 @@ Identical Phi Values (byte) plot::y#1 (byte) plot::y#0
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Identified duplicate assignment right side [73] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7
|
||||
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||
Simple Condition (bool~) main::$7 [13] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2
|
||||
Simple Condition (bool~) main::$7 [13] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1
|
||||
Simple Condition (bool~) plots::$0 [22] if((byte) plots::i#2<(const byte) plots_cnt) goto plots::@2
|
||||
Simple Condition (bool~) init_plot_tables::$3 [52] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2
|
||||
Simple Condition (bool~) init_plot_tables::$4 [56] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1
|
||||
Simple Condition (bool~) init_plot_tables::$11 [69] if((byte~) init_plot_tables::$9!=(byte) 7) goto init_plot_tables::@6
|
||||
Simple Condition (bool~) init_plot_tables::$13 [73] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5
|
||||
Simple Condition (bool~) init_screen::$0 [79] if((byte*) init_screen::b#2!=(const nomodify byte*) BITMAP+(word) $2000) goto init_screen::@2
|
||||
Simple Condition (bool~) init_screen::$2 [86] if((byte*) init_screen::c#2!=(byte*~) init_screen::$1) goto init_screen::@8
|
||||
Simple Condition (bool~) init_screen::$2 [86] if((byte*) init_screen::c#2!=(byte*~) init_screen::$1) goto init_screen::@5
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant right-side identified [2] (byte~) main::$0 ← (const byte) BMM | (const byte) DEN
|
||||
Constant right-side identified [6] (word~) main::$11 ← (word)(const byte*) SCREEN
|
||||
@ -498,7 +463,7 @@ Constant (const byte*) init_screen::b#0 = BITMAP
|
||||
Constant (const byte*) init_screen::c#0 = SCREEN
|
||||
Constant (const byte*) init_screen::$1 = SCREEN+$400
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [17] if(true) goto main::@2
|
||||
if() condition always true - replacing block destination [17] if(true) goto main::@1
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Resolved ranged next value [54] init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to ++
|
||||
Resolved ranged comparison value [56] if(init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1 to (number) 0
|
||||
@ -561,16 +526,16 @@ Constant inlined init_plot_tables::x#0 = (byte) 0
|
||||
Constant inlined init_screen::c#0 = (const byte*) SCREEN
|
||||
Constant inlined init_screen::b#0 = (const nomodify byte*) BITMAP
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting init_plot_tables::@9(between init_plot_tables::@2 and init_plot_tables::@1)
|
||||
Added new block during phi lifting init_plot_tables::@10(between init_plot_tables::@1 and init_plot_tables::@2)
|
||||
Added new block during phi lifting init_plot_tables::@11(between init_plot_tables::@6 and init_plot_tables::@5)
|
||||
Added new block during phi lifting init_plot_tables::@12(between init_plot_tables::@5 and init_plot_tables::@6)
|
||||
Added new block during phi lifting init_plot_tables::@8(between init_plot_tables::@2 and init_plot_tables::@1)
|
||||
Added new block during phi lifting init_plot_tables::@9(between init_plot_tables::@1 and init_plot_tables::@2)
|
||||
Added new block during phi lifting init_plot_tables::@10(between init_plot_tables::@6 and init_plot_tables::@5)
|
||||
Added new block during phi lifting init_plot_tables::@11(between init_plot_tables::@5 and init_plot_tables::@6)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@5
|
||||
Adding NOP phi() at start of main::@6
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@4
|
||||
Adding NOP phi() at start of plots
|
||||
Adding NOP phi() at start of init_plot_tables
|
||||
Adding NOP phi() at start of init_plot_tables::@3
|
||||
@ -594,26 +559,21 @@ Coalesced [70] init_plot_tables::bits#6 ← init_plot_tables::bits#1
|
||||
Coalesced [80] init_screen::c#4 ← init_screen::c#1
|
||||
Coalesced [83] init_screen::b#4 ← init_screen::b#1
|
||||
Coalesced down to 7 phi equivalence classes
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) init_plot_tables::@3
|
||||
Culled Empty Block (label) init_plot_tables::@4
|
||||
Culled Empty Block (label) init_plot_tables::@10
|
||||
Culled Empty Block (label) init_plot_tables::@11
|
||||
Culled Empty Block (label) init_plot_tables::@12
|
||||
Culled Empty Block (label) init_plot_tables::@9
|
||||
Culled Empty Block (label) init_plot_tables::@8
|
||||
Culled Empty Block (label) init_screen::@3
|
||||
Renumbering block @5 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@5 to main::@3
|
||||
Renumbering block main::@7 to main::@4
|
||||
Renumbering block plots::@7 to plots::@3
|
||||
Renumbering block main::@5 to main::@4
|
||||
Renumbering block init_plot_tables::@5 to init_plot_tables::@3
|
||||
Renumbering block init_plot_tables::@6 to init_plot_tables::@4
|
||||
Renumbering block init_plot_tables::@7 to init_plot_tables::@5
|
||||
Renumbering block init_plot_tables::@10 to init_plot_tables::@6
|
||||
Renumbering block init_screen::@7 to init_screen::@3
|
||||
Renumbering block init_screen::@8 to init_screen::@4
|
||||
Renumbering block init_plot_tables::@9 to init_plot_tables::@6
|
||||
Renumbering block init_screen::@4 to init_screen::@3
|
||||
Renumbering block init_screen::@5 to init_screen::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,5 +1,3 @@
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -61,7 +59,7 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inlining constant with var siblings (const byte) main::c#0
|
||||
Constant inlined main::c#0 = (byte) 1
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@3(between main::@1 and main::@1)
|
||||
Added new block during phi lifting main::@2(between main::@1 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -73,7 +71,7 @@ Created 1 initial phi equivalence classes
|
||||
Coalesced [12] main::c#3 ← main::c#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,22 +1,10 @@
|
||||
Identified constant variable (bool) bool_const_if::b
|
||||
Identified constant variable (byte) bool_const_vars::a
|
||||
Identified constant variable (byte) bool_const_inline::a
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) bool_const_if::@2
|
||||
Culled Empty Block (label) bool_const_if::@4
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) bool_const_vars::@2
|
||||
Culled Empty Block (label) bool_const_vars::@4
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) bool_const_inline::@2
|
||||
Culled Empty Block (label) bool_const_inline::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@4
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @4
|
||||
main: scope:[main] from @1
|
||||
call bool_const_if
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
@ -34,14 +22,14 @@ main::@return: scope:[main] from main::@3
|
||||
(void()) bool_const_if()
|
||||
bool_const_if: scope:[bool_const_if] from main
|
||||
if((const bool) bool_const_if::b) goto bool_const_if::@1
|
||||
to:bool_const_if::@3
|
||||
to:bool_const_if::@2
|
||||
bool_const_if::@1: scope:[bool_const_if] from bool_const_if
|
||||
*((const nomodify byte*) SCREEN + (number) 0) ← (byte) 't'
|
||||
to:bool_const_if::@return
|
||||
bool_const_if::@3: scope:[bool_const_if] from bool_const_if
|
||||
bool_const_if::@2: scope:[bool_const_if] from bool_const_if
|
||||
*((const nomodify byte*) SCREEN + (number) 0) ← (byte) 'f'
|
||||
to:bool_const_if::@return
|
||||
bool_const_if::@return: scope:[bool_const_if] from bool_const_if::@1 bool_const_if::@3
|
||||
bool_const_if::@return: scope:[bool_const_if] from bool_const_if::@1 bool_const_if::@2
|
||||
return
|
||||
to:@return
|
||||
|
||||
@ -61,14 +49,14 @@ bool_const_vars: scope:[bool_const_vars] from main::@1
|
||||
(bool~) bool_const_vars::$9 ← (bool~) bool_const_vars::$8 || false
|
||||
(bool) bool_const_vars::b#0 ← (bool~) bool_const_vars::$9
|
||||
if((bool) bool_const_vars::b#0) goto bool_const_vars::@1
|
||||
to:bool_const_vars::@3
|
||||
to:bool_const_vars::@2
|
||||
bool_const_vars::@1: scope:[bool_const_vars] from bool_const_vars
|
||||
*((const nomodify byte*) SCREEN + (number) 1) ← (byte) 't'
|
||||
to:bool_const_vars::@return
|
||||
bool_const_vars::@3: scope:[bool_const_vars] from bool_const_vars
|
||||
bool_const_vars::@2: scope:[bool_const_vars] from bool_const_vars
|
||||
*((const nomodify byte*) SCREEN + (number) 1) ← (byte) 'f'
|
||||
to:bool_const_vars::@return
|
||||
bool_const_vars::@return: scope:[bool_const_vars] from bool_const_vars::@1 bool_const_vars::@3
|
||||
bool_const_vars::@return: scope:[bool_const_vars] from bool_const_vars::@1 bool_const_vars::@2
|
||||
return
|
||||
to:@return
|
||||
|
||||
@ -83,32 +71,32 @@ bool_const_inline: scope:[bool_const_inline] from main::@2
|
||||
(bool~) bool_const_inline::$6 ← ! (bool~) bool_const_inline::$5
|
||||
(bool~) bool_const_inline::$7 ← (bool~) bool_const_inline::$4 || (bool~) bool_const_inline::$6
|
||||
if((bool~) bool_const_inline::$7) goto bool_const_inline::@1
|
||||
to:bool_const_inline::@3
|
||||
to:bool_const_inline::@2
|
||||
bool_const_inline::@1: scope:[bool_const_inline] from bool_const_inline
|
||||
*((const nomodify byte*) SCREEN + (number) 2) ← (byte) 't'
|
||||
to:bool_const_inline::@return
|
||||
bool_const_inline::@3: scope:[bool_const_inline] from bool_const_inline
|
||||
bool_const_inline::@2: scope:[bool_const_inline] from bool_const_inline
|
||||
*((const nomodify byte*) SCREEN + (number) 2) ← (byte) 'f'
|
||||
to:bool_const_inline::@return
|
||||
bool_const_inline::@return: scope:[bool_const_inline] from bool_const_inline::@1 bool_const_inline::@3
|
||||
bool_const_inline::@return: scope:[bool_const_inline] from bool_const_inline::@1 bool_const_inline::@2
|
||||
return
|
||||
to:@return
|
||||
@4: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@5
|
||||
@5: scope:[] from @4
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @4
|
||||
(label) @5
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) SCREEN = (byte*)(number) $400
|
||||
(void()) bool_const_if()
|
||||
(label) bool_const_if::@1
|
||||
(label) bool_const_if::@3
|
||||
(label) bool_const_if::@2
|
||||
(label) bool_const_if::@return
|
||||
(const bool) bool_const_if::b = true
|
||||
(void()) bool_const_inline()
|
||||
@ -121,7 +109,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) bool_const_inline::$6
|
||||
(bool~) bool_const_inline::$7
|
||||
(label) bool_const_inline::@1
|
||||
(label) bool_const_inline::@3
|
||||
(label) bool_const_inline::@2
|
||||
(label) bool_const_inline::@return
|
||||
(const byte) bool_const_inline::a = (byte) $17
|
||||
(void()) bool_const_vars()
|
||||
@ -136,7 +124,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) bool_const_vars::$8
|
||||
(bool~) bool_const_vars::$9
|
||||
(label) bool_const_vars::@1
|
||||
(label) bool_const_vars::@3
|
||||
(label) bool_const_vars::@2
|
||||
(label) bool_const_vars::@return
|
||||
(const byte) bool_const_vars::a = (byte) $e
|
||||
(bool) bool_const_vars::b
|
||||
@ -232,14 +220,14 @@ Constant (const bool) bool_const_inline::$2 = bool_const_inline::a==$f
|
||||
Constant (const bool) bool_const_inline::$6 = $15>=bool_const_inline::a
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [4] if((const bool) bool_const_if::b) goto bool_const_if::@1
|
||||
if() condition always false - eliminating [17] if((const bool) bool_const_vars::$0) goto bool_const_vars::@6
|
||||
if() condition always false - eliminating [17] if((const bool) bool_const_vars::$0) goto bool_const_vars::@4
|
||||
if() condition always true - replacing block destination [28] if((const bool) bool_const_inline::$0) goto bool_const_inline::@1
|
||||
if() condition always false - eliminating if(false) goto bool_const_vars::@1
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_vars::$4) goto bool_const_vars::@5
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_vars::$2) goto bool_const_vars::@6
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_vars::$4) goto bool_const_vars::@3
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_vars::$2) goto bool_const_vars::@4
|
||||
if() condition always false - eliminating if((const bool) bool_const_inline::$6) goto bool_const_inline::@1
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_inline::$1) goto bool_const_inline::@7
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_vars::$5) goto bool_const_vars::@5
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_inline::$1) goto bool_const_inline::@5
|
||||
if() condition always true - replacing block destination if((const bool) bool_const_vars::$5) goto bool_const_vars::@3
|
||||
if() condition always false - eliminating if((const bool) bool_const_inline::$2) goto bool_const_inline::@1
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Simplifying expression containing zero SCREEN in [5] *((const nomodify byte*) SCREEN + (byte) 0) ← (byte) 't'
|
||||
@ -258,20 +246,20 @@ Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating unused constant (const byte) bool_const_vars::a
|
||||
Eliminating unused constant (const byte) bool_const_inline::a
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block bool_const_if::@3
|
||||
Removing unused block bool_const_if::@2
|
||||
Removing unused block bool_const_vars::@1
|
||||
Removing unused block bool_const_inline::@2
|
||||
Removing unused block bool_const_inline::@3
|
||||
Removing unused block bool_const_inline::@4
|
||||
Removing unused block bool_const_vars::@6
|
||||
Removing unused block bool_const_inline::@5
|
||||
Removing unused block bool_const_inline::@6
|
||||
Removing unused block bool_const_vars::@8
|
||||
Removing unused block bool_const_inline::@7
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Consolidated array index constant in *(SCREEN+1)
|
||||
Consolidated array index constant in *(SCREEN+2)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -279,9 +267,9 @@ Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of bool_const_inline
|
||||
Adding NOP phi() at start of bool_const_vars
|
||||
Adding NOP phi() at start of bool_const_vars::@7
|
||||
Adding NOP phi() at start of bool_const_vars::@6
|
||||
Adding NOP phi() at start of bool_const_vars::@5
|
||||
Adding NOP phi() at start of bool_const_vars::@4
|
||||
Adding NOP phi() at start of bool_const_vars::@3
|
||||
Adding NOP phi() at start of bool_const_if
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
@ -289,13 +277,12 @@ Calls in [main] to bool_const_if:6 bool_const_vars:8 bool_const_inline:10
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) bool_const_vars::@7
|
||||
Culled Empty Block (label) bool_const_vars::@6
|
||||
Culled Empty Block (label) bool_const_vars::@5
|
||||
Renumbering block @4 to @1
|
||||
Renumbering block bool_const_vars::@3 to bool_const_vars::@1
|
||||
Culled Empty Block (label) bool_const_vars::@4
|
||||
Culled Empty Block (label) bool_const_vars::@3
|
||||
Renumbering block bool_const_vars::@2 to bool_const_vars::@1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,15 +1,10 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) isSet::@1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
main: scope:[main] from @1
|
||||
(byte) main::i#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
@ -20,19 +15,19 @@ main::@1: scope:[main] from main main::@3
|
||||
(bool) isSet::b#0 ← (bool~) main::$1
|
||||
call isSet
|
||||
(bool) isSet::return#0 ← (bool) isSet::return#2
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@1
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@1
|
||||
(byte) main::i#6 ← phi( main::@1/(byte) main::i#2 )
|
||||
(bool) isSet::return#3 ← phi( main::@1/(bool) isSet::return#0 )
|
||||
(bool~) main::$2 ← (bool) isSet::return#3
|
||||
if((bool~) main::$2) goto main::@2
|
||||
to:main::@4
|
||||
main::@2: scope:[main] from main::@7
|
||||
(byte) main::i#3 ← phi( main::@7/(byte) main::i#6 )
|
||||
main::@2: scope:[main] from main::@5
|
||||
(byte) main::i#3 ← phi( main::@5/(byte) main::i#6 )
|
||||
*((const byte*) main::screen + (byte) main::i#3) ← (byte) '*'
|
||||
to:main::@3
|
||||
main::@4: scope:[main] from main::@7
|
||||
(byte) main::i#4 ← phi( main::@7/(byte) main::i#6 )
|
||||
main::@4: scope:[main] from main::@5
|
||||
(byte) main::i#4 ← phi( main::@5/(byte) main::i#6 )
|
||||
*((const byte*) main::screen + (byte) main::i#4) ← (byte) ' '
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@4
|
||||
@ -59,16 +54,16 @@ isSet::@return: scope:[isSet] from isSet
|
||||
(bool) isSet::return#2 ← (bool) isSet::return#4
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(bool()) isSet((byte) isSet::i , (bool) isSet::b)
|
||||
@ -97,7 +92,7 @@ SYMBOL TABLE SSA
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@7
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
@ -154,10 +149,10 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Constant inlined main::i#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@8(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@3 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
CALL GRAPH
|
||||
@ -167,10 +162,8 @@ Calls in [main] to isSet:10
|
||||
Created 1 initial phi equivalence classes
|
||||
Coalesced [18] main::i#7 ← main::i#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) main::@8
|
||||
Renumbering block @2 to @1
|
||||
Renumbering block main::@7 to main::@5
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,4 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -95,7 +94,7 @@ Simplifying constant integer cast $15
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) $15
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $a) goto main::@5
|
||||
Simple Condition (bool~) main::$0 [4] if((byte) main::i#2<(byte) $a) goto main::@4
|
||||
Simple Condition (bool~) main::$2 [10] if((byte~) main::$1==(byte) 0) goto main::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Negating conditional jump and destination [4] if((byte) main::i#2>=(byte) $a) goto main::@2
|
||||
@ -104,7 +103,7 @@ Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Constant inlined main::i#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@6(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -117,8 +116,7 @@ Created 1 initial phi equivalence classes
|
||||
Coalesced [14] main::i#5 ← main::i#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@6
|
||||
Renumbering block main::@5 to main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,22 +1,10 @@
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) bool_and::@5
|
||||
Culled Empty Block (label) bool_and::@6
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) bool_or::@5
|
||||
Culled Empty Block (label) bool_or::@6
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) bool_not::@5
|
||||
Culled Empty Block (label) bool_not::@6
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) bool_complex::@5
|
||||
Culled Empty Block (label) bool_complex::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@5
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @1
|
||||
call bool_and
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
@ -160,16 +148,16 @@ bool_complex::@3: scope:[bool_complex] from bool_complex::@2 bool_complex::@4
|
||||
bool_complex::@return: scope:[bool_complex] from bool_complex::@3
|
||||
return
|
||||
to:@return
|
||||
@5: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@6
|
||||
@6: scope:[] from @5
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) bool_and()
|
||||
@ -380,10 +368,10 @@ Finalized unsigned number type (byte) $15
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias bool_complex::$5 = bool_complex::$1
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) bool_and::$0 [9] if((byte) bool_and::i#2<(byte) $a) goto bool_and::@7
|
||||
Simple Condition (bool~) bool_and::$0 [9] if((byte) bool_and::i#2<(byte) $a) goto bool_and::@5
|
||||
Simple Condition (bool~) bool_or::$0 [19] if((byte) bool_or::i#2<(byte) $a) goto bool_or::@2
|
||||
Simple Condition (bool~) bool_not::$0 [29] if((byte) bool_not::i#2<(byte) $a) goto bool_not::@4
|
||||
Simple Condition (bool~) bool_complex::$0 [41] if((byte) bool_complex::i#2<(byte) $a) goto bool_complex::@8
|
||||
Simple Condition (bool~) bool_complex::$0 [41] if((byte) bool_complex::i#2<(byte) $a) goto bool_complex::@6
|
||||
Simple Condition (bool~) bool_and::$2 [48] if((byte~) bool_and::$1==(byte) 0) goto bool_and::@2
|
||||
Simple Condition (bool~) bool_or::$2 [49] if((byte~) bool_or::$1==(byte) 0) goto bool_or::@2
|
||||
Simple Condition (bool~) bool_not::$2 [50] if((byte~) bool_not::$1==(byte) 0) goto bool_not::@4
|
||||
@ -392,7 +380,7 @@ Simple Condition (bool~) bool_complex::$2 [52] if((byte~) bool_complex::$5==(byt
|
||||
Simple Condition (bool~) bool_complex::$6 [53] if((byte~) bool_complex::$5==(byte) 0) goto bool_complex::@4
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Negating conditional jump and destination [9] if((byte) bool_and::i#2>=(byte) $a) goto bool_and::@4
|
||||
Negating conditional jump and destination [41] if((byte) bool_complex::i#2>=(byte) $a) goto bool_complex::@7
|
||||
Negating conditional jump and destination [41] if((byte) bool_complex::i#2>=(byte) $a) goto bool_complex::@5
|
||||
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
||||
Inlining constant with var siblings (const byte) bool_and::i#0
|
||||
Inlining constant with var siblings (const byte) bool_or::i#0
|
||||
@ -403,13 +391,13 @@ Constant inlined bool_or::i#0 = (byte) 0
|
||||
Constant inlined bool_not::i#0 = (byte) 0
|
||||
Constant inlined bool_and::i#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting bool_and::@8(between bool_and::@3 and bool_and::@1)
|
||||
Added new block during phi lifting bool_or::@8(between bool_or::@3 and bool_or::@1)
|
||||
Added new block during phi lifting bool_not::@8(between bool_not::@3 and bool_not::@1)
|
||||
Added new block during phi lifting bool_complex::@10(between bool_complex::@3 and bool_complex::@1)
|
||||
Added new block during phi lifting bool_and::@6(between bool_and::@3 and bool_and::@1)
|
||||
Added new block during phi lifting bool_or::@6(between bool_or::@3 and bool_or::@1)
|
||||
Added new block during phi lifting bool_not::@6(between bool_not::@3 and bool_not::@1)
|
||||
Added new block during phi lifting bool_complex::@8(between bool_complex::@3 and bool_complex::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -430,19 +418,12 @@ Coalesced [37] bool_not::i#6 ← bool_not::i#1
|
||||
Coalesced [48] bool_or::i#6 ← bool_or::i#1
|
||||
Coalesced [59] bool_and::i#6 ← bool_and::i#1
|
||||
Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) bool_complex::@10
|
||||
Culled Empty Block (label) bool_not::@8
|
||||
Culled Empty Block (label) bool_or::@8
|
||||
Culled Empty Block (label) bool_and::@8
|
||||
Renumbering block @5 to @1
|
||||
Renumbering block bool_and::@7 to bool_and::@5
|
||||
Renumbering block bool_or::@7 to bool_or::@5
|
||||
Renumbering block bool_not::@7 to bool_not::@5
|
||||
Renumbering block bool_complex::@7 to bool_complex::@5
|
||||
Renumbering block bool_complex::@8 to bool_complex::@6
|
||||
Renumbering block bool_complex::@9 to bool_complex::@7
|
||||
Culled Empty Block (label) bool_complex::@8
|
||||
Culled Empty Block (label) bool_not::@6
|
||||
Culled Empty Block (label) bool_or::@6
|
||||
Culled Empty Block (label) bool_and::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,12 +1,3 @@
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@12
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@10
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -17,16 +8,16 @@ CONTROL FLOW GRAPH SSA
|
||||
main: scope:[main] from @1
|
||||
(bool) framedone#9 ← phi( @1/(bool) framedone#8 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@6
|
||||
(bool) framedone#7 ← phi( main/(bool) framedone#9 main::@6/(bool) framedone#1 )
|
||||
if(true) goto main::@4
|
||||
main::@1: scope:[main] from main main::@3
|
||||
(bool) framedone#7 ← phi( main/(bool) framedone#9 main::@3/(bool) framedone#1 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@4: scope:[main] from main::@1 main::@4
|
||||
(bool) framedone#4 ← phi( main::@1/(bool) framedone#7 main::@4/(bool) framedone#4 )
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
(bool) framedone#4 ← phi( main::@1/(bool) framedone#7 main::@2/(bool) framedone#4 )
|
||||
(bool~) main::$0 ← ! (bool) framedone#4
|
||||
if((bool~) main::$0) goto main::@4
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@4
|
||||
if((bool~) main::$0) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(bool) framedone#1 ← false
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
@ -63,8 +54,8 @@ SYMBOL TABLE SSA
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(label) main::@1
|
||||
(label) main::@4
|
||||
(label) main::@6
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
|
||||
Alias framedone#2 = framedone#5 framedone#7
|
||||
@ -80,7 +71,7 @@ Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Constant (const bool) framedone#0 = true
|
||||
Constant (const bool) framedone#1 = false
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [3] if(true) goto main::@4
|
||||
if() condition always true - replacing block destination [3] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
@ -94,15 +85,14 @@ Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@6
|
||||
Adding NOP phi() at start of main::@3
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 1 initial phi equivalence classes
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@6
|
||||
Renumbering block main::@4 to main::@2
|
||||
Culled Empty Block (label) main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,4 +1,3 @@
|
||||
Culled Empty Block (label) main::@1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -14,13 +13,13 @@ main: scope:[main] from @1
|
||||
*((bool*) main::bscreen#1) ← true
|
||||
(bool~) main::$1 ← ! *((bool*) main::bscreen#1)
|
||||
if((bool~) main::$1) goto main::@return
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(bool*) main::bscreen#3 ← phi( main/(bool*) main::bscreen#1 )
|
||||
(bool*) main::bscreen#2 ← ++ (bool*) main::bscreen#3
|
||||
*((bool*) main::bscreen#2) ← true
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main main::@2
|
||||
main::@return: scope:[main] from main main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
@ -38,7 +37,7 @@ SYMBOL TABLE SSA
|
||||
(void()) main()
|
||||
(bool*~) main::$0
|
||||
(bool~) main::$1
|
||||
(label) main::@2
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(bool*) main::bscreen
|
||||
(bool*) main::bscreen#0
|
||||
@ -96,7 +95,6 @@ Calls in [] to main:2
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Renumbering block main::@2 to main::@1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,22 +1,10 @@
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) bool_and::@5
|
||||
Culled Empty Block (label) bool_and::@6
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) bool_or::@5
|
||||
Culled Empty Block (label) bool_or::@6
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) bool_not::@5
|
||||
Culled Empty Block (label) bool_not::@6
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) bool_complex::@5
|
||||
Culled Empty Block (label) bool_complex::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@5
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @1
|
||||
call bool_and
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
@ -171,16 +159,16 @@ bool_complex::@3: scope:[bool_complex] from bool_complex::@2 bool_complex::@4
|
||||
bool_complex::@return: scope:[bool_complex] from bool_complex::@3
|
||||
return
|
||||
to:@return
|
||||
@5: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@6
|
||||
@6: scope:[] from @5
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) bool_and()
|
||||
@ -415,7 +403,7 @@ Finalized unsigned number type (byte) $15
|
||||
Finalized unsigned number type (byte) $15
|
||||
Finalized unsigned number type (byte) $15
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Simple Condition (bool) bool_and::o1#0 [9] if((byte) bool_and::i#2<(byte) $a) goto bool_and::@7
|
||||
Simple Condition (bool) bool_and::o1#0 [9] if((byte) bool_and::i#2<(byte) $a) goto bool_and::@5
|
||||
Simple Condition (bool) bool_or::o1#0 [19] if((byte) bool_or::i#2<(byte) $a) goto bool_or::@2
|
||||
Simple Condition (bool) bool_not::o1#0 [29] if((byte) bool_not::i#2<(byte) $a) goto bool_not::@4
|
||||
Simple Condition (bool) bool_and::o2#0 [46] if((byte~) bool_and::$1==(byte) 0) goto bool_and::@2
|
||||
@ -432,13 +420,13 @@ Constant inlined bool_or::i#0 = (byte) 0
|
||||
Constant inlined bool_not::i#0 = (byte) 0
|
||||
Constant inlined bool_and::i#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting bool_and::@8(between bool_and::@3 and bool_and::@1)
|
||||
Added new block during phi lifting bool_or::@8(between bool_or::@3 and bool_or::@1)
|
||||
Added new block during phi lifting bool_not::@8(between bool_not::@3 and bool_not::@1)
|
||||
Added new block during phi lifting bool_complex::@10(between bool_complex::@3 and bool_complex::@1)
|
||||
Added new block during phi lifting bool_and::@6(between bool_and::@3 and bool_and::@1)
|
||||
Added new block during phi lifting bool_or::@6(between bool_or::@3 and bool_or::@1)
|
||||
Added new block during phi lifting bool_not::@6(between bool_not::@3 and bool_not::@1)
|
||||
Added new block during phi lifting bool_complex::@8(between bool_complex::@3 and bool_complex::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -459,19 +447,12 @@ Coalesced [39] bool_not::i#6 ← bool_not::i#1
|
||||
Coalesced [50] bool_or::i#6 ← bool_or::i#1
|
||||
Coalesced [61] bool_and::i#6 ← bool_and::i#1
|
||||
Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) bool_complex::@10
|
||||
Culled Empty Block (label) bool_not::@8
|
||||
Culled Empty Block (label) bool_or::@8
|
||||
Culled Empty Block (label) bool_and::@8
|
||||
Renumbering block @5 to @1
|
||||
Renumbering block bool_and::@7 to bool_and::@5
|
||||
Renumbering block bool_or::@7 to bool_or::@5
|
||||
Renumbering block bool_not::@7 to bool_not::@5
|
||||
Renumbering block bool_complex::@7 to bool_complex::@5
|
||||
Renumbering block bool_complex::@8 to bool_complex::@6
|
||||
Renumbering block bool_complex::@9 to bool_complex::@7
|
||||
Culled Empty Block (label) bool_complex::@8
|
||||
Culled Empty Block (label) bool_not::@6
|
||||
Culled Empty Block (label) bool_or::@6
|
||||
Culled Empty Block (label) bool_and::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,9 +1,3 @@
|
||||
Identified constant variable (byte) STAR
|
||||
Identified constant variable (byte) main::x0
|
||||
Identified constant variable (byte) main::y0
|
||||
Identified constant variable (byte) main::x1
|
||||
Identified constant variable (byte) main::y1
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -243,8 +237,8 @@ Constant inlined main::y#0 = (const byte) main::y0
|
||||
Constant inlined main::$4 = (const byte*) SCREEN+(const byte) main::y0*(byte) $28
|
||||
Constant inlined main::e#0 = (const byte) main::yd#0/(byte) 2
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@1 and main::@2)
|
||||
Added new block during phi lifting main::@4(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@1 and main::@2)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -266,8 +260,8 @@ Coalesced [26] main::e#7 ← main::e#1
|
||||
Coalesced (already) [27] main::y#6 ← main::y#2
|
||||
Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,9 +1,3 @@
|
||||
Identified constant variable (byte) main::STAR
|
||||
Identified constant variable (byte) main::x0
|
||||
Identified constant variable (byte) main::y0
|
||||
Identified constant variable (byte) main::x1
|
||||
Identified constant variable (byte) main::y1
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -249,8 +243,8 @@ Constant inlined main::xd#0 = (const byte) main::x1
|
||||
Constant inlined main::e#0 = (const byte) main::y1/(byte) 2
|
||||
Constant inlined main::yd#0 = (const byte) main::y1
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@1 and main::@2)
|
||||
Added new block during phi lifting main::@4(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@1 and main::@2)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -272,8 +266,8 @@ Coalesced [27] main::e#7 ← main::e#1
|
||||
Coalesced (already) [28] main::y#6 ← main::y#2
|
||||
Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,102 +1,7 @@
|
||||
Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
|
||||
Fixing pointer addition (word*~) bsearch16u::$13 ← (word*) bsearch16u::pivot + (number) 1
|
||||
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
|
||||
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
|
||||
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
|
||||
De-inlining cast (byte*)memcpy::source
|
||||
De-inlining cast (word)memmove::destination
|
||||
De-inlining cast (word)memmove::source
|
||||
De-inlining cast (byte*)memmove::source
|
||||
De-inlining cast (byte*)memmove::destination
|
||||
De-inlining cast (byte*)memset::str
|
||||
De-inlining cast (signed word)bsearch16u::key
|
||||
De-inlining cast (signed word)*(bsearch16u::pivot)
|
||||
De-inlining cast (byte)uctoa::value
|
||||
De-inlining cast (byte)utoa::value
|
||||
De-inlining cast (byte)ultoa::value
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strupr::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
|
||||
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
|
||||
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
|
||||
Identified constant variable (byte*) HEAP_TOP
|
||||
Identified constant variable (byte) testChar::u
|
||||
Identified constant variable (byte) testChar::n
|
||||
Identified constant variable (signed byte) testChar::s
|
||||
Identified constant variable (word) testShort::u
|
||||
Identified constant variable (signed word) testShort::n
|
||||
Identified constant variable (signed word) testShort::s
|
||||
Identified constant variable (word) testInt::u
|
||||
Identified constant variable (signed word) testInt::n
|
||||
Identified constant variable (signed word) testInt::s
|
||||
Identified constant variable (dword) testLong::u
|
||||
Identified constant variable (signed dword) testLong::n
|
||||
Identified constant variable (signed dword) testLong::s
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) memset::@7
|
||||
Culled Empty Block (label) memset::@6
|
||||
Culled Empty Block (label) memset::@8
|
||||
Culled Empty Block (label) memset::@9
|
||||
Culled Empty Block (label) memset::@3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) @20
|
||||
Culled Empty Block (label) print_str::@4
|
||||
Culled Empty Block (label) print_str::@3
|
||||
Culled Empty Block (label) print_str::@5
|
||||
Culled Empty Block (label) print_str::@6
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) print_sint::@4
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) print_schar::@4
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) @28
|
||||
Culled Empty Block (label) @29
|
||||
Culled Empty Block (label) @30
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) @32
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) @34
|
||||
Culled Empty Block (label) @35
|
||||
Culled Empty Block (label) print_slong::@4
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) @37
|
||||
Culled Empty Block (label) @38
|
||||
Culled Empty Block (label) @39
|
||||
Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) @41
|
||||
Culled Empty Block (label) @42
|
||||
Culled Empty Block (label) @43
|
||||
Culled Empty Block (label) @44
|
||||
Culled Empty Block (label) @45
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) @47
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@18
|
||||
to:@1
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from print_cls
|
||||
@ -107,8 +12,8 @@ memset: scope:[memset] from print_cls
|
||||
(bool~) memset::$1 ← ! (bool~) memset::$0
|
||||
if((bool~) memset::$1) goto memset::@1
|
||||
to:memset::@2
|
||||
memset::@1: scope:[memset] from memset memset::@4
|
||||
(void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@4/(void*) memset::str#4 )
|
||||
memset::@1: scope:[memset] from memset memset::@3
|
||||
(void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@3/(void*) memset::str#4 )
|
||||
(void*) memset::return#0 ← (void*) memset::str#1
|
||||
to:memset::@return
|
||||
memset::@2: scope:[memset] from memset
|
||||
@ -119,42 +24,42 @@ memset::@2: scope:[memset] from memset
|
||||
(byte*~) memset::$2 ← (byte*~) memset::$4 + (word) memset::num#2
|
||||
(byte*) memset::end#0 ← (byte*~) memset::$2
|
||||
(byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#2
|
||||
to:memset::@4
|
||||
memset::@4: scope:[memset] from memset::@2 memset::@5
|
||||
(byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@5/(byte) memset::c#1 )
|
||||
(void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@5/(void*) memset::str#5 )
|
||||
(byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
|
||||
(byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
|
||||
to:memset::@3
|
||||
memset::@3: scope:[memset] from memset::@2 memset::@4
|
||||
(byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@4/(byte) memset::c#1 )
|
||||
(void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@4/(void*) memset::str#5 )
|
||||
(byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#2 )
|
||||
(byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 )
|
||||
(bool~) memset::$3 ← (byte*) memset::dst#2 != (byte*) memset::end#1
|
||||
if((bool~) memset::$3) goto memset::@5
|
||||
if((bool~) memset::$3) goto memset::@4
|
||||
to:memset::@1
|
||||
memset::@5: scope:[memset] from memset::@4
|
||||
(void*) memset::str#5 ← phi( memset::@4/(void*) memset::str#4 )
|
||||
(byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
|
||||
(byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
|
||||
(byte) memset::c#1 ← phi( memset::@4/(byte) memset::c#2 )
|
||||
memset::@4: scope:[memset] from memset::@3
|
||||
(void*) memset::str#5 ← phi( memset::@3/(void*) memset::str#4 )
|
||||
(byte*) memset::end#2 ← phi( memset::@3/(byte*) memset::end#1 )
|
||||
(byte*) memset::dst#3 ← phi( memset::@3/(byte*) memset::dst#2 )
|
||||
(byte) memset::c#1 ← phi( memset::@3/(byte) memset::c#2 )
|
||||
*((byte*) memset::dst#3) ← (byte) memset::c#1
|
||||
(byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
|
||||
to:memset::@4
|
||||
to:memset::@3
|
||||
memset::@return: scope:[memset] from memset::@1
|
||||
(void*) memset::return#3 ← phi( memset::@1/(void*) memset::return#0 )
|
||||
(void*) memset::return#1 ← (void*) memset::return#3
|
||||
return
|
||||
to:@return
|
||||
@18: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
(byte*) print_screen#0 ← (byte*)(number) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@48
|
||||
to:@2
|
||||
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
print_str: scope:[print_str] from testChar testInt testLong testShort
|
||||
(byte*) print_char_cursor#157 ← phi( testChar/(byte*) print_char_cursor#152 testInt/(byte*) print_char_cursor#154 testLong/(byte*) print_char_cursor#155 testShort/(byte*) print_char_cursor#153 )
|
||||
(byte*) print_str::str#8 ← phi( testChar/(byte*) print_str::str#1 testInt/(byte*) print_str::str#3 testLong/(byte*) print_str::str#4 testShort/(byte*) print_str::str#2 )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@7
|
||||
(byte*) print_char_cursor#137 ← phi( print_str/(byte*) print_char_cursor#157 print_str::@7/(byte*) print_char_cursor#1 )
|
||||
(byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#8 print_str::@7/(byte*) print_str::str#0 )
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@3
|
||||
(byte*) print_char_cursor#137 ← phi( print_str/(byte*) print_char_cursor#157 print_str::@3/(byte*) print_char_cursor#1 )
|
||||
(byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#8 print_str::@3/(byte*) print_str::str#0 )
|
||||
(bool~) print_str::$1 ← (number) 0 != *((byte*) print_str::str#5)
|
||||
if((bool~) print_str::$1) goto print_str::@2
|
||||
to:print_str::@return
|
||||
@ -163,8 +68,8 @@ print_str::@2: scope:[print_str] from print_str::@1
|
||||
(byte*) print_str::str#6 ← phi( print_str::@1/(byte*) print_str::str#5 )
|
||||
(byte) print_char::ch#0 ← *((byte*) print_str::str#6)
|
||||
call print_char
|
||||
to:print_str::@7
|
||||
print_str::@7: scope:[print_str] from print_str::@2
|
||||
to:print_str::@3
|
||||
print_str::@3: scope:[print_str] from print_str::@2
|
||||
(byte*) print_str::str#7 ← phi( print_str::@2/(byte*) print_str::str#6 )
|
||||
(byte*) print_char_cursor#69 ← phi( print_str::@2/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#1 ← (byte*) print_char_cursor#69
|
||||
@ -213,8 +118,8 @@ print_sint::@1: scope:[print_sint] from print_sint
|
||||
(byte*) print_char_cursor#139 ← phi( print_sint/(byte*) print_char_cursor#158 )
|
||||
(byte) print_char::ch#1 ← (byte) '-'
|
||||
call print_char
|
||||
to:print_sint::@5
|
||||
print_sint::@5: scope:[print_sint] from print_sint::@1
|
||||
to:print_sint::@4
|
||||
print_sint::@4: scope:[print_sint] from print_sint::@1
|
||||
(signed word) print_sint::w#6 ← phi( print_sint::@1/(signed word) print_sint::w#8 )
|
||||
(byte*) print_char_cursor#73 ← phi( print_sint::@1/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#5 ← (byte*) print_char_cursor#73
|
||||
@ -226,24 +131,24 @@ print_sint::@3: scope:[print_sint] from print_sint
|
||||
(byte*) print_char_cursor#140 ← phi( print_sint/(byte*) print_char_cursor#158 )
|
||||
(byte) print_char::ch#2 ← (byte) ' '
|
||||
call print_char
|
||||
to:print_sint::@6
|
||||
print_sint::@6: scope:[print_sint] from print_sint::@3
|
||||
to:print_sint::@5
|
||||
print_sint::@5: scope:[print_sint] from print_sint::@3
|
||||
(signed word) print_sint::w#9 ← phi( print_sint::@3/(signed word) print_sint::w#10 )
|
||||
(byte*) print_char_cursor#74 ← phi( print_sint::@3/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#6 ← (byte*) print_char_cursor#74
|
||||
to:print_sint::@2
|
||||
print_sint::@2: scope:[print_sint] from print_sint::@5 print_sint::@6
|
||||
(byte*) print_char_cursor#141 ← phi( print_sint::@5/(byte*) print_char_cursor#5 print_sint::@6/(byte*) print_char_cursor#6 )
|
||||
(signed word) print_sint::w#7 ← phi( print_sint::@5/(signed word) print_sint::w#0 print_sint::@6/(signed word) print_sint::w#9 )
|
||||
print_sint::@2: scope:[print_sint] from print_sint::@4 print_sint::@5
|
||||
(byte*) print_char_cursor#141 ← phi( print_sint::@4/(byte*) print_char_cursor#5 print_sint::@5/(byte*) print_char_cursor#6 )
|
||||
(signed word) print_sint::w#7 ← phi( print_sint::@4/(signed word) print_sint::w#0 print_sint::@5/(signed word) print_sint::w#9 )
|
||||
(word) print_uint::w#0 ← (word)(signed word) print_sint::w#7
|
||||
call print_uint
|
||||
to:print_sint::@7
|
||||
print_sint::@7: scope:[print_sint] from print_sint::@2
|
||||
to:print_sint::@6
|
||||
print_sint::@6: scope:[print_sint] from print_sint::@2
|
||||
(byte*) print_char_cursor#75 ← phi( print_sint::@2/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_char_cursor#7 ← (byte*) print_char_cursor#75
|
||||
to:print_sint::@return
|
||||
print_sint::@return: scope:[print_sint] from print_sint::@7
|
||||
(byte*) print_char_cursor#76 ← phi( print_sint::@7/(byte*) print_char_cursor#7 )
|
||||
print_sint::@return: scope:[print_sint] from print_sint::@6
|
||||
(byte*) print_char_cursor#76 ← phi( print_sint::@6/(byte*) print_char_cursor#7 )
|
||||
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#76
|
||||
return
|
||||
to:@return
|
||||
@ -260,8 +165,8 @@ print_schar::@1: scope:[print_schar] from print_schar
|
||||
(byte*) print_char_cursor#142 ← phi( print_schar/(byte*) print_char_cursor#159 )
|
||||
(byte) print_char::ch#3 ← (byte) '-'
|
||||
call print_char
|
||||
to:print_schar::@5
|
||||
print_schar::@5: scope:[print_schar] from print_schar::@1
|
||||
to:print_schar::@4
|
||||
print_schar::@4: scope:[print_schar] from print_schar::@1
|
||||
(signed byte) print_schar::b#3 ← phi( print_schar::@1/(signed byte) print_schar::b#5 )
|
||||
(byte*) print_char_cursor#77 ← phi( print_schar::@1/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#9 ← (byte*) print_char_cursor#77
|
||||
@ -273,24 +178,24 @@ print_schar::@3: scope:[print_schar] from print_schar
|
||||
(byte*) print_char_cursor#143 ← phi( print_schar/(byte*) print_char_cursor#159 )
|
||||
(byte) print_char::ch#4 ← (byte) ' '
|
||||
call print_char
|
||||
to:print_schar::@6
|
||||
print_schar::@6: scope:[print_schar] from print_schar::@3
|
||||
to:print_schar::@5
|
||||
print_schar::@5: scope:[print_schar] from print_schar::@3
|
||||
(signed byte) print_schar::b#6 ← phi( print_schar::@3/(signed byte) print_schar::b#7 )
|
||||
(byte*) print_char_cursor#78 ← phi( print_schar::@3/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#10 ← (byte*) print_char_cursor#78
|
||||
to:print_schar::@2
|
||||
print_schar::@2: scope:[print_schar] from print_schar::@5 print_schar::@6
|
||||
(byte*) print_char_cursor#144 ← phi( print_schar::@5/(byte*) print_char_cursor#9 print_schar::@6/(byte*) print_char_cursor#10 )
|
||||
(signed byte) print_schar::b#4 ← phi( print_schar::@5/(signed byte) print_schar::b#0 print_schar::@6/(signed byte) print_schar::b#6 )
|
||||
print_schar::@2: scope:[print_schar] from print_schar::@4 print_schar::@5
|
||||
(byte*) print_char_cursor#144 ← phi( print_schar::@4/(byte*) print_char_cursor#9 print_schar::@5/(byte*) print_char_cursor#10 )
|
||||
(signed byte) print_schar::b#4 ← phi( print_schar::@4/(signed byte) print_schar::b#0 print_schar::@5/(signed byte) print_schar::b#6 )
|
||||
(byte) print_uchar::b#0 ← (byte)(signed byte) print_schar::b#4
|
||||
call print_uchar
|
||||
to:print_schar::@7
|
||||
print_schar::@7: scope:[print_schar] from print_schar::@2
|
||||
to:print_schar::@6
|
||||
print_schar::@6: scope:[print_schar] from print_schar::@2
|
||||
(byte*) print_char_cursor#79 ← phi( print_schar::@2/(byte*) print_char_cursor#25 )
|
||||
(byte*) print_char_cursor#11 ← (byte*) print_char_cursor#79
|
||||
to:print_schar::@return
|
||||
print_schar::@return: scope:[print_schar] from print_schar::@7
|
||||
(byte*) print_char_cursor#80 ← phi( print_schar::@7/(byte*) print_char_cursor#11 )
|
||||
print_schar::@return: scope:[print_schar] from print_schar::@6
|
||||
(byte*) print_char_cursor#80 ← phi( print_schar::@6/(byte*) print_char_cursor#11 )
|
||||
(byte*) print_char_cursor#12 ← (byte*) print_char_cursor#80
|
||||
return
|
||||
to:@return
|
||||
@ -359,8 +264,8 @@ print_slong::@1: scope:[print_slong] from print_slong
|
||||
(byte*) print_char_cursor#147 ← phi( print_slong/(byte*) print_char_cursor#160 )
|
||||
(byte) print_char::ch#5 ← (byte) '-'
|
||||
call print_char
|
||||
to:print_slong::@5
|
||||
print_slong::@5: scope:[print_slong] from print_slong::@1
|
||||
to:print_slong::@4
|
||||
print_slong::@4: scope:[print_slong] from print_slong::@1
|
||||
(signed dword) print_slong::dw#4 ← phi( print_slong::@1/(signed dword) print_slong::dw#6 )
|
||||
(byte*) print_char_cursor#87 ← phi( print_slong::@1/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#19 ← (byte*) print_char_cursor#87
|
||||
@ -372,24 +277,24 @@ print_slong::@3: scope:[print_slong] from print_slong
|
||||
(byte*) print_char_cursor#148 ← phi( print_slong/(byte*) print_char_cursor#160 )
|
||||
(byte) print_char::ch#6 ← (byte) ' '
|
||||
call print_char
|
||||
to:print_slong::@6
|
||||
print_slong::@6: scope:[print_slong] from print_slong::@3
|
||||
to:print_slong::@5
|
||||
print_slong::@5: scope:[print_slong] from print_slong::@3
|
||||
(signed dword) print_slong::dw#7 ← phi( print_slong::@3/(signed dword) print_slong::dw#8 )
|
||||
(byte*) print_char_cursor#88 ← phi( print_slong::@3/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_char_cursor#20 ← (byte*) print_char_cursor#88
|
||||
to:print_slong::@2
|
||||
print_slong::@2: scope:[print_slong] from print_slong::@5 print_slong::@6
|
||||
(byte*) print_char_cursor#149 ← phi( print_slong::@5/(byte*) print_char_cursor#19 print_slong::@6/(byte*) print_char_cursor#20 )
|
||||
(signed dword) print_slong::dw#5 ← phi( print_slong::@5/(signed dword) print_slong::dw#0 print_slong::@6/(signed dword) print_slong::dw#7 )
|
||||
print_slong::@2: scope:[print_slong] from print_slong::@4 print_slong::@5
|
||||
(byte*) print_char_cursor#149 ← phi( print_slong::@4/(byte*) print_char_cursor#19 print_slong::@5/(byte*) print_char_cursor#20 )
|
||||
(signed dword) print_slong::dw#5 ← phi( print_slong::@4/(signed dword) print_slong::dw#0 print_slong::@5/(signed dword) print_slong::dw#7 )
|
||||
(dword) print_ulong::dw#0 ← (dword)(signed dword) print_slong::dw#5
|
||||
call print_ulong
|
||||
to:print_slong::@7
|
||||
print_slong::@7: scope:[print_slong] from print_slong::@2
|
||||
to:print_slong::@6
|
||||
print_slong::@6: scope:[print_slong] from print_slong::@2
|
||||
(byte*) print_char_cursor#89 ← phi( print_slong::@2/(byte*) print_char_cursor#18 )
|
||||
(byte*) print_char_cursor#21 ← (byte*) print_char_cursor#89
|
||||
to:print_slong::@return
|
||||
print_slong::@return: scope:[print_slong] from print_slong::@7
|
||||
(byte*) print_char_cursor#90 ← phi( print_slong::@7/(byte*) print_char_cursor#21 )
|
||||
print_slong::@return: scope:[print_slong] from print_slong::@6
|
||||
(byte*) print_char_cursor#90 ← phi( print_slong::@6/(byte*) print_char_cursor#21 )
|
||||
(byte*) print_char_cursor#22 ← (byte*) print_char_cursor#90
|
||||
return
|
||||
to:@return
|
||||
@ -456,10 +361,10 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @48
|
||||
(byte*) print_char_cursor#151 ← phi( @48/(byte*) print_char_cursor#156 )
|
||||
(byte*) print_line_cursor#40 ← phi( @48/(byte*) print_line_cursor#45 )
|
||||
(byte*) print_screen#3 ← phi( @48/(byte*) print_screen#4 )
|
||||
main: scope:[main] from @2
|
||||
(byte*) print_char_cursor#151 ← phi( @2/(byte*) print_char_cursor#156 )
|
||||
(byte*) print_line_cursor#40 ← phi( @2/(byte*) print_line_cursor#45 )
|
||||
(byte*) print_screen#3 ← phi( @2/(byte*) print_screen#4 )
|
||||
call print_cls
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
@ -751,24 +656,24 @@ testLong::@return: scope:[testLong] from testLong::@7
|
||||
(byte*) print_line_cursor#18 ← (byte*) print_line_cursor#37
|
||||
return
|
||||
to:@return
|
||||
@48: scope:[] from @18
|
||||
(byte*) print_screen#4 ← phi( @18/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#156 ← phi( @18/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#45 ← phi( @18/(byte*) print_line_cursor#0 )
|
||||
@2: scope:[] from @1
|
||||
(byte*) print_screen#4 ← phi( @1/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#156 ← phi( @1/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#45 ← phi( @1/(byte*) print_line_cursor#0 )
|
||||
call main
|
||||
to:@49
|
||||
@49: scope:[] from @48
|
||||
(byte*) print_char_cursor#135 ← phi( @48/(byte*) print_char_cursor#35 )
|
||||
(byte*) print_line_cursor#38 ← phi( @48/(byte*) print_line_cursor#10 )
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
(byte*) print_char_cursor#135 ← phi( @2/(byte*) print_char_cursor#35 )
|
||||
(byte*) print_line_cursor#38 ← phi( @2/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_line_cursor#19 ← (byte*) print_line_cursor#38
|
||||
(byte*) print_char_cursor#68 ← (byte*) print_char_cursor#135
|
||||
to:@end
|
||||
@end: scope:[] from @49
|
||||
@end: scope:[] from @3
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @18
|
||||
(label) @48
|
||||
(label) @49
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) RADIX::BINARY = (number) 2
|
||||
@ -790,8 +695,8 @@ SYMBOL TABLE SSA
|
||||
(byte*~) memset::$4
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@4
|
||||
(label) memset::@5
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#0
|
||||
@ -1094,9 +999,9 @@ SYMBOL TABLE SSA
|
||||
(label) print_schar::@1
|
||||
(label) print_schar::@2
|
||||
(label) print_schar::@3
|
||||
(label) print_schar::@4
|
||||
(label) print_schar::@5
|
||||
(label) print_schar::@6
|
||||
(label) print_schar::@7
|
||||
(label) print_schar::@return
|
||||
(signed byte) print_schar::b
|
||||
(signed byte) print_schar::b#0
|
||||
@ -1119,9 +1024,9 @@ SYMBOL TABLE SSA
|
||||
(label) print_sint::@1
|
||||
(label) print_sint::@2
|
||||
(label) print_sint::@3
|
||||
(label) print_sint::@4
|
||||
(label) print_sint::@5
|
||||
(label) print_sint::@6
|
||||
(label) print_sint::@7
|
||||
(label) print_sint::@return
|
||||
(signed word) print_sint::w
|
||||
(signed word) print_sint::w#0
|
||||
@ -1141,9 +1046,9 @@ SYMBOL TABLE SSA
|
||||
(label) print_slong::@1
|
||||
(label) print_slong::@2
|
||||
(label) print_slong::@3
|
||||
(label) print_slong::@4
|
||||
(label) print_slong::@5
|
||||
(label) print_slong::@6
|
||||
(label) print_slong::@7
|
||||
(label) print_slong::@return
|
||||
(signed dword) print_slong::dw
|
||||
(signed dword) print_slong::dw#0
|
||||
@ -1159,7 +1064,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) print_str::$1
|
||||
(label) print_str::@1
|
||||
(label) print_str::@2
|
||||
(label) print_str::@7
|
||||
(label) print_str::@3
|
||||
(label) print_str::@return
|
||||
(byte*) print_str::str
|
||||
(byte*) print_str::str#0
|
||||
@ -1488,7 +1393,7 @@ Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_char_cursor#26
|
||||
Identical Phi Values (byte*) print_char_cursor#149 (byte*) print_char_cursor#26
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) memset::$1 [2] if((word) memset::num#0<=(byte) 0) goto memset::@1
|
||||
Simple Condition (bool~) memset::$3 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
|
||||
Simple Condition (bool~) memset::$3 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@4
|
||||
Simple Condition (bool~) print_str::$1 [17] if((byte) 0!=*((byte*) print_str::str#5)) goto print_str::@2
|
||||
Simple Condition (bool~) print_ln::$1 [27] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1
|
||||
Simple Condition (bool~) print_sint::$0 [31] if((signed word) print_sint::w#10<(signed byte) 0) goto print_sint::@1
|
||||
@ -1543,8 +1448,8 @@ Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing PHI-reference to removed block (print_schar::@3) in block print_char
|
||||
Removing PHI-reference to removed block (print_schar::@3) in block print_char
|
||||
Removing unused block print_schar::@3
|
||||
Removing PHI-reference to removed block (print_schar::@6) in block print_schar::@2
|
||||
Removing unused block print_schar::@6
|
||||
Removing PHI-reference to removed block (print_schar::@5) in block print_schar::@2
|
||||
Removing unused block print_schar::@5
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Alias print_schar::b#0 = print_schar::b#4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
@ -1626,9 +1531,9 @@ Constant inlined print_uint::w#3 = (const word) testShort::u
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @18
|
||||
Adding NOP phi() at start of @48
|
||||
Adding NOP phi() at start of @49
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -1640,14 +1545,14 @@ Adding NOP phi() at start of testLong::@3
|
||||
Adding NOP phi() at start of testLong::@5
|
||||
Adding NOP phi() at start of testLong::@7
|
||||
Adding NOP phi() at start of print_ln::@2
|
||||
Adding NOP phi() at start of print_slong::@7
|
||||
Adding NOP phi() at start of print_slong::@6
|
||||
Adding NOP phi() at start of print_ulong::@2
|
||||
Adding NOP phi() at start of print_uint::@2
|
||||
Adding NOP phi() at start of print_uchar::@2
|
||||
Adding NOP phi() at start of testInt::@3
|
||||
Adding NOP phi() at start of testInt::@5
|
||||
Adding NOP phi() at start of testInt::@7
|
||||
Adding NOP phi() at start of print_sint::@7
|
||||
Adding NOP phi() at start of print_sint::@6
|
||||
Adding NOP phi() at start of testShort::@3
|
||||
Adding NOP phi() at start of testShort::@5
|
||||
Adding NOP phi() at start of testShort::@7
|
||||
@ -1656,8 +1561,8 @@ Adding NOP phi() at start of testChar::@5
|
||||
Adding NOP phi() at start of testChar::@6
|
||||
Adding NOP phi() at start of testChar::@7
|
||||
Adding NOP phi() at start of print_schar
|
||||
Adding NOP phi() at start of print_schar::@5
|
||||
Adding NOP phi() at start of print_schar::@7
|
||||
Adding NOP phi() at start of print_schar::@4
|
||||
Adding NOP phi() at start of print_schar::@6
|
||||
Adding NOP phi() at start of print_cls
|
||||
Adding NOP phi() at start of print_cls::@1
|
||||
Adding NOP phi() at start of memset
|
||||
@ -1735,33 +1640,30 @@ Coalesced (already) [175] print_char_cursor#178 ← print_char_cursor#26
|
||||
Coalesced (already) [178] print_char_cursor#173 ← print_char_cursor#26
|
||||
Coalesced [194] memset::dst#4 ← memset::dst#1
|
||||
Coalesced down to 10 phi equivalence classes
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) testLong::@7
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Culled Empty Block (label) print_slong::@5
|
||||
Culled Empty Block (label) print_slong::@6
|
||||
Culled Empty Block (label) print_slong::@7
|
||||
Culled Empty Block (label) print_ulong::@2
|
||||
Culled Empty Block (label) print_uint::@2
|
||||
Culled Empty Block (label) print_uchar::@2
|
||||
Culled Empty Block (label) testInt::@7
|
||||
Culled Empty Block (label) print_sint::@5
|
||||
Culled Empty Block (label) print_sint::@6
|
||||
Culled Empty Block (label) print_sint::@7
|
||||
Culled Empty Block (label) testShort::@7
|
||||
Culled Empty Block (label) testChar::@7
|
||||
Culled Empty Block (label) print_schar::@5
|
||||
Culled Empty Block (label) print_schar::@7
|
||||
Culled Empty Block (label) print_schar::@4
|
||||
Culled Empty Block (label) print_schar::@6
|
||||
Culled Empty Block (label) print_cls::@1
|
||||
Culled Empty Block (label) memset::@2
|
||||
Culled Empty Block (label) memset::@1
|
||||
Renumbering block @48 to @1
|
||||
Renumbering block memset::@4 to memset::@1
|
||||
Renumbering block memset::@5 to memset::@2
|
||||
Renumbering block print_str::@7 to print_str::@3
|
||||
Renumbering block print_sint::@5 to print_sint::@4
|
||||
Renumbering block print_slong::@5 to print_slong::@4
|
||||
Renumbering block @2 to @1
|
||||
Renumbering block memset::@3 to memset::@1
|
||||
Renumbering block memset::@4 to memset::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,31 +1,8 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@15
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@16
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@13
|
||||
Culled Empty Block (label) main::@14
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) gfx_init_screen0::@4
|
||||
Culled Empty Block (label) @8
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@9
|
||||
to:@1
|
||||
|
||||
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
|
||||
dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_charset8 gfx_init_plane_charset8::@8
|
||||
@ -38,13 +15,13 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @9
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
*((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
||||
*((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
||||
call gfx_init
|
||||
to:main::@17
|
||||
main::@17: scope:[main] from main
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
*((const nomodify byte*) DTV_FEATURE) ← (const nomodify byte) DTV_FEATURE_ENABLE
|
||||
*((const nomodify byte*) DTV_CONTROL) ← (const nomodify byte) DTV_HIGHCOLOR|(const nomodify byte) DTV_LINEAR|(const nomodify byte) DTV_CHUNKY|(const nomodify byte) DTV_BADLINE_OFF
|
||||
*((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_ECM|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
@ -66,31 +43,31 @@ main::@17: scope:[main] from main
|
||||
*((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|>(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) 4
|
||||
(byte) main::j#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@1 main::@17
|
||||
(byte) main::j#2 ← phi( main::@1/(byte) main::j#1 main::@17/(byte) main::j#0 )
|
||||
main::@1: scope:[main] from main::@1 main::@7
|
||||
(byte) main::j#2 ← phi( main::@1/(byte) main::j#1 main::@7/(byte) main::j#0 )
|
||||
*((const nomodify byte*) DTV_PALETTE + (byte) main::j#2) ← (byte) main::j#2
|
||||
(byte) main::j#1 ← (byte) main::j#2 + rangenext(0,$f)
|
||||
(bool~) main::$1 ← (byte) main::j#1 != rangelast(0,$f)
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1 main::@12
|
||||
if(true) goto main::@4
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@6
|
||||
if(true) goto main::@3
|
||||
to:main::@return
|
||||
main::@4: scope:[main] from main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
|
||||
*((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_ECM|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
*((const nomodify byte*) BORDERCOL) ← (number) 0
|
||||
(byte) main::rst#0 ← (byte) $42
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@4 main::@6
|
||||
(byte) main::rst#2 ← phi( main::@4/(byte) main::rst#0 main::@6/(byte) main::rst#2 )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
(byte) main::rst#2 ← phi( main::@3/(byte) main::rst#0 main::@4/(byte) main::rst#2 )
|
||||
(bool~) main::$2 ← *((const nomodify byte*) RASTER) != (byte) main::rst#2
|
||||
if((bool~) main::$2) goto main::@6
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@6
|
||||
if((bool~) main::$2) goto main::@4
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@12 main::@8
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5 main::@6
|
||||
(byte) main::rst#1 ← *((const nomodify byte*) RASTER)
|
||||
(number~) main::$3 ← (byte) main::rst#1 & (number) 7
|
||||
(number~) main::$4 ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_ECM|(const nomodify byte) VIC_RSEL | (number~) main::$3
|
||||
@ -99,9 +76,9 @@ main::@12: scope:[main] from main::@12 main::@8
|
||||
*((const nomodify byte*) BORDERCOL) ← (number~) main::$5
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
(bool~) main::$6 ← (byte) main::rst#1 != (number) $f2
|
||||
if((bool~) main::$6) goto main::@12
|
||||
to:main::@3
|
||||
main::@return: scope:[main] from main::@3
|
||||
if((bool~) main::$6) goto main::@6
|
||||
to:main::@2
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
|
||||
@ -256,16 +233,16 @@ gfx_init_plane_charset8::@10: scope:[gfx_init_plane_charset8] from gfx_init_pla
|
||||
gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@10
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@10
|
||||
@10: scope:[] from @9
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @10
|
||||
(label) @9
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BORDERCOL = (byte*)(number) $d020
|
||||
@ -441,12 +418,12 @@ SYMBOL TABLE SSA
|
||||
(number~) main::$5
|
||||
(bool~) main::$6
|
||||
(label) main::@1
|
||||
(label) main::@12
|
||||
(label) main::@17
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@8
|
||||
(label) main::@7
|
||||
(label) main::@return
|
||||
(byte) main::j
|
||||
(byte) main::j#0
|
||||
@ -661,8 +638,8 @@ Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Identical Phi Values (byte) gfx_init_plane_charset8::ch#7 (byte) gfx_init_plane_charset8::ch#8
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) main::$1 [32] if((byte) main::j#1!=rangelast(0,$f)) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [40] if(*((const nomodify byte*) RASTER)!=(byte) main::rst#0) goto main::@6
|
||||
Simple Condition (bool~) main::$6 [50] if((byte) main::rst#1!=(byte) $f2) goto main::@12
|
||||
Simple Condition (bool~) main::$2 [40] if(*((const nomodify byte*) RASTER)!=(byte) main::rst#0) goto main::@4
|
||||
Simple Condition (bool~) main::$6 [50] if((byte) main::rst#1!=(byte) $f2) goto main::@6
|
||||
Simple Condition (bool~) gfx_init_screen0::$4 [68] if((byte) gfx_init_screen0::cx#1!=rangelast(0,$27)) goto gfx_init_screen0::@2
|
||||
Simple Condition (bool~) gfx_init_screen0::$5 [71] if((byte) gfx_init_screen0::cy#1!=rangelast(0,$18)) goto gfx_init_screen0::@1
|
||||
Simple Condition (bool~) gfx_init_plane_charset8::$4 [92] if((byte~) gfx_init_plane_charset8::$2==(byte) 0) goto gfx_init_plane_charset8::@4
|
||||
@ -687,7 +664,7 @@ Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#1 = (byte)$4000/$4000
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 = gfx_init_plane_charset8::gfxbCpuBank#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [33] if(true) goto main::@4
|
||||
if() condition always true - replacing block destination [33] if(true) goto main::@3
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Resolved ranged next value [30] main::j#1 ← ++ main::j#2 to ++
|
||||
Resolved ranged comparison value [32] if(main::j#1!=rangelast(0,$f)) goto main::@1 to (number) $10
|
||||
@ -765,17 +742,17 @@ Constant inlined gfx_init_plane_charset8::col#0 = (byte) 0
|
||||
Constant inlined gfx_init_plane_charset8::ch#0 = (byte) 0
|
||||
Constant inlined main::j#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@18(between main::@1 and main::@1)
|
||||
Added new block during phi lifting gfx_init_screen0::@5(between gfx_init_screen0::@3 and gfx_init_screen0::@1)
|
||||
Added new block during phi lifting gfx_init_screen0::@6(between gfx_init_screen0::@2 and gfx_init_screen0::@2)
|
||||
Added new block during phi lifting main::@8(between main::@1 and main::@1)
|
||||
Added new block during phi lifting gfx_init_screen0::@4(between gfx_init_screen0::@3 and gfx_init_screen0::@1)
|
||||
Added new block during phi lifting gfx_init_screen0::@5(between gfx_init_screen0::@2 and gfx_init_screen0::@2)
|
||||
Added new block during phi lifting gfx_init_plane_charset8::@11(between gfx_init_plane_charset8::@7 and gfx_init_plane_charset8::@1)
|
||||
Added new block during phi lifting gfx_init_plane_charset8::@12(between gfx_init_plane_charset8::@6 and gfx_init_plane_charset8::@2)
|
||||
Added new block during phi lifting gfx_init_plane_charset8::@13(between gfx_init_plane_charset8::@4 and gfx_init_plane_charset8::@3)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @9
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of gfx_init
|
||||
Adding NOP phi() at start of gfx_init::@1
|
||||
Adding NOP phi() at start of gfx_init::@2
|
||||
@ -815,22 +792,21 @@ Coalesced [117] gfx_init_screen0::ch#5 ← gfx_init_screen0::ch#1
|
||||
Coalesced [118] gfx_init_screen0::cx#3 ← gfx_init_screen0::cx#1
|
||||
Coalesced (already) [119] gfx_init_screen0::ch#7 ← gfx_init_screen0::ch#1
|
||||
Coalesced down to 13 phi equivalence classes
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@18
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) gfx_init::@2
|
||||
Culled Empty Block (label) gfx_init_plane_charset8::@10
|
||||
Culled Empty Block (label) gfx_init_plane_charset8::@11
|
||||
Culled Empty Block (label) gfx_init_plane_charset8::@12
|
||||
Culled Empty Block (label) gfx_init_plane_charset8::@13
|
||||
Culled Empty Block (label) gfx_init_screen0::@4
|
||||
Culled Empty Block (label) gfx_init_screen0::@5
|
||||
Culled Empty Block (label) gfx_init_screen0::@6
|
||||
Renumbering block @9 to @1
|
||||
Renumbering block main::@4 to main::@2
|
||||
Renumbering block main::@6 to main::@3
|
||||
Renumbering block main::@8 to main::@4
|
||||
Renumbering block main::@12 to main::@5
|
||||
Renumbering block main::@17 to main::@6
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@5 to main::@4
|
||||
Renumbering block main::@6 to main::@5
|
||||
Renumbering block main::@7 to main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,28 +1,8 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@15
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@16
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@13
|
||||
Culled Empty Block (label) main::@14
|
||||
Culled Empty Block (label) @6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@7
|
||||
to:@1
|
||||
|
||||
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
|
||||
dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_chunky gfx_init_chunky::@4 gfx_init_chunky::@6
|
||||
@ -35,13 +15,13 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @7
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
*((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
||||
*((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
||||
call gfx_init_chunky
|
||||
to:main::@17
|
||||
main::@17: scope:[main] from main
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
*((const nomodify byte*) DTV_FEATURE) ← (const nomodify byte) DTV_FEATURE_ENABLE
|
||||
*((const nomodify byte*) DTV_CONTROL) ← (const nomodify byte) DTV_HIGHCOLOR|(const nomodify byte) DTV_LINEAR|(const nomodify byte) DTV_COLORRAM_OFF|(const nomodify byte) DTV_CHUNKY|(const nomodify byte) DTV_BADLINE_OFF
|
||||
*((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_ECM|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
@ -57,31 +37,31 @@ main::@17: scope:[main] from main
|
||||
*((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) CHUNKY&(number) $3fff/(number) $40|>(word)(const nomodify byte*) CHUNKY&(number) $3fff/(number) 4
|
||||
(byte) main::j#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@1 main::@17
|
||||
(byte) main::j#2 ← phi( main::@1/(byte) main::j#1 main::@17/(byte) main::j#0 )
|
||||
main::@1: scope:[main] from main::@1 main::@7
|
||||
(byte) main::j#2 ← phi( main::@1/(byte) main::j#1 main::@7/(byte) main::j#0 )
|
||||
*((const nomodify byte*) DTV_PALETTE + (byte) main::j#2) ← (byte) main::j#2
|
||||
(byte) main::j#1 ← (byte) main::j#2 + rangenext(0,$f)
|
||||
(bool~) main::$1 ← (byte) main::j#1 != rangelast(0,$f)
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1 main::@12
|
||||
if(true) goto main::@4
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@6
|
||||
if(true) goto main::@3
|
||||
to:main::@return
|
||||
main::@4: scope:[main] from main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
|
||||
*((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_ECM|(const nomodify byte) VIC_RSEL|(number) 3
|
||||
*((const nomodify byte*) BORDERCOL) ← (number) 0
|
||||
(byte) main::rst#0 ← (byte) $42
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@4 main::@6
|
||||
(byte) main::rst#2 ← phi( main::@4/(byte) main::rst#0 main::@6/(byte) main::rst#2 )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
(byte) main::rst#2 ← phi( main::@3/(byte) main::rst#0 main::@4/(byte) main::rst#2 )
|
||||
(bool~) main::$2 ← *((const nomodify byte*) RASTER) != (byte) main::rst#2
|
||||
if((bool~) main::$2) goto main::@6
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@6
|
||||
if((bool~) main::$2) goto main::@4
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@12 main::@8
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5 main::@6
|
||||
(byte) main::rst#1 ← *((const nomodify byte*) RASTER)
|
||||
(number~) main::$3 ← (byte) main::rst#1 & (number) 7
|
||||
(number~) main::$4 ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_ECM|(const nomodify byte) VIC_RSEL | (number~) main::$3
|
||||
@ -90,9 +70,9 @@ main::@12: scope:[main] from main::@12 main::@8
|
||||
*((const nomodify byte*) BORDERCOL) ← (number~) main::$5
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
(bool~) main::$6 ← (byte) main::rst#1 != (number) $f2
|
||||
if((bool~) main::$6) goto main::@12
|
||||
to:main::@3
|
||||
main::@return: scope:[main] from main::@3
|
||||
if((bool~) main::$6) goto main::@6
|
||||
to:main::@2
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
|
||||
@ -167,16 +147,16 @@ gfx_init_chunky::@9: scope:[gfx_init_chunky] from gfx_init_chunky::@6
|
||||
gfx_init_chunky::@return: scope:[gfx_init_chunky] from gfx_init_chunky::@9
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @8
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @7
|
||||
(label) @8
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BORDERCOL = (byte*)(number) $d020
|
||||
@ -280,12 +260,12 @@ SYMBOL TABLE SSA
|
||||
(number~) main::$5
|
||||
(bool~) main::$6
|
||||
(label) main::@1
|
||||
(label) main::@12
|
||||
(label) main::@17
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@8
|
||||
(label) main::@7
|
||||
(label) main::@return
|
||||
(byte) main::j
|
||||
(byte) main::j#0
|
||||
@ -424,8 +404,8 @@ Identical Phi Values (byte) main::rst#2 (byte) main::rst#0
|
||||
Identical Phi Values (byte) gfx_init_chunky::y#2 (byte) gfx_init_chunky::y#6
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) main::$1 [26] if((byte) main::j#1!=rangelast(0,$f)) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [34] if(*((const nomodify byte*) RASTER)!=(byte) main::rst#0) goto main::@6
|
||||
Simple Condition (bool~) main::$6 [44] if((byte) main::rst#1!=(byte) $f2) goto main::@12
|
||||
Simple Condition (bool~) main::$2 [34] if(*((const nomodify byte*) RASTER)!=(byte) main::rst#0) goto main::@4
|
||||
Simple Condition (bool~) main::$6 [44] if((byte) main::rst#1!=(byte) $f2) goto main::@6
|
||||
Simple Condition (bool~) gfx_init_chunky::$3 [56] if((byte*) gfx_init_chunky::gfxb#3!=(word) $8000) goto gfx_init_chunky::@3
|
||||
Simple Condition (bool~) gfx_init_chunky::$6 [64] if((word) gfx_init_chunky::x#1!=rangelast(0,$13f)) goto gfx_init_chunky::@2
|
||||
Simple Condition (bool~) gfx_init_chunky::$7 [71] if((byte) gfx_init_chunky::y#1!=rangelast(0,$32)) goto gfx_init_chunky::@1
|
||||
@ -441,7 +421,7 @@ Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (byte)$4000/$4000
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 = gfx_init_chunky::gfxbCpuBank#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [27] if(true) goto main::@4
|
||||
if() condition always true - replacing block destination [27] if(true) goto main::@3
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Resolved ranged next value [24] main::j#1 ← ++ main::j#2 to ++
|
||||
Resolved ranged comparison value [26] if(main::j#1!=rangelast(0,$f)) goto main::@1 to (number) $10
|
||||
@ -493,15 +473,15 @@ Constant inlined gfx_init_chunky::gfxb#2 = (byte*) 16384
|
||||
Constant inlined gfx_init_chunky::gfxb#0 = (byte*) 16384
|
||||
Constant inlined gfx_init_chunky::gfxbCpuBank#0 = (byte)(const nomodify byte*) CHUNKY/(word) $4000
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@18(between main::@1 and main::@1)
|
||||
Added new block during phi lifting main::@8(between main::@1 and main::@1)
|
||||
Added new block during phi lifting gfx_init_chunky::@10(between gfx_init_chunky::@5 and gfx_init_chunky::@1)
|
||||
Added new block during phi lifting gfx_init_chunky::@11(between gfx_init_chunky::@3 and gfx_init_chunky::@2)
|
||||
Added new block during phi lifting gfx_init_chunky::@12(between gfx_init_chunky::@2 and gfx_init_chunky::@3)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @8
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of gfx_init_chunky
|
||||
Adding NOP phi() at start of gfx_init_chunky::@7
|
||||
Adding NOP phi() at start of gfx_init_chunky::@6
|
||||
@ -526,20 +506,19 @@ Coalesced (already) [72] gfx_init_chunky::gfxbCpuBank#12 ← gfx_init_chunky::gf
|
||||
Coalesced [73] gfx_init_chunky::gfxb#10 ← gfx_init_chunky::gfxb#3
|
||||
Coalesced (already) [74] gfx_init_chunky::gfxbCpuBank#13 ← gfx_init_chunky::gfxbCpuBank#4
|
||||
Coalesced down to 6 phi equivalence classes
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@18
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) gfx_init_chunky::@7
|
||||
Culled Empty Block (label) gfx_init_chunky::@9
|
||||
Culled Empty Block (label) gfx_init_chunky::@10
|
||||
Culled Empty Block (label) gfx_init_chunky::@11
|
||||
Culled Empty Block (label) gfx_init_chunky::@12
|
||||
Renumbering block @7 to @1
|
||||
Renumbering block main::@4 to main::@2
|
||||
Renumbering block main::@6 to main::@3
|
||||
Renumbering block main::@8 to main::@4
|
||||
Renumbering block main::@12 to main::@5
|
||||
Renumbering block main::@17 to main::@6
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@5 to main::@4
|
||||
Renumbering block main::@6 to main::@5
|
||||
Renumbering block main::@7 to main::@6
|
||||
Renumbering block gfx_init_chunky::@8 to gfx_init_chunky::@7
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
|
@ -1,21 +1,11 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@6
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @6
|
||||
main: scope:[main] from @1
|
||||
*((const nomodify byte*) DTV_FEATURE) ← (const nomodify byte) DTV_FEATURE_ENABLE
|
||||
*((const nomodify byte*) DTV_BLITTER_CONTROL2) ← (const nomodify byte) DTV_BLIT_CLEAR_IRQ
|
||||
*((const nomodify byte*) DTV_BLITTER_SRCA_LO) ← <(const to_nomodify byte*) SRCA
|
||||
@ -57,16 +47,16 @@ main::@1: scope:[main] from main main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @7
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) DTV_BLITTER_ALU = (byte*)(number) $d33e
|
||||
@ -231,16 +221,15 @@ Simplifying constant evaluating to zero >(word) $13 in [24] *((const nomodify by
|
||||
Simplifying constant evaluating to zero >(byte) $14*(word) $a in [27] *((const nomodify byte*) DTV_BLITTER_LEN_HI) ← >(byte) $14*(word) $a
|
||||
Successful SSA optimization PassNSimplifyConstantZero
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @7
|
||||
Renumbering block @6 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,22 +1,11 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@6
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @6
|
||||
main: scope:[main] from @1
|
||||
*((const nomodify byte*) DTV_FEATURE) ← (const nomodify byte) DTV_FEATURE_ENABLE
|
||||
*((const nomodify byte*) DTV_BLITTER_CONTROL2) ← (const nomodify byte) DTV_BLIT_CLEAR_IRQ
|
||||
*((const nomodify byte*) DTV_BLITTER_SRCA_LO) ← <(const to_nomodify byte*) SRCA
|
||||
@ -50,33 +39,33 @@ main: scope:[main] from @6
|
||||
*((const nomodify byte*) DTV_BLITTER_CONTROL) ← (const nomodify byte) DTV_BLIT_FORCE_START|(const nomodify byte) DTV_BLIT_SRCA_FWD|(const nomodify byte) DTV_BLIT_SRCB_FWD|(const nomodify byte) DTV_BLIT_DEST_FWD
|
||||
*((const nomodify byte*) DTV_BLITTER_CONTROL2) ← (const nomodify byte) DTV_BLIT_DEST_CONT
|
||||
(byte) main::r#0 ← (byte) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main main::@2 main::@3
|
||||
(byte) main::r#3 ← phi( main/(byte) main::r#0 main::@2/(byte) main::r#3 main::@3/(byte) main::r#1 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1 main::@2
|
||||
(byte) main::r#3 ← phi( main/(byte) main::r#0 main::@1/(byte) main::r#3 main::@2/(byte) main::r#1 )
|
||||
(byte~) main::$0 ← *((const nomodify byte*) DTV_BLITTER_CONTROL2) & (const nomodify byte) DTV_BLIT_STATUS_BUSY
|
||||
(bool~) main::$1 ← (byte~) main::$0 != (number) 0
|
||||
if((bool~) main::$1) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte) main::r#2 ← phi( main::@2/(byte) main::r#3 )
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte) main::r#2 ← phi( main::@1/(byte) main::r#3 )
|
||||
*((const nomodify byte*) DTV_BLITTER_CONTROL) ← (const nomodify byte) DTV_BLIT_FORCE_START|(const nomodify byte) DTV_BLIT_SRCA_FWD|(const nomodify byte) DTV_BLIT_SRCB_FWD|(const nomodify byte) DTV_BLIT_DEST_FWD
|
||||
(byte) main::r#1 ← (byte) main::r#2 + rangenext(0,7)
|
||||
(bool~) main::$2 ← (byte) main::r#1 != rangelast(0,7)
|
||||
if((bool~) main::$2) goto main::@2
|
||||
if((bool~) main::$2) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @7
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) DTV_BLITTER_ALU = (byte*)(number) $d33e
|
||||
@ -128,8 +117,8 @@ SYMBOL TABLE SSA
|
||||
(byte~) main::$0
|
||||
(bool~) main::$1
|
||||
(bool~) main::$2
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte) main::r
|
||||
(byte) main::r#0
|
||||
@ -230,19 +219,19 @@ Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias main::r#2 = main::r#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$1 [36] if((byte~) main::$0!=(byte) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$2 [40] if((byte) main::r#1!=rangelast(0,7)) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [36] if((byte~) main::$0!=(byte) 0) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [40] if((byte) main::r#1!=rangelast(0,7)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) main::r#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Resolved ranged next value [38] main::r#1 ← ++ main::r#2 to ++
|
||||
Resolved ranged comparison value [40] if(main::r#1!=rangelast(0,7)) goto main::@2 to (number) 8
|
||||
Resolved ranged comparison value [40] if(main::r#1!=rangelast(0,7)) goto main::@1 to (number) 8
|
||||
Simplifying constant evaluating to zero <(word) $100 in [7] *((const nomodify byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100
|
||||
Simplifying constant evaluating to zero <(word) $100 in [15] *((const nomodify byte*) DTV_BLITTER_SRCB_LIN_LO) ← <(word) $100
|
||||
Simplifying constant evaluating to zero <(const nomodify byte*) SCREEN in [18] *((const nomodify byte*) DTV_BLITTER_DEST_LO) ← <(const nomodify byte*) SCREEN
|
||||
Simplifying constant evaluating to zero <(word) $100 in [23] *((const nomodify byte*) DTV_BLITTER_DEST_LIN_LO) ← <(word) $100
|
||||
Successful SSA optimization PassNSimplifyConstantZero
|
||||
Adding number conversion cast (unumber) 8 in if((byte) main::r#1!=(number) 8) goto main::@2
|
||||
Adding number conversion cast (unumber) 8 in if((byte) main::r#1!=(number) 8) goto main::@1
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast 8
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
@ -251,11 +240,11 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inlining constant with var siblings (const byte) main::r#0
|
||||
Constant inlined main::r#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@2)
|
||||
Added new block during phi lifting main::@6(between main::@3 and main::@2)
|
||||
Added new block during phi lifting main::@3(between main::@1 and main::@1)
|
||||
Added new block during phi lifting main::@4(between main::@2 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
@ -264,12 +253,9 @@ Created 1 initial phi equivalence classes
|
||||
Coalesced [44] main::r#5 ← main::r#1
|
||||
Coalesced (already) [45] main::r#4 ← main::r#2
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@5
|
||||
Renumbering block @6 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -21,7 +21,7 @@ main::@2: scope:[main] from main::@1
|
||||
[8] *((const nomodify byte*) BGCOL) ← (byte) 0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@3
|
||||
[9] (byte) main::r#2 ← phi( main::@3/(byte) main::r#1 main::@2/(byte) $31 )
|
||||
[9] (byte) main::r#2 ← phi( main::@2/(byte) $31 main::@3/(byte) main::r#1 )
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
[11] *((const nomodify byte*) BGCOL) ← ++ *((const nomodify byte*) BGCOL)
|
||||
[12] (byte) main::r#1 ← ++ (byte) main::r#2
|
||||
|
@ -1,77 +1,58 @@
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@15
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@16
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@13
|
||||
Culled Empty Block (label) main::@14
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@6
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @6
|
||||
main: scope:[main] from @1
|
||||
asm { sei }
|
||||
*((const nomodify byte*) DTV_FEATURE) ← (const nomodify byte) DTV_FEATURE_ENABLE
|
||||
*((const nomodify byte*) DTV_CONTROL) ← (const nomodify byte) DTV_HIGHCOLOR|(const nomodify byte) DTV_BORDER_OFF|(const nomodify byte) DTV_BADLINE_OFF
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@12
|
||||
if(true) goto main::@4
|
||||
main::@1: scope:[main] from main main::@6
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@4: scope:[main] from main::@1 main::@4
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
(bool~) main::$0 ← *((const nomodify byte*) RASTER) != (number) $40
|
||||
if((bool~) main::$0) goto main::@4
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@4
|
||||
if((bool~) main::$0) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
*((const nomodify byte*) BGCOL) ← (number) 0
|
||||
(byte) main::r#0 ← (byte) $31
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@10 main::@6
|
||||
(byte) main::r#2 ← phi( main::@10/(byte) main::r#1 main::@6/(byte) main::r#0 )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
(byte) main::r#2 ← phi( main::@3/(byte) main::r#0 main::@4/(byte) main::r#1 )
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
*((const nomodify byte*) BGCOL) ← ++ *((const nomodify byte*) BGCOL)
|
||||
(byte) main::r#1 ← (byte) main::r#2 + rangenext($31,$ff)
|
||||
(bool~) main::$2 ← (byte) main::r#1 != rangelast($31,$ff)
|
||||
if((bool~) main::$2) goto main::@10
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
if((bool~) main::$2) goto main::@4
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
(byte) main::c#0 ← (byte) 0
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11 main::@12
|
||||
(byte) main::c#2 ← phi( main::@11/(byte) main::c#0 main::@12/(byte) main::c#1 )
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5 main::@6
|
||||
(byte) main::c#2 ← phi( main::@5/(byte) main::c#0 main::@6/(byte) main::c#1 )
|
||||
*((const nomodify byte*) DTV_PALETTE + (byte) main::c#2) ← *((const byte*) main::palette + (byte) main::c#2)
|
||||
*((const byte*) main::palette + (byte) main::c#2) ← ++ *((const byte*) main::palette + (byte) main::c#2)
|
||||
(byte) main::c#1 ← (byte) main::c#2 + rangenext(0,$f)
|
||||
(bool~) main::$4 ← (byte) main::c#1 != rangelast(0,$f)
|
||||
if((bool~) main::$4) goto main::@12
|
||||
if((bool~) main::$4) goto main::@6
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @7
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $d021
|
||||
@ -88,10 +69,10 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$2
|
||||
(bool~) main::$4
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@return
|
||||
(byte) main::c
|
||||
@ -120,23 +101,23 @@ Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) $40
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Simple Condition (bool~) main::$0 [5] if(*((const nomodify byte*) RASTER)!=(byte) $40) goto main::@4
|
||||
Simple Condition (bool~) main::$2 [13] if((byte) main::r#1!=rangelast($31,$ff)) goto main::@10
|
||||
Simple Condition (bool~) main::$4 [20] if((byte) main::c#1!=rangelast(0,$f)) goto main::@12
|
||||
Simple Condition (bool~) main::$0 [5] if(*((const nomodify byte*) RASTER)!=(byte) $40) goto main::@2
|
||||
Simple Condition (bool~) main::$2 [13] if((byte) main::r#1!=rangelast($31,$ff)) goto main::@4
|
||||
Simple Condition (bool~) main::$4 [20] if((byte) main::c#1!=rangelast(0,$f)) goto main::@6
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) main::r#0 = $31
|
||||
Constant (const byte) main::c#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [3] if(true) goto main::@4
|
||||
if() condition always true - replacing block destination [3] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Resolved ranged next value [11] main::r#1 ← ++ main::r#2 to ++
|
||||
Resolved ranged comparison value [13] if(main::r#1!=rangelast($31,$ff)) goto main::@10 to (number) 0
|
||||
Resolved ranged comparison value [13] if(main::r#1!=rangelast($31,$ff)) goto main::@4 to (number) 0
|
||||
Resolved ranged next value [18] main::c#1 ← ++ main::c#2 to ++
|
||||
Resolved ranged comparison value [20] if(main::c#1!=rangelast(0,$f)) goto main::@12 to (number) $10
|
||||
Resolved ranged comparison value [20] if(main::c#1!=rangelast(0,$f)) goto main::@6 to (number) $10
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Adding number conversion cast (unumber) 0 in if((byte) main::r#1!=(number) 0) goto main::@10
|
||||
Adding number conversion cast (unumber) $10 in if((byte) main::c#1!=(number) $10) goto main::@12
|
||||
Adding number conversion cast (unumber) 0 in if((byte) main::r#1!=(number) 0) goto main::@4
|
||||
Adding number conversion cast (unumber) $10 in if((byte) main::c#1!=(number) $10) goto main::@6
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast $10
|
||||
@ -149,14 +130,14 @@ Inlining constant with var siblings (const byte) main::c#0
|
||||
Constant inlined main::r#0 = (byte) $31
|
||||
Constant inlined main::c#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@17(between main::@10 and main::@10)
|
||||
Added new block during phi lifting main::@18(between main::@12 and main::@12)
|
||||
Added new block during phi lifting main::@7(between main::@4 and main::@4)
|
||||
Added new block during phi lifting main::@8(between main::@6 and main::@6)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@11
|
||||
Adding NOP phi() at start of main::@5
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
@ -164,16 +145,15 @@ Created 2 initial phi equivalence classes
|
||||
Coalesced [22] main::c#3 ← main::c#1
|
||||
Coalesced [23] main::r#3 ← main::r#1
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@18
|
||||
Culled Empty Block (label) main::@17
|
||||
Renumbering block @6 to @1
|
||||
Renumbering block main::@4 to main::@1
|
||||
Renumbering block main::@6 to main::@2
|
||||
Renumbering block main::@10 to main::@3
|
||||
Renumbering block main::@12 to main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@7
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@6 to main::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
@ -202,7 +182,7 @@ main::@2: scope:[main] from main::@1
|
||||
[8] *((const nomodify byte*) BGCOL) ← (byte) 0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@3
|
||||
[9] (byte) main::r#2 ← phi( main::@3/(byte) main::r#1 main::@2/(byte) $31 )
|
||||
[9] (byte) main::r#2 ← phi( main::@2/(byte) $31 main::@3/(byte) main::r#1 )
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
[11] *((const nomodify byte*) BGCOL) ← ++ *((const nomodify byte*) BGCOL)
|
||||
[12] (byte) main::r#1 ← ++ (byte) main::r#2
|
||||
|
@ -21,9 +21,9 @@ main::@3: scope:[main] from main
|
||||
[10] call gfx_init
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@3 main::@4
|
||||
[11] (byte) form_field_idx#1 ← phi( main::@4/(byte) form_field_idx#18 main::@3/(byte) 0 )
|
||||
[11] (byte) keyboard_events_size#27 ← phi( main::@4/(byte) keyboard_events_size#24 main::@3/(byte) 0 )
|
||||
[11] (signed byte) form_cursor_count#1 ← phi( main::@4/(signed byte) form_cursor_count#16 main::@3/(const nomodify signed byte) FORM_CURSOR_BLINK/(signed byte) 2 )
|
||||
[11] (byte) form_field_idx#1 ← phi( main::@3/(byte) 0 main::@4/(byte) form_field_idx#18 )
|
||||
[11] (byte) keyboard_events_size#27 ← phi( main::@3/(byte) 0 main::@4/(byte) keyboard_events_size#24 )
|
||||
[11] (signed byte) form_cursor_count#1 ← phi( main::@3/(const nomodify signed byte) FORM_CURSOR_BLINK/(signed byte) 2 main::@4/(signed byte) form_cursor_count#16 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[12] phi()
|
||||
@ -373,7 +373,7 @@ keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan:
|
||||
|
||||
(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
|
||||
keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3
|
||||
[211] (byte) keyboard_event_pressed::keycode#4 ← phi( keyboard_event_scan::@1/(const nomodify byte) KEY_RSHIFT keyboard_event_scan::@2/(const nomodify byte) KEY_CTRL keyboard_event_scan::@17/(const nomodify byte) KEY_LSHIFT keyboard_event_scan::@3/(const nomodify byte) KEY_COMMODORE )
|
||||
[211] (byte) keyboard_event_pressed::keycode#4 ← phi( keyboard_event_scan::@1/(const nomodify byte) KEY_RSHIFT keyboard_event_scan::@17/(const nomodify byte) KEY_LSHIFT keyboard_event_scan::@2/(const nomodify byte) KEY_CTRL keyboard_event_scan::@3/(const nomodify byte) KEY_COMMODORE )
|
||||
[212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3
|
||||
[213] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte*) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
|
||||
[214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7
|
||||
@ -480,7 +480,7 @@ get_plane::@1: scope:[get_plane] from get_plane::@14
|
||||
[249] phi()
|
||||
to:get_plane::@return
|
||||
get_plane::@return: scope:[get_plane] from get_plane get_plane::@1 get_plane::@10 get_plane::@11 get_plane::@12 get_plane::@13 get_plane::@14 get_plane::@2 get_plane::@3 get_plane::@4 get_plane::@5 get_plane::@6 get_plane::@7 get_plane::@8 get_plane::@9
|
||||
[250] (dword) get_plane::return#14 ← phi( get_plane/(dword)(const nomodify byte*) VIC_SCREEN0 get_plane::@10/(const nomodify dword) PLANE_HORISONTAL2 get_plane::@11/(const nomodify dword) PLANE_VERTICAL2 get_plane::@12/(const nomodify dword) PLANE_CHARSET8 get_plane::@13/(const nomodify dword) PLANE_BLANK get_plane::@2/(dword)(const nomodify byte*) VIC_SCREEN1 get_plane::@1/(dword)(const nomodify byte*) VIC_SCREEN0 get_plane::@3/(dword)(const nomodify byte*) VIC_SCREEN2 get_plane::@4/(dword)(const nomodify byte*) VIC_SCREEN3 get_plane::@14/(const nomodify dword) PLANE_FULL get_plane::@5/(dword)(const nomodify byte*) VIC_BITMAP get_plane::@6/(dword)(const nomodify byte*) VIC_CHARSET_ROM get_plane::@7/(const nomodify dword) PLANE_8BPP_CHUNKY get_plane::@8/(const nomodify dword) PLANE_HORISONTAL get_plane::@9/(const nomodify dword) PLANE_VERTICAL )
|
||||
[250] (dword) get_plane::return#14 ← phi( get_plane/(dword)(const nomodify byte*) VIC_SCREEN0 get_plane::@10/(const nomodify dword) PLANE_HORISONTAL2 get_plane::@11/(const nomodify dword) PLANE_VERTICAL2 get_plane::@12/(const nomodify dword) PLANE_CHARSET8 get_plane::@13/(const nomodify dword) PLANE_BLANK get_plane::@1/(dword)(const nomodify byte*) VIC_SCREEN0 get_plane::@2/(dword)(const nomodify byte*) VIC_SCREEN1 get_plane::@14/(const nomodify dword) PLANE_FULL get_plane::@3/(dword)(const nomodify byte*) VIC_SCREEN2 get_plane::@4/(dword)(const nomodify byte*) VIC_SCREEN3 get_plane::@5/(dword)(const nomodify byte*) VIC_BITMAP get_plane::@6/(dword)(const nomodify byte*) VIC_CHARSET_ROM get_plane::@7/(const nomodify dword) PLANE_8BPP_CHUNKY get_plane::@8/(const nomodify dword) PLANE_HORISONTAL get_plane::@9/(const nomodify dword) PLANE_VERTICAL )
|
||||
[251] return
|
||||
to:@return
|
||||
|
||||
@ -547,10 +547,10 @@ form_mode::@2: scope:[form_mode] from form_mode::@1
|
||||
[288] (byte) form_mode::preset_current#0 ← *((const byte*) form_fields_val)
|
||||
to:form_mode::@3
|
||||
form_mode::@3: scope:[form_mode] from form_mode::@19 form_mode::@2 form_mode::@6
|
||||
[289] (byte) form_mode::preset_current#6 ← phi( form_mode::@6/(byte) form_mode::preset_current#6 form_mode::@2/(byte) form_mode::preset_current#0 form_mode::@19/(byte) form_mode::preset_current#1 )
|
||||
[289] (byte) form_field_idx#28 ← phi( form_mode::@6/(byte) form_field_idx#18 form_mode::@2/(byte) form_field_idx#1 form_mode::@19/(byte) form_field_idx#18 )
|
||||
[289] (byte) keyboard_events_size#47 ← phi( form_mode::@6/(byte) keyboard_events_size#24 form_mode::@2/(byte) keyboard_events_size#27 form_mode::@19/(byte) keyboard_events_size#24 )
|
||||
[289] (signed byte) form_cursor_count#21 ← phi( form_mode::@6/(signed byte) form_cursor_count#16 form_mode::@2/(signed byte) form_cursor_count#1 form_mode::@19/(signed byte) form_cursor_count#16 )
|
||||
[289] (byte) form_mode::preset_current#6 ← phi( form_mode::@2/(byte) form_mode::preset_current#0 form_mode::@19/(byte) form_mode::preset_current#1 form_mode::@6/(byte) form_mode::preset_current#6 )
|
||||
[289] (byte) form_field_idx#28 ← phi( form_mode::@2/(byte) form_field_idx#1 form_mode::@19/(byte) form_field_idx#18 form_mode::@6/(byte) form_field_idx#18 )
|
||||
[289] (byte) keyboard_events_size#47 ← phi( form_mode::@2/(byte) keyboard_events_size#27 form_mode::@19/(byte) keyboard_events_size#24 form_mode::@6/(byte) keyboard_events_size#24 )
|
||||
[289] (signed byte) form_cursor_count#21 ← phi( form_mode::@2/(signed byte) form_cursor_count#1 form_mode::@19/(signed byte) form_cursor_count#16 form_mode::@6/(signed byte) form_cursor_count#16 )
|
||||
to:form_mode::@4
|
||||
form_mode::@4: scope:[form_mode] from form_mode::@3 form_mode::@4
|
||||
[290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4
|
||||
@ -622,7 +622,7 @@ render_preset_name::@1: scope:[render_preset_name] from render_preset_name::@12
|
||||
[316] phi()
|
||||
to:render_preset_name::@2
|
||||
render_preset_name::@2: scope:[render_preset_name] from render_preset_name render_preset_name::@1 render_preset_name::@10 render_preset_name::@11 render_preset_name::@12 render_preset_name::@3 render_preset_name::@4 render_preset_name::@5 render_preset_name::@6 render_preset_name::@7 render_preset_name::@8 render_preset_name::@9
|
||||
[317] (byte*) render_preset_name::name#13 ← phi( render_preset_name/(const byte*) render_preset_name::name#1 render_preset_name::@11/(const byte*) render_preset_name::name#10 render_preset_name::@1/(const byte*) render_preset_name::name#11 render_preset_name::@3/(const byte*) render_preset_name::name#2 render_preset_name::@4/(const byte*) render_preset_name::name#3 render_preset_name::@12/(const byte*) render_preset_name::name#1 render_preset_name::@5/(const byte*) render_preset_name::name#4 render_preset_name::@6/(const byte*) render_preset_name::name#5 render_preset_name::@7/(const byte*) render_preset_name::name#6 render_preset_name::@8/(const byte*) render_preset_name::name#7 render_preset_name::@9/(const byte*) render_preset_name::name#8 render_preset_name::@10/(const byte*) render_preset_name::name#9 )
|
||||
[317] (byte*) render_preset_name::name#13 ← phi( render_preset_name/(const byte*) render_preset_name::name#1 render_preset_name::@11/(const byte*) render_preset_name::name#10 render_preset_name::@1/(const byte*) render_preset_name::name#11 render_preset_name::@3/(const byte*) render_preset_name::name#2 render_preset_name::@12/(const byte*) render_preset_name::name#1 render_preset_name::@4/(const byte*) render_preset_name::name#3 render_preset_name::@5/(const byte*) render_preset_name::name#4 render_preset_name::@6/(const byte*) render_preset_name::name#5 render_preset_name::@7/(const byte*) render_preset_name::name#6 render_preset_name::@8/(const byte*) render_preset_name::name#7 render_preset_name::@9/(const byte*) render_preset_name::name#8 render_preset_name::@10/(const byte*) render_preset_name::name#9 )
|
||||
[318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13
|
||||
[319] call print_str_at
|
||||
to:render_preset_name::@return
|
||||
@ -718,7 +718,7 @@ apply_preset::@1: scope:[apply_preset] from apply_preset::@12
|
||||
[353] phi()
|
||||
to:apply_preset::@2
|
||||
apply_preset::@2: scope:[apply_preset] from apply_preset apply_preset::@1 apply_preset::@10 apply_preset::@11 apply_preset::@12 apply_preset::@3 apply_preset::@4 apply_preset::@5 apply_preset::@6 apply_preset::@7 apply_preset::@8 apply_preset::@9
|
||||
[354] (byte*) apply_preset::preset#15 ← phi( apply_preset/(const byte*) preset_stdchar apply_preset::@11/(const byte*) preset_sixsfred2 apply_preset::@1/(const byte*) preset_8bpppixelcell apply_preset::@3/(const byte*) preset_ecmchar apply_preset::@4/(const byte*) preset_stdbm apply_preset::@12/(const byte*) preset_stdchar apply_preset::@5/(const byte*) preset_mcbm apply_preset::@6/(const byte*) preset_hi_stdchar apply_preset::@7/(const byte*) preset_hi_ecmchar apply_preset::@8/(const byte*) preset_twoplane apply_preset::@9/(const byte*) preset_chunky apply_preset::@10/(const byte*) preset_sixsfred )
|
||||
[354] (byte*) apply_preset::preset#15 ← phi( apply_preset/(const byte*) preset_stdchar apply_preset::@11/(const byte*) preset_sixsfred2 apply_preset::@1/(const byte*) preset_8bpppixelcell apply_preset::@3/(const byte*) preset_ecmchar apply_preset::@12/(const byte*) preset_stdchar apply_preset::@4/(const byte*) preset_stdbm apply_preset::@5/(const byte*) preset_mcbm apply_preset::@6/(const byte*) preset_hi_stdchar apply_preset::@7/(const byte*) preset_hi_ecmchar apply_preset::@8/(const byte*) preset_twoplane apply_preset::@9/(const byte*) preset_chunky apply_preset::@10/(const byte*) preset_sixsfred )
|
||||
to:apply_preset::@13
|
||||
apply_preset::@13: scope:[apply_preset] from apply_preset::@14 apply_preset::@2
|
||||
[355] (byte) apply_preset::i#2 ← phi( apply_preset::@2/(byte) 0 apply_preset::@14/(byte) apply_preset::i#1 )
|
||||
@ -852,7 +852,7 @@ form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@1
|
||||
|
||||
(void()) print_str_lines((byte*) print_str_lines::str)
|
||||
print_str_lines: scope:[print_str_lines] from form_mode::@12 form_mode::@9
|
||||
[415] (byte*) print_str_lines::str#5 ← phi( form_mode::@9/(const byte*) FORM_COLS form_mode::@12/(const byte*) FORM_TEXT )
|
||||
[415] (byte*) print_str_lines::str#5 ← phi( form_mode::@12/(const byte*) FORM_TEXT form_mode::@9/(const byte*) FORM_COLS )
|
||||
[416] (byte*) print_char_cursor#72 ← (byte*) print_set_screen::screen#2
|
||||
to:print_str_lines::@1
|
||||
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@6
|
||||
@ -876,7 +876,7 @@ print_str_lines::@4: scope:[print_str_lines] from print_str_lines::@2
|
||||
[425] call print_char
|
||||
to:print_str_lines::@3
|
||||
print_str_lines::@3: scope:[print_str_lines] from print_str_lines::@2 print_str_lines::@4
|
||||
[426] (byte*) print_char_cursor#42 ← phi( print_str_lines::@4/(byte*) print_char_cursor#28 print_str_lines::@2/(byte*) print_char_cursor#41 )
|
||||
[426] (byte*) print_char_cursor#42 ← phi( print_str_lines::@2/(byte*) print_char_cursor#41 print_str_lines::@4/(byte*) print_char_cursor#28 )
|
||||
[427] if((byte) 0!=(byte) print_str_lines::ch#0) goto print_str_lines::@2
|
||||
to:print_str_lines::@5
|
||||
print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3
|
||||
@ -1416,11 +1416,11 @@ bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@11
|
||||
|
||||
(void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd)
|
||||
bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@8
|
||||
[683] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::x1#0 bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 )
|
||||
[683] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::xd#0 bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 )
|
||||
[683] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::y#0 bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 )
|
||||
[683] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::x#0 bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 )
|
||||
[683] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::yd#0 bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 )
|
||||
[683] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@8/(byte) bitmap_line_xdyi::x1#0 )
|
||||
[683] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@8/(byte) bitmap_line_xdyi::xd#0 )
|
||||
[683] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@8/(byte) bitmap_line_xdyi::y#0 )
|
||||
[683] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@8/(byte) bitmap_line_xdyi::x#0 )
|
||||
[683] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@8/(byte) bitmap_line_xdyi::yd#0 )
|
||||
[684] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1
|
||||
to:bitmap_line_xdyi::@1
|
||||
bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2
|
||||
@ -1502,11 +1502,11 @@ bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2
|
||||
|
||||
(void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd)
|
||||
bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@12 bitmap_line::@9
|
||||
[720] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::x1#0 bitmap_line::@12/(byte) bitmap_line_xdyd::x1#1 )
|
||||
[720] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::xd#0 bitmap_line::@12/(byte) bitmap_line_xdyd::xd#1 )
|
||||
[720] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::y#0 bitmap_line::@12/(byte) bitmap_line_xdyd::y#1 )
|
||||
[720] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::x#0 bitmap_line::@12/(byte) bitmap_line_xdyd::x#1 )
|
||||
[720] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::yd#0 bitmap_line::@12/(byte) bitmap_line_xdyd::yd#1 )
|
||||
[720] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@9/(byte) bitmap_line_xdyd::x1#0 )
|
||||
[720] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@9/(byte) bitmap_line_xdyd::xd#0 )
|
||||
[720] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::y#1 bitmap_line::@9/(byte) bitmap_line_xdyd::y#0 )
|
||||
[720] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::x#1 bitmap_line::@9/(byte) bitmap_line_xdyd::x#0 )
|
||||
[720] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@9/(byte) bitmap_line_xdyd::yd#0 )
|
||||
[721] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1
|
||||
to:bitmap_line_xdyd::@1
|
||||
bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2
|
||||
|
File diff suppressed because one or more lines are too long
@ -1272,23 +1272,23 @@ reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ]
|
||||
reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
|
||||
reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ]
|
||||
reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
|
||||
reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp[1]:13 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 gfx_mode::cy#4 gfx_mode::cy#1 ]
|
||||
reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp[1]:13 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 gfx_mode::cy#4 gfx_mode::cy#1 ]
|
||||
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ]
|
||||
zp[1]:14 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_fill::fill#6 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
|
||||
zp[1]:14 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_fill::fill#6 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
|
||||
reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ]
|
||||
zp[1]:15 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 keyboard_event_pressed::keycode#4 ]
|
||||
zp[1]:15 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 keyboard_event_pressed::keycode#4 ]
|
||||
reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ]
|
||||
reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ]
|
||||
zp[2]:16 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::gfxb#0 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 form_set_screen::line#2 form_set_screen::line#1 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$82 gfx_mode::$47 gfx_mode::$48 ]
|
||||
zp[1]:18 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
zp[1]:18 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ]
|
||||
reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
reg byte a [ gfx_mode::$18 ]
|
||||
@ -1347,7 +1347,7 @@ reg byte a [ form_mode::$11 ]
|
||||
reg byte a [ apply_preset::idx#0 ]
|
||||
reg byte y [ form_field_ptr::y#0 ]
|
||||
zp[2]:20 [ form_field_ptr::line#0 gfx_mode::$24 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ]
|
||||
zp[1]:22 [ form_field_ptr::x#0 keyboard_event_scan::row_scan#0 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ]
|
||||
reg byte a [ form_control::$12 ]
|
||||
reg byte a [ keyboard_event_get::return#4 ]
|
||||
reg byte a [ form_control::key_event#0 ]
|
||||
|
@ -404,7 +404,7 @@ mode_ctrl::@18: scope:[mode_ctrl] from mode_ctrl::@11
|
||||
|
||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||
keyboard_key_pressed: scope:[keyboard_key_pressed] from menu::@10 menu::@11 menu::@12 menu::@13 menu::@14 menu::@15 menu::@16 menu::@5 menu::@6 menu::@7 menu::@8 menu::@9 mode_ctrl::@10 mode_ctrl::@3 mode_ctrl::@4 mode_ctrl::@5 mode_ctrl::@6 mode_ctrl::@7 mode_ctrl::@8 mode_ctrl::@9
|
||||
[211] (byte) keyboard_key_pressed::key#20 ← phi( menu::@5/(const nomodify byte) KEY_1 menu::@6/(const nomodify byte) KEY_2 menu::@7/(const nomodify byte) KEY_3 menu::@8/(const nomodify byte) KEY_4 menu::@9/(const nomodify byte) KEY_6 menu::@10/(const nomodify byte) KEY_7 menu::@11/(const nomodify byte) KEY_8 menu::@12/(const nomodify byte) KEY_A menu::@13/(const nomodify byte) KEY_B menu::@14/(const nomodify byte) KEY_C menu::@15/(const nomodify byte) KEY_D menu::@16/(const nomodify byte) KEY_E mode_ctrl::@4/(const nomodify byte) KEY_L mode_ctrl::@5/(const nomodify byte) KEY_H mode_ctrl::@6/(const nomodify byte) KEY_O mode_ctrl::@7/(const nomodify byte) KEY_B mode_ctrl::@8/(const nomodify byte) KEY_U mode_ctrl::@9/(const nomodify byte) KEY_C mode_ctrl::@10/(const nomodify byte) KEY_0 mode_ctrl::@3/(const nomodify byte) KEY_SPACE )
|
||||
[211] (byte) keyboard_key_pressed::key#20 ← phi( menu::@8/(const nomodify byte) KEY_4 menu::@9/(const nomodify byte) KEY_6 menu::@10/(const nomodify byte) KEY_7 menu::@11/(const nomodify byte) KEY_8 menu::@12/(const nomodify byte) KEY_A menu::@13/(const nomodify byte) KEY_B menu::@14/(const nomodify byte) KEY_C menu::@15/(const nomodify byte) KEY_D menu::@16/(const nomodify byte) KEY_E menu::@5/(const nomodify byte) KEY_1 menu::@6/(const nomodify byte) KEY_2 menu::@7/(const nomodify byte) KEY_3 mode_ctrl::@10/(const nomodify byte) KEY_0 mode_ctrl::@3/(const nomodify byte) KEY_SPACE mode_ctrl::@4/(const nomodify byte) KEY_L mode_ctrl::@5/(const nomodify byte) KEY_H mode_ctrl::@6/(const nomodify byte) KEY_O mode_ctrl::@7/(const nomodify byte) KEY_B mode_ctrl::@8/(const nomodify byte) KEY_U mode_ctrl::@9/(const nomodify byte) KEY_C )
|
||||
[212] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte) 7
|
||||
[213] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte) 3
|
||||
[214] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0
|
||||
@ -1154,11 +1154,11 @@ bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@11
|
||||
|
||||
(void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd)
|
||||
bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@8
|
||||
[654] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::x1#0 bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 )
|
||||
[654] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::xd#0 bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 )
|
||||
[654] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::y#0 bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 )
|
||||
[654] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::x#0 bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 )
|
||||
[654] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@8/(byte) bitmap_line_xdyi::yd#0 bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 )
|
||||
[654] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@8/(byte) bitmap_line_xdyi::x1#0 )
|
||||
[654] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@8/(byte) bitmap_line_xdyi::xd#0 )
|
||||
[654] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@8/(byte) bitmap_line_xdyi::y#0 )
|
||||
[654] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@8/(byte) bitmap_line_xdyi::x#0 )
|
||||
[654] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@8/(byte) bitmap_line_xdyi::yd#0 )
|
||||
[655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte) 1
|
||||
to:bitmap_line_xdyi::@1
|
||||
bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2
|
||||
@ -1240,11 +1240,11 @@ bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2
|
||||
|
||||
(void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd)
|
||||
bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@12 bitmap_line::@9
|
||||
[691] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::x1#0 bitmap_line::@12/(byte) bitmap_line_xdyd::x1#1 )
|
||||
[691] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::xd#0 bitmap_line::@12/(byte) bitmap_line_xdyd::xd#1 )
|
||||
[691] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::y#0 bitmap_line::@12/(byte) bitmap_line_xdyd::y#1 )
|
||||
[691] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::x#0 bitmap_line::@12/(byte) bitmap_line_xdyd::x#1 )
|
||||
[691] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@9/(byte) bitmap_line_xdyd::yd#0 bitmap_line::@12/(byte) bitmap_line_xdyd::yd#1 )
|
||||
[691] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@9/(byte) bitmap_line_xdyd::x1#0 )
|
||||
[691] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@9/(byte) bitmap_line_xdyd::xd#0 )
|
||||
[691] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::y#1 bitmap_line::@9/(byte) bitmap_line_xdyd::y#0 )
|
||||
[691] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::x#1 bitmap_line::@9/(byte) bitmap_line_xdyd::x#0 )
|
||||
[691] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@9/(byte) bitmap_line_xdyd::yd#0 )
|
||||
[692] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte) 1
|
||||
to:bitmap_line_xdyd::@1
|
||||
bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2
|
||||
@ -1578,7 +1578,7 @@ print_str_lines::@4: scope:[print_str_lines] from print_str_lines::@2
|
||||
[873] call print_char
|
||||
to:print_str_lines::@3
|
||||
print_str_lines::@3: scope:[print_str_lines] from print_str_lines::@2 print_str_lines::@4
|
||||
[874] (byte*) print_char_cursor#36 ← phi( print_str_lines::@4/(byte*) print_char_cursor#25 print_str_lines::@2/(byte*) print_char_cursor#35 )
|
||||
[874] (byte*) print_char_cursor#36 ← phi( print_str_lines::@2/(byte*) print_char_cursor#35 print_str_lines::@4/(byte*) print_char_cursor#25 )
|
||||
[875] if((byte) 0!=(byte) print_str_lines::ch#0) goto print_str_lines::@2
|
||||
to:print_str_lines::@5
|
||||
print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3
|
||||
|
File diff suppressed because one or more lines are too long
@ -1107,12 +1107,12 @@ reg byte x [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ]
|
||||
reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ]
|
||||
reg byte x [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ]
|
||||
reg byte x [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ]
|
||||
reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
reg byte x [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
reg byte y [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
|
||||
reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp[1]:2 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ]
|
||||
zp[1]:3 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#2 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
|
||||
reg byte x [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp[1]:2 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ]
|
||||
zp[1]:3 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
|
||||
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
@ -1192,7 +1192,7 @@ reg byte a [ mode_sixsfred2::$5 ]
|
||||
reg byte a [ mode_sixsfred2::$8 ]
|
||||
reg byte a [ mode_sixsfred2::row#0 ]
|
||||
reg byte a [ mode_hicolmcchar::$2 ]
|
||||
zp[1]:11 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
|
||||
zp[1]:11 [ mode_hicolmcchar::$3 mode_sixsfred2::$3 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
|
||||
reg byte a [ mode_hicolmcchar::$4 ]
|
||||
reg byte a [ mode_hicolmcchar::v#0 ]
|
||||
reg byte a [ mode_hicolecmchar::$2 ]
|
||||
@ -1225,7 +1225,7 @@ reg byte a [ bitmap_init::$9 ]
|
||||
reg byte a [ mode_mcchar::$2 ]
|
||||
reg byte a [ mode_mcchar::$3 ]
|
||||
reg byte a [ mode_mcchar::$4 ]
|
||||
zp[1]:17 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#0 bitmap_line_xdyd::x1#1 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ]
|
||||
zp[1]:17 [ mode_mcchar::$5 mode_stdbitmap::col2#0 mode_ecmchar::cy#4 mode_ecmchar::cy#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ]
|
||||
reg byte a [ mode_mcchar::$6 ]
|
||||
reg byte a [ mode_mcchar::$7 ]
|
||||
reg byte a [ mode_ecmchar::$2 ]
|
||||
@ -1237,7 +1237,7 @@ reg byte a [ mode_ecmchar::$7 ]
|
||||
reg byte a [ mode_stdchar::$2 ]
|
||||
reg byte a [ mode_stdchar::$3 ]
|
||||
reg byte a [ mode_stdchar::$4 ]
|
||||
zp[1]:19 [ mode_stdchar::$5 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||
zp[1]:19 [ mode_stdchar::$5 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 keyboard_key_pressed::colidx#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||
reg byte a [ mode_stdchar::$6 ]
|
||||
reg byte a [ mode_stdchar::$7 ]
|
||||
reg byte a [ print_str_lines::ch#0 ]
|
||||
|
@ -1,5 +1,3 @@
|
||||
Fixing pointer array-indexing *((const nomodify word*) SCREEN + (byte) idx)
|
||||
Identified constant variable (word) main::w
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,17 +1,12 @@
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) line::@4
|
||||
Culled Empty Block (label) line::@3
|
||||
Culled Empty Block (label) line::@5
|
||||
Culled Empty Block (label) line::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) screen#0 ← (byte*)(number) $400
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen#13 ← phi( @2/(byte*) screen#15 )
|
||||
main: scope:[main] from @1
|
||||
(byte*) screen#13 ← phi( @1/(byte*) screen#15 )
|
||||
(byte) line::x0#0 ← (number) 1
|
||||
(byte) line::x1#0 ← (number) 2
|
||||
call line
|
||||
@ -60,19 +55,19 @@ line::@return: scope:[line] from line::@1
|
||||
(byte*) screen#5 ← (byte*) screen#11
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
(byte*) screen#15 ← phi( @begin/(byte*) screen#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
(byte*) screen#12 ← phi( @2/(byte*) screen#3 )
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
(byte*) screen#12 ← phi( @1/(byte*) screen#3 )
|
||||
(byte*) screen#6 ← (byte*) screen#12
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) line((byte) line::x0 , (byte) line::x1)
|
||||
@ -174,8 +169,8 @@ Constant inlined line::x1#0 = (byte) 2
|
||||
Constant inlined line::x0#1 = (byte) 3
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -190,9 +185,8 @@ Coalesced (already) [13] screen#18 ← screen#16
|
||||
Coalesced [20] line::x#5 ← line::x#1
|
||||
Coalesced [21] screen#19 ← screen#4
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@2
|
||||
Renumbering block @2 to @1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,5 +1,3 @@
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -59,7 +57,7 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Constant inlined main::i#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@3(between main::@1 and main::@1)
|
||||
Added new block during phi lifting main::@2(between main::@1 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -72,7 +70,7 @@ Created 1 initial phi equivalence classes
|
||||
Coalesced [11] main::i#3 ← main::i#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,17 +1,12 @@
|
||||
Fixing pointer array-indexing *((const byte**) screens + (byte) getScreen::id)
|
||||
Inlined call (byte*~) main::$0 ← call getScreen (number) 0
|
||||
Inlined call (byte*~) main::$1 ← call spritePtr (byte*) main::screen
|
||||
Culled Empty Block (label) main::getScreen1_@1
|
||||
Culled Empty Block (label) main::spritePtr1_@1
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@3
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @3
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::screen#0 ← (byte*) 0
|
||||
(byte) main::getScreen1_id#0 ← (number) 0
|
||||
to:main::getScreen1
|
||||
@ -47,16 +42,16 @@ main::@2: scope:[main] from main::spritePtr1_@return
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @4
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) SIZEOF_POINTER = (byte) 2
|
||||
@ -133,8 +128,8 @@ Eliminating unused constant (const byte) main::getScreen1_$0
|
||||
Eliminating unused constant (const byte) SIZEOF_POINTER
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::getScreen1_@return
|
||||
@ -145,11 +140,10 @@ Calls in [] to main:2
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::getScreen1_@return
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::spritePtr1_@return
|
||||
Renumbering block @3 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
|
@ -1,18 +1,12 @@
|
||||
Fixing pointer array-indexing *((const byte**) screens + (byte) getScreen::id)
|
||||
Identified constant variable (byte*) main::DSP
|
||||
Inlined call (byte*~) main::$0 ← call getScreen (number) 0
|
||||
Inlined call (byte~) main::$1 ← call spritePtr (byte*~) main::$0
|
||||
Culled Empty Block (label) main::getScreen1_@1
|
||||
Culled Empty Block (label) main::spritePtr1_@1
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@3
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @3
|
||||
main: scope:[main] from @1
|
||||
(byte) main::getScreen1_id#0 ← (number) 0
|
||||
to:main::getScreen1
|
||||
main::getScreen1: scope:[main] from main
|
||||
@ -46,16 +40,16 @@ main::@2: scope:[main] from main::spritePtr1_@return
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @4
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) SIZEOF_POINTER = (byte) 2
|
||||
@ -129,8 +123,8 @@ Eliminating unused constant (const byte) main::getScreen1_$0
|
||||
Eliminating unused constant (const byte) SIZEOF_POINTER
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::getScreen1_@return
|
||||
@ -141,11 +135,10 @@ Calls in [] to main:2
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::getScreen1_@return
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::spritePtr1_@return
|
||||
Renumbering block @3 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
|
@ -1,5 +1,3 @@
|
||||
Identified constant variable (byte*) sprite
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,10 +1,3 @@
|
||||
De-inlining cast (byte)main::$1
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
Identified constant variable (byte) main::min
|
||||
Identified constant variable (byte) main::max
|
||||
Identified constant variable (byte*) main::BGCOL
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -27,14 +20,14 @@ main: scope:[main] from @1
|
||||
*((const byte*) main::SCREEN + (number) 1) ← (byte) main::midb#0
|
||||
(bool~) main::$6 ← *((const byte*) main::SCREEN + (number) 0) == *((const byte*) main::SCREEN + (number) 1)
|
||||
if((bool~) main::$6) goto main::@1
|
||||
to:main::@3
|
||||
to:main::@2
|
||||
main::@1: scope:[main] from main
|
||||
*((const byte*) main::BGCOL) ← (number) 5
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main
|
||||
main::@2: scope:[main] from main
|
||||
*((const byte*) main::BGCOL) ← (number) 2
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1 main::@3
|
||||
main::@return: scope:[main] from main::@1 main::@2
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
@ -59,7 +52,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$6
|
||||
(byte~) main::$7
|
||||
(label) main::@1
|
||||
(label) main::@3
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const byte*) main::BGCOL = (byte*)(number) $d021
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
@ -163,7 +156,6 @@ Calls in [] to main:2
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Renumbering block main::@3 to main::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,8 +1,3 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (word) w::w1
|
||||
Identified constant variable (word) w::w2
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) w::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -12,13 +7,13 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) SCREEN3#0 ← (byte*~) $1
|
||||
(byte*~) $2 ← (const byte*) SCREEN + (number) $28*(number) 9
|
||||
(byte*) SCREEN4#0 ← (byte*~) $2
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
(byte*) SCREEN4#5 ← phi( @2/(byte*) SCREEN4#6 )
|
||||
(byte*) SCREEN3#5 ← phi( @2/(byte*) SCREEN3#6 )
|
||||
(byte*) SCREEN2#2 ← phi( @2/(byte*) SCREEN2#3 )
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN4#5 ← phi( @1/(byte*) SCREEN4#6 )
|
||||
(byte*) SCREEN3#5 ← phi( @1/(byte*) SCREEN3#6 )
|
||||
(byte*) SCREEN2#2 ← phi( @1/(byte*) SCREEN2#3 )
|
||||
(byte) main::b#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
@ -70,22 +65,22 @@ w::@1: scope:[w] from w w::@1
|
||||
w::@return: scope:[w] from w::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN4#6 ← phi( @begin/(byte*) SCREEN4#0 )
|
||||
(byte*) SCREEN3#6 ← phi( @begin/(byte*) SCREEN3#0 )
|
||||
(byte*) SCREEN2#3 ← phi( @begin/(byte*) SCREEN2#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(byte*~) $0
|
||||
(byte*~) $1
|
||||
(byte*~) $2
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) SCREEN = (byte*)(number) $400
|
||||
@ -215,10 +210,10 @@ Constant inlined w::$0 = (const word) w::w1-(const word) w::w2
|
||||
Constant inlined main::b#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@4(between main::@1 and main::@1)
|
||||
Added new block during phi lifting w::@3(between w::@1 and w::@1)
|
||||
Added new block during phi lifting w::@2(between w::@1 and w::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -232,11 +227,10 @@ Created 2 initial phi equivalence classes
|
||||
Coalesced [17] main::b#3 ← main::b#1
|
||||
Coalesced [26] w::i#3 ← w::i#1
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) w::@3
|
||||
Renumbering block @2 to @1
|
||||
Culled Empty Block (label) w::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,6 +1,3 @@
|
||||
Identified constant variable (byte*) PROCPORT
|
||||
Identified constant variable (byte*) CHARGEN
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,4 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -174,8 +173,8 @@ Constant inlined main::color#0 = (byte) 1
|
||||
Constant inlined main::row#0 = (byte) 0
|
||||
Constant inlined main::column#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@2 and main::@2)
|
||||
Added new block during phi lifting main::@4(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@2)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -194,8 +193,8 @@ Coalesced [24] main::column#3 ← main::column#1
|
||||
Coalesced [25] main::color#8 ← main::color#1
|
||||
Coalesced down to 5 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,92 +1,11 @@
|
||||
Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
|
||||
Fixing pointer addition (word*~) bsearch16u::$13 ← (word*) bsearch16u::pivot + (number) 1
|
||||
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
|
||||
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
|
||||
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
De-inlining cast (byte*)memcpy::source
|
||||
De-inlining cast (word)memmove::destination
|
||||
De-inlining cast (word)memmove::source
|
||||
De-inlining cast (byte*)memmove::source
|
||||
De-inlining cast (byte*)memmove::destination
|
||||
De-inlining cast (byte*)memset::str
|
||||
De-inlining cast (signed word)bsearch16u::key
|
||||
De-inlining cast (signed word)*(bsearch16u::pivot)
|
||||
De-inlining cast (byte)uctoa::value
|
||||
De-inlining cast (byte)utoa::value
|
||||
De-inlining cast (byte)ultoa::value
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strupr::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
|
||||
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
|
||||
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
|
||||
Identified constant variable (byte*) HEAP_TOP
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) clock::@1
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) @20
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) @28
|
||||
Culled Empty Block (label) @29
|
||||
Culled Empty Block (label) @30
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) @32
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) @34
|
||||
Culled Empty Block (label) @35
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) @37
|
||||
Culled Empty Block (label) @38
|
||||
Culled Empty Block (label) @39
|
||||
Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) @41
|
||||
Culled Empty Block (label) @42
|
||||
Culled Empty Block (label) @43
|
||||
Culled Empty Block (label) @44
|
||||
Culled Empty Block (label) @45
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@50
|
||||
to:@1
|
||||
|
||||
(dword()) clock()
|
||||
clock: scope:[clock] from main::@7
|
||||
clock: scope:[clock] from main::@3
|
||||
(number~) clock::$0 ← (number) $ffffffff - *((const nomodify dword*) CIA2_TIMER_AB)
|
||||
(dword) clock::return#0 ← (number~) clock::$0
|
||||
to:clock::@return
|
||||
@ -133,9 +52,9 @@ print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@2
|
||||
to:@return
|
||||
|
||||
(void()) print_ulong_at((dword) print_ulong_at::dw , (byte*) print_ulong_at::at)
|
||||
print_ulong_at: scope:[print_ulong_at] from main::@8
|
||||
(byte*) print_ulong_at::at#1 ← phi( main::@8/(byte*) print_ulong_at::at#0 )
|
||||
(dword) print_ulong_at::dw#1 ← phi( main::@8/(dword) print_ulong_at::dw#0 )
|
||||
print_ulong_at: scope:[print_ulong_at] from main::@4
|
||||
(byte*) print_ulong_at::at#1 ← phi( main::@4/(byte*) print_ulong_at::at#0 )
|
||||
(dword) print_ulong_at::dw#1 ← phi( main::@4/(dword) print_ulong_at::dw#0 )
|
||||
(word~) print_ulong_at::$0 ← > (dword) print_ulong_at::dw#1
|
||||
(word) print_uint_at::w#0 ← (word~) print_ulong_at::$0
|
||||
(byte*) print_uint_at::at#0 ← (byte*) print_ulong_at::at#1
|
||||
@ -191,43 +110,43 @@ print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @50
|
||||
main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@9
|
||||
main::@1: scope:[main] from main main::@5
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
call clock_start
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
asm { nop }
|
||||
call clock
|
||||
(dword) clock::return#2 ← (dword) clock::return#1
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
(dword) clock::return#4 ← phi( main::@7/(dword) clock::return#2 )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
(dword) clock::return#4 ← phi( main::@3/(dword) clock::return#2 )
|
||||
(dword~) main::$1 ← (dword) clock::return#4
|
||||
(dword~) main::$2 ← (dword~) main::$1 - (const nomodify dword) CLOCKS_PER_INIT
|
||||
(dword) main::cyclecount#0 ← (dword~) main::$2
|
||||
(dword) print_ulong_at::dw#0 ← (dword) main::cyclecount#0
|
||||
(byte*) print_ulong_at::at#0 ← (const nomodify byte*) SCREEN
|
||||
call print_ulong_at
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@50: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@51
|
||||
@51: scope:[] from @50
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @51
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @50
|
||||
(label) @51
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify dword*) CIA2_TIMER_AB = (dword*)(number) $dd04
|
||||
@ -260,9 +179,9 @@ SYMBOL TABLE SSA
|
||||
(dword~) main::$2
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(dword) main::cyclecount
|
||||
(dword) main::cyclecount#0
|
||||
@ -413,13 +332,13 @@ Constant inlined print_uint_at::at#1 = (const nomodify byte*) SCREEN+(byte) 4
|
||||
Constant inlined print_uint_at::at#0 = (const nomodify byte*) SCREEN
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @50
|
||||
Adding NOP phi() at start of @51
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of main::@9
|
||||
Adding NOP phi() at start of main::@5
|
||||
Adding NOP phi() at start of print_ulong_at::@2
|
||||
Adding NOP phi() at start of print_uint_at::@2
|
||||
Adding NOP phi() at start of print_uchar_at::@2
|
||||
@ -442,16 +361,15 @@ Coalesced [43] print_char_at::at#3 ← print_char_at::at#0
|
||||
Coalesced [48] print_char_at::ch#4 ← print_char_at::ch#1
|
||||
Coalesced [49] print_char_at::at#4 ← print_char_at::at#1
|
||||
Coalesced down to 6 phi equivalence classes
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) print_ulong_at::@2
|
||||
Culled Empty Block (label) print_uint_at::@2
|
||||
Culled Empty Block (label) print_uchar_at::@2
|
||||
Renumbering block @50 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@7 to main::@2
|
||||
Renumbering block main::@8 to main::@3
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@4 to main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,89 +1,8 @@
|
||||
Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
|
||||
Fixing pointer addition (word*~) bsearch16u::$13 ← (word*) bsearch16u::pivot + (number) 1
|
||||
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
|
||||
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
|
||||
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
|
||||
De-inlining cast (word)toD018::screen
|
||||
De-inlining cast (word)toSpritePtr::sprite
|
||||
De-inlining cast (byte*)memcpy::source
|
||||
De-inlining cast (word)memmove::destination
|
||||
De-inlining cast (word)memmove::source
|
||||
De-inlining cast (byte*)memmove::source
|
||||
De-inlining cast (byte*)memmove::destination
|
||||
De-inlining cast (byte*)memset::str
|
||||
De-inlining cast (signed word)bsearch16u::key
|
||||
De-inlining cast (signed word)*(bsearch16u::pivot)
|
||||
De-inlining cast (byte)uctoa::value
|
||||
De-inlining cast (byte)utoa::value
|
||||
De-inlining cast (byte)ultoa::value
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strupr::src)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
|
||||
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
|
||||
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
|
||||
Identified constant variable (byte*) HEAP_TOP
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) clock::@1
|
||||
Culled Empty Block (label) @5
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @14
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) @17
|
||||
Culled Empty Block (label) @18
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) @20
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) @28
|
||||
Culled Empty Block (label) @29
|
||||
Culled Empty Block (label) @30
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) @32
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) @34
|
||||
Culled Empty Block (label) @35
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) @37
|
||||
Culled Empty Block (label) @38
|
||||
Culled Empty Block (label) @39
|
||||
Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) @41
|
||||
Culled Empty Block (label) @42
|
||||
Culled Empty Block (label) @43
|
||||
Culled Empty Block (label) @44
|
||||
Culled Empty Block (label) @45
|
||||
Culled Empty Block (label) @46
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @48
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@50
|
||||
to:@1
|
||||
|
||||
(dword()) clock()
|
||||
clock: scope:[clock] from main::@2
|
||||
@ -133,9 +52,9 @@ print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@2
|
||||
to:@return
|
||||
|
||||
(void()) print_ulong_at((dword) print_ulong_at::dw , (byte*) print_ulong_at::at)
|
||||
print_ulong_at: scope:[print_ulong_at] from main::@8
|
||||
(byte*) print_ulong_at::at#1 ← phi( main::@8/(byte*) print_ulong_at::at#0 )
|
||||
(dword) print_ulong_at::dw#1 ← phi( main::@8/(dword) print_ulong_at::dw#0 )
|
||||
print_ulong_at: scope:[print_ulong_at] from main::@4
|
||||
(byte*) print_ulong_at::at#1 ← phi( main::@4/(byte*) print_ulong_at::at#0 )
|
||||
(dword) print_ulong_at::dw#1 ← phi( main::@4/(dword) print_ulong_at::dw#0 )
|
||||
(word~) print_ulong_at::$0 ← > (dword) print_ulong_at::dw#1
|
||||
(word) print_uint_at::w#0 ← (word~) print_ulong_at::$0
|
||||
(byte*) print_uint_at::at#0 ← (byte*) print_ulong_at::at#1
|
||||
@ -191,40 +110,40 @@ print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @50
|
||||
main: scope:[main] from @1
|
||||
call clock_start
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@7 main::@9
|
||||
main::@1: scope:[main] from main::@3 main::@5
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
call clock
|
||||
(dword) clock::return#2 ← (dword) clock::return#1
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@2
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@2
|
||||
(dword) clock::return#4 ← phi( main::@2/(dword) clock::return#2 )
|
||||
(dword~) main::$1 ← (dword) clock::return#4
|
||||
(dword) print_ulong_at::dw#0 ← (dword~) main::$1
|
||||
(byte*) print_ulong_at::at#0 ← (const nomodify byte*) SCREEN
|
||||
call print_ulong_at
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@50: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@51
|
||||
@51: scope:[] from @50
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @51
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @50
|
||||
(label) @51
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify dword*) CIA2_TIMER_AB = (dword*)(number) $dd04
|
||||
@ -255,9 +174,9 @@ SYMBOL TABLE SSA
|
||||
(dword~) main::$1
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
|
||||
(label) print_char_at::@return
|
||||
@ -406,14 +325,14 @@ Constant inlined print_uint_at::at#1 = (const nomodify byte*) SCREEN+(byte) 4
|
||||
Constant inlined print_uint_at::at#0 = (const nomodify byte*) SCREEN
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @50
|
||||
Adding NOP phi() at start of @51
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@7
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of main::@9
|
||||
Adding NOP phi() at start of main::@5
|
||||
Adding NOP phi() at start of print_ulong_at::@2
|
||||
Adding NOP phi() at start of print_uint_at::@2
|
||||
Adding NOP phi() at start of print_uchar_at::@2
|
||||
@ -436,16 +355,15 @@ Coalesced [41] print_char_at::at#3 ← print_char_at::at#0
|
||||
Coalesced [46] print_char_at::ch#4 ← print_char_at::ch#1
|
||||
Coalesced [47] print_char_at::at#4 ← print_char_at::at#1
|
||||
Coalesced down to 6 phi equivalence classes
|
||||
Culled Empty Block (label) @51
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) print_ulong_at::@2
|
||||
Culled Empty Block (label) print_uint_at::@2
|
||||
Culled Empty Block (label) print_uchar_at::@2
|
||||
Renumbering block @50 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@8 to main::@2
|
||||
Renumbering block main::@4 to main::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,8 +1,4 @@
|
||||
Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
Identified constant variable (byte*) BORDERCOL
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte) DARK_GREY
|
||||
Identified constant variable (byte) BLACK
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,4 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -130,8 +129,8 @@ Constant inlined main::a#0 = (byte) 0
|
||||
Constant inlined main::idx#0 = (byte) 0
|
||||
Constant inlined main::b#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@2 and main::@2)
|
||||
Added new block during phi lifting main::@4(between main::@3 and main::@1)
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@2)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -148,8 +147,8 @@ Coalesced [21] main::d#1 ← main::b#1
|
||||
Coalesced (already) [22] main::idx#7 ← main::idx#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,13 +1,12 @@
|
||||
Culled Empty Block (label) @1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte) b#0 ← (byte) 0
|
||||
to:@2
|
||||
to:@1
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @2
|
||||
(byte) b#6 ← phi( @2/(byte) b#12 )
|
||||
main: scope:[main] from @1
|
||||
(byte) b#6 ← phi( @1/(byte) b#12 )
|
||||
*((const nomodify byte*) SCREEN + (number) 0) ← (byte) b#6
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main main::@2
|
||||
@ -35,19 +34,19 @@ bb::@return: scope:[bb] from bb
|
||||
(byte) b#4 ← (byte) b#10
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
(byte) b#12 ← phi( @begin/(byte) b#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
(byte) b#11 ← phi( @2/(byte) b#1 )
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
(byte) b#11 ← phi( @1/(byte) b#1 )
|
||||
(byte) b#5 ← (byte) b#11
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) SCREEN = (byte*)(number) $400
|
||||
@ -109,16 +108,15 @@ Removing unused procedure block bb
|
||||
Removing unused procedure block bb::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Culled Empty Block (label) @3
|
||||
Renumbering block @2 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,5 +1,3 @@
|
||||
Identified constant variable (byte) main::b
|
||||
Identified constant variable (byte) main::d
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,4 +1,3 @@
|
||||
Identified constant variable (byte) main::b
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,4 +1,3 @@
|
||||
Identified constant variable (byte) main::b
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,10 +1,3 @@
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@10
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@12
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -26,18 +19,18 @@ main::@2: scope:[main] from main::@1
|
||||
to:main::@1
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte*) main::cc#0 ← (const nomodify byte*) main::cols+(number) $3e7
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@3 main::@8
|
||||
(byte*) main::cc#2 ← phi( main::@3/(byte*) main::cc#0 main::@8/(byte*) main::cc#1 )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@5
|
||||
(byte*) main::cc#2 ← phi( main::@3/(byte*) main::cc#0 main::@5/(byte*) main::cc#1 )
|
||||
(bool~) main::$1 ← (byte*) main::cc#2 > (const nomodify byte*) main::cols-(number) 1
|
||||
if((bool~) main::$1) goto main::@8
|
||||
if((bool~) main::$1) goto main::@5
|
||||
to:main::@return
|
||||
main::@8: scope:[main] from main::@7
|
||||
(byte*) main::cc#3 ← phi( main::@7/(byte*) main::cc#2 )
|
||||
main::@5: scope:[main] from main::@4
|
||||
(byte*) main::cc#3 ← phi( main::@4/(byte*) main::cc#2 )
|
||||
*((byte*) main::cc#3) ← (number) 2
|
||||
(byte*) main::cc#1 ← -- (byte*) main::cc#3
|
||||
to:main::@7
|
||||
main::@return: scope:[main] from main::@7
|
||||
to:main::@4
|
||||
main::@return: scope:[main] from main::@4
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
@ -58,8 +51,8 @@ SYMBOL TABLE SSA
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte*) main::cc
|
||||
(byte*) main::cc#0
|
||||
@ -97,7 +90,7 @@ Alias main::sc#2 = main::sc#3
|
||||
Alias main::cc#2 = main::cc#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$0 [3] if((byte*) main::sc#2<=(const nomodify byte*) main::screen+(word) $3e7) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [9] if((byte*) main::cc#2>(const nomodify byte*) main::cols-(byte) 1) goto main::@8
|
||||
Simple Condition (bool~) main::$1 [9] if((byte*) main::cc#2>(const nomodify byte*) main::cols-(byte) 1) goto main::@5
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::sc#0 = main::screen
|
||||
Constant (const byte*) main::cc#0 = main::cols+$3e7
|
||||
@ -122,8 +115,8 @@ Coalesced [17] main::sc#4 ← main::sc#1
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@3
|
||||
Renumbering block main::@7 to main::@3
|
||||
Renumbering block main::@8 to main::@4
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@5 to main::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,10 +1,3 @@
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@17
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) main::@18
|
||||
Culled Empty Block (label) main::@24
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -37,82 +30,82 @@ main::@4: scope:[main] from main::@3
|
||||
main::@5: scope:[main] from main::@3
|
||||
(byte*) main::screen#0 ← (const nomodify byte*) main::SCREEN
|
||||
(byte) main::i1#0 ← (byte) 0
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@16 main::@5
|
||||
(byte*) main::screen#8 ← phi( main::@16/(byte*) main::screen#13 main::@5/(byte*) main::screen#0 )
|
||||
(byte) main::i1#2 ← phi( main::@16/(byte) main::i1#1 main::@5/(byte) main::i1#0 )
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@12 main::@5
|
||||
(byte*) main::screen#8 ← phi( main::@12/(byte*) main::screen#13 main::@5/(byte*) main::screen#0 )
|
||||
(byte) main::i1#2 ← phi( main::@12/(byte) main::i1#1 main::@5/(byte) main::i1#0 )
|
||||
(bool~) main::$2 ← (byte) main::i1#2 <= (number) 9
|
||||
if((bool~) main::$2) goto main::@10
|
||||
if((bool~) main::$2) goto main::@7
|
||||
to:main::@return
|
||||
main::@10: scope:[main] from main::@9
|
||||
(byte) main::i1#3 ← phi( main::@9/(byte) main::i1#2 )
|
||||
(byte*) main::screen#2 ← phi( main::@9/(byte*) main::screen#8 )
|
||||
main::@7: scope:[main] from main::@6
|
||||
(byte) main::i1#3 ← phi( main::@6/(byte) main::i1#2 )
|
||||
(byte*) main::screen#2 ← phi( main::@6/(byte*) main::screen#8 )
|
||||
(byte*) main::screen#1 ← (byte*) main::screen#2 + (number) $28
|
||||
(byte~) main::$3 ← (byte) '0' + (byte) main::i1#3
|
||||
*((byte*) main::screen#1 + (number) 0) ← (byte~) main::$3
|
||||
(bool~) main::$4 ← (byte) main::i1#3 < (number) 5
|
||||
(bool~) main::$5 ← ! (bool~) main::$4
|
||||
if((bool~) main::$5) goto main::@12
|
||||
to:main::@19
|
||||
main::@12: scope:[main] from main::@10 main::@19
|
||||
(byte*) main::screen#9 ← phi( main::@10/(byte*) main::screen#1 main::@19/(byte*) main::screen#3 )
|
||||
(byte) main::i1#4 ← phi( main::@10/(byte) main::i1#3 main::@19/(byte) main::i1#9 )
|
||||
if((bool~) main::$5) goto main::@8
|
||||
to:main::@13
|
||||
main::@8: scope:[main] from main::@13 main::@7
|
||||
(byte*) main::screen#9 ← phi( main::@13/(byte*) main::screen#3 main::@7/(byte*) main::screen#1 )
|
||||
(byte) main::i1#4 ← phi( main::@13/(byte) main::i1#9 main::@7/(byte) main::i1#3 )
|
||||
(bool~) main::$6 ← (byte) main::i1#4 <= (number) 5
|
||||
(bool~) main::$7 ← ! (bool~) main::$6
|
||||
if((bool~) main::$7) goto main::@13
|
||||
to:main::@20
|
||||
main::@19: scope:[main] from main::@10
|
||||
(byte) main::i1#9 ← phi( main::@10/(byte) main::i1#3 )
|
||||
(byte*) main::screen#3 ← phi( main::@10/(byte*) main::screen#1 )
|
||||
if((bool~) main::$7) goto main::@9
|
||||
to:main::@14
|
||||
main::@13: scope:[main] from main::@7
|
||||
(byte) main::i1#9 ← phi( main::@7/(byte) main::i1#3 )
|
||||
(byte*) main::screen#3 ← phi( main::@7/(byte*) main::screen#1 )
|
||||
*((byte*) main::screen#3 + (number) 2) ← (byte) '+'
|
||||
to:main::@12
|
||||
main::@13: scope:[main] from main::@12 main::@20
|
||||
(byte*) main::screen#10 ← phi( main::@12/(byte*) main::screen#9 main::@20/(byte*) main::screen#4 )
|
||||
(byte) main::i1#5 ← phi( main::@12/(byte) main::i1#4 main::@20/(byte) main::i1#10 )
|
||||
to:main::@8
|
||||
main::@9: scope:[main] from main::@14 main::@8
|
||||
(byte*) main::screen#10 ← phi( main::@14/(byte*) main::screen#4 main::@8/(byte*) main::screen#9 )
|
||||
(byte) main::i1#5 ← phi( main::@14/(byte) main::i1#10 main::@8/(byte) main::i1#4 )
|
||||
(bool~) main::$8 ← (byte) main::i1#5 == (number) 5
|
||||
(bool~) main::$9 ← ! (bool~) main::$8
|
||||
if((bool~) main::$9) goto main::@14
|
||||
to:main::@21
|
||||
main::@20: scope:[main] from main::@12
|
||||
(byte) main::i1#10 ← phi( main::@12/(byte) main::i1#4 )
|
||||
(byte*) main::screen#4 ← phi( main::@12/(byte*) main::screen#9 )
|
||||
if((bool~) main::$9) goto main::@10
|
||||
to:main::@15
|
||||
main::@14: scope:[main] from main::@8
|
||||
(byte) main::i1#10 ← phi( main::@8/(byte) main::i1#4 )
|
||||
(byte*) main::screen#4 ← phi( main::@8/(byte*) main::screen#9 )
|
||||
*((byte*) main::screen#4 + (number) 5) ← (byte) '+'
|
||||
to:main::@13
|
||||
main::@14: scope:[main] from main::@13 main::@21
|
||||
(byte*) main::screen#11 ← phi( main::@13/(byte*) main::screen#10 main::@21/(byte*) main::screen#5 )
|
||||
(byte) main::i1#6 ← phi( main::@13/(byte) main::i1#5 main::@21/(byte) main::i1#11 )
|
||||
to:main::@9
|
||||
main::@10: scope:[main] from main::@15 main::@9
|
||||
(byte*) main::screen#11 ← phi( main::@15/(byte*) main::screen#5 main::@9/(byte*) main::screen#10 )
|
||||
(byte) main::i1#6 ← phi( main::@15/(byte) main::i1#11 main::@9/(byte) main::i1#5 )
|
||||
(bool~) main::$10 ← (byte) main::i1#6 >= (number) 5
|
||||
(bool~) main::$11 ← ! (bool~) main::$10
|
||||
if((bool~) main::$11) goto main::@15
|
||||
to:main::@22
|
||||
main::@21: scope:[main] from main::@13
|
||||
(byte) main::i1#11 ← phi( main::@13/(byte) main::i1#5 )
|
||||
(byte*) main::screen#5 ← phi( main::@13/(byte*) main::screen#10 )
|
||||
if((bool~) main::$11) goto main::@11
|
||||
to:main::@16
|
||||
main::@15: scope:[main] from main::@9
|
||||
(byte) main::i1#11 ← phi( main::@9/(byte) main::i1#5 )
|
||||
(byte*) main::screen#5 ← phi( main::@9/(byte*) main::screen#10 )
|
||||
*((byte*) main::screen#5 + (number) 8) ← (byte) '+'
|
||||
to:main::@14
|
||||
main::@15: scope:[main] from main::@14 main::@22
|
||||
(byte*) main::screen#12 ← phi( main::@14/(byte*) main::screen#11 main::@22/(byte*) main::screen#6 )
|
||||
(byte) main::i1#7 ← phi( main::@14/(byte) main::i1#6 main::@22/(byte) main::i1#12 )
|
||||
to:main::@10
|
||||
main::@11: scope:[main] from main::@10 main::@16
|
||||
(byte*) main::screen#12 ← phi( main::@10/(byte*) main::screen#11 main::@16/(byte*) main::screen#6 )
|
||||
(byte) main::i1#7 ← phi( main::@10/(byte) main::i1#6 main::@16/(byte) main::i1#12 )
|
||||
(bool~) main::$12 ← (byte) main::i1#7 > (number) 5
|
||||
(bool~) main::$13 ← ! (bool~) main::$12
|
||||
if((bool~) main::$13) goto main::@16
|
||||
to:main::@23
|
||||
main::@22: scope:[main] from main::@14
|
||||
(byte) main::i1#12 ← phi( main::@14/(byte) main::i1#6 )
|
||||
(byte*) main::screen#6 ← phi( main::@14/(byte*) main::screen#11 )
|
||||
if((bool~) main::$13) goto main::@12
|
||||
to:main::@17
|
||||
main::@16: scope:[main] from main::@10
|
||||
(byte) main::i1#12 ← phi( main::@10/(byte) main::i1#6 )
|
||||
(byte*) main::screen#6 ← phi( main::@10/(byte*) main::screen#11 )
|
||||
*((byte*) main::screen#6 + (number) $b) ← (byte) '+'
|
||||
to:main::@15
|
||||
main::@16: scope:[main] from main::@15 main::@23
|
||||
(byte*) main::screen#13 ← phi( main::@15/(byte*) main::screen#12 main::@23/(byte*) main::screen#7 )
|
||||
(byte) main::i1#8 ← phi( main::@15/(byte) main::i1#7 main::@23/(byte) main::i1#13 )
|
||||
to:main::@11
|
||||
main::@12: scope:[main] from main::@11 main::@17
|
||||
(byte*) main::screen#13 ← phi( main::@11/(byte*) main::screen#12 main::@17/(byte*) main::screen#7 )
|
||||
(byte) main::i1#8 ← phi( main::@11/(byte) main::i1#7 main::@17/(byte) main::i1#13 )
|
||||
(byte) main::i1#1 ← ++ (byte) main::i1#8
|
||||
to:main::@9
|
||||
main::@23: scope:[main] from main::@15
|
||||
(byte) main::i1#13 ← phi( main::@15/(byte) main::i1#7 )
|
||||
(byte*) main::screen#7 ← phi( main::@15/(byte*) main::screen#12 )
|
||||
to:main::@6
|
||||
main::@17: scope:[main] from main::@11
|
||||
(byte) main::i1#13 ← phi( main::@11/(byte) main::i1#7 )
|
||||
(byte*) main::screen#7 ← phi( main::@11/(byte*) main::screen#12 )
|
||||
*((byte*) main::screen#7 + (number) $e) ← (byte) '+'
|
||||
to:main::@16
|
||||
main::@return: scope:[main] from main::@9
|
||||
to:main::@12
|
||||
main::@return: scope:[main] from main::@6
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
@ -144,20 +137,20 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$9
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@13
|
||||
(label) main::@14
|
||||
(label) main::@15
|
||||
(label) main::@16
|
||||
(label) main::@19
|
||||
(label) main::@17
|
||||
(label) main::@2
|
||||
(label) main::@20
|
||||
(label) main::@21
|
||||
(label) main::@22
|
||||
(label) main::@23
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::@return
|
||||
(const nomodify byte*) main::SCREEN = (byte*)(number) $400
|
||||
@ -275,12 +268,12 @@ Alias main::screen#1 = main::screen#4 main::screen#10 main::screen#11 main::scre
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$0 [5] if((byte*) main::sc#1!=rangelast(main::SCREEN,main::SCREEN+$3e8)) goto main::@1
|
||||
Simple Condition (bool~) main::$1 [9] if(*((const byte*) main::header + (byte) main::i#2)!=(byte) 0) goto main::@4
|
||||
Simple Condition (bool~) main::$2 [16] if((byte) main::i1#10<=(byte) 9) goto main::@10
|
||||
Simple Condition (bool~) main::$5 [21] if((byte) main::i1#10>=(byte) 5) goto main::@12
|
||||
Simple Condition (bool~) main::$7 [23] if((byte) main::i1#10>(byte) 5) goto main::@13
|
||||
Simple Condition (bool~) main::$9 [26] if((byte) main::i1#10!=(byte) 5) goto main::@14
|
||||
Simple Condition (bool~) main::$11 [29] if((byte) main::i1#10<(byte) 5) goto main::@15
|
||||
Simple Condition (bool~) main::$13 [32] if((byte) main::i1#10<=(byte) 5) goto main::@16
|
||||
Simple Condition (bool~) main::$2 [16] if((byte) main::i1#10<=(byte) 9) goto main::@7
|
||||
Simple Condition (bool~) main::$5 [21] if((byte) main::i1#10>=(byte) 5) goto main::@8
|
||||
Simple Condition (bool~) main::$7 [23] if((byte) main::i1#10>(byte) 5) goto main::@9
|
||||
Simple Condition (bool~) main::$9 [26] if((byte) main::i1#10!=(byte) 5) goto main::@10
|
||||
Simple Condition (bool~) main::$11 [29] if((byte) main::i1#10<(byte) 5) goto main::@11
|
||||
Simple Condition (bool~) main::$13 [32] if((byte) main::i1#10<=(byte) 5) goto main::@12
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::sc#0 = main::SCREEN
|
||||
Constant (const byte) main::i#0 = 0
|
||||
@ -289,18 +282,18 @@ Constant (const byte) main::i1#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Resolved ranged next value [3] main::sc#1 ← ++ main::sc#2 to ++
|
||||
Resolved ranged comparison value [5] if(main::sc#1!=rangelast(main::SCREEN,main::SCREEN+$3e8)) goto main::@1 to (byte*)(const nomodify byte*) main::SCREEN+(word) $3e8+(number) 1
|
||||
Rewriting conditional comparison [16] if((byte) main::i1#10<=(byte) 9) goto main::@10
|
||||
Rewriting conditional comparison [23] if((byte) main::i1#10>(byte) 5) goto main::@13
|
||||
Rewriting conditional comparison [32] if((byte) main::i1#10<=(byte) 5) goto main::@16
|
||||
Rewriting conditional comparison [16] if((byte) main::i1#10<=(byte) 9) goto main::@7
|
||||
Rewriting conditional comparison [23] if((byte) main::i1#10>(byte) 5) goto main::@9
|
||||
Rewriting conditional comparison [32] if((byte) main::i1#10<=(byte) 5) goto main::@12
|
||||
Simplifying expression containing zero main::screen#1 in [19] *((byte*) main::screen#1 + (byte) 0) ← (byte~) main::$3
|
||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||
Adding number conversion cast (unumber) 1 in if((byte*) main::sc#1!=(byte*)(const nomodify byte*) main::SCREEN+(word) $3e8+(number) 1) goto main::@1
|
||||
Adding number conversion cast (unumber) 9+1 in if((byte) main::i1#10<(byte) 9+(number) 1) goto main::@10
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::i1#10<(unumber)(byte) 9+(number) 1) goto main::@10
|
||||
Adding number conversion cast (unumber) 5+1 in if((byte) main::i1#10>=(byte) 5+(number) 1) goto main::@13
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::i1#10>=(unumber)(byte) 5+(number) 1) goto main::@13
|
||||
Adding number conversion cast (unumber) 5+1 in if((byte) main::i1#10<(byte) 5+(number) 1) goto main::@16
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::i1#10<(unumber)(byte) 5+(number) 1) goto main::@16
|
||||
Adding number conversion cast (unumber) 9+1 in if((byte) main::i1#10<(byte) 9+(number) 1) goto main::@7
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::i1#10<(unumber)(byte) 9+(number) 1) goto main::@7
|
||||
Adding number conversion cast (unumber) 5+1 in if((byte) main::i1#10>=(byte) 5+(number) 1) goto main::@9
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::i1#10>=(unumber)(byte) 5+(number) 1) goto main::@9
|
||||
Adding number conversion cast (unumber) 5+1 in if((byte) main::i1#10<(byte) 5+(number) 1) goto main::@12
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::i1#10<(unumber)(byte) 5+(number) 1) goto main::@12
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast (const nomodify byte*) main::SCREEN+(word) $3e8+(unumber)(number) 1
|
||||
Simplifying constant integer cast 1
|
||||
@ -325,7 +318,7 @@ Constant inlined main::i#0 = (byte) 0
|
||||
Constant inlined main::i1#0 = (byte) 0
|
||||
Constant inlined main::sc#0 = (const nomodify byte*) main::SCREEN
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@25(between main::@1 and main::@1)
|
||||
Added new block during phi lifting main::@18(between main::@1 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
@ -345,21 +338,21 @@ Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@25
|
||||
Culled Empty Block (label) main::@18
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@4 to main::@3
|
||||
Renumbering block main::@9 to main::@4
|
||||
Renumbering block main::@10 to main::@5
|
||||
Renumbering block main::@12 to main::@6
|
||||
Renumbering block main::@13 to main::@7
|
||||
Renumbering block main::@14 to main::@8
|
||||
Renumbering block main::@15 to main::@9
|
||||
Renumbering block main::@16 to main::@10
|
||||
Renumbering block main::@19 to main::@11
|
||||
Renumbering block main::@20 to main::@12
|
||||
Renumbering block main::@21 to main::@13
|
||||
Renumbering block main::@22 to main::@14
|
||||
Renumbering block main::@23 to main::@15
|
||||
Renumbering block main::@6 to main::@4
|
||||
Renumbering block main::@7 to main::@5
|
||||
Renumbering block main::@8 to main::@6
|
||||
Renumbering block main::@9 to main::@7
|
||||
Renumbering block main::@10 to main::@8
|
||||
Renumbering block main::@11 to main::@9
|
||||
Renumbering block main::@12 to main::@10
|
||||
Renumbering block main::@13 to main::@11
|
||||
Renumbering block main::@14 to main::@12
|
||||
Renumbering block main::@15 to main::@13
|
||||
Renumbering block main::@16 to main::@14
|
||||
Renumbering block main::@17 to main::@15
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,7 +1,3 @@
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@8
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -10,7 +6,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@4
|
||||
main::@1: scope:[main] from main main::@3
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
@ -19,15 +15,15 @@ main::@2: scope:[main] from main::@1
|
||||
(bool~) main::$1 ← (byte) main::key#0 < (number) $40
|
||||
(bool~) main::$2 ← (bool~) main::$0 || (bool~) main::$1
|
||||
(bool~) main::$3 ← ! (bool~) main::$2
|
||||
if((bool~) main::$3) goto main::@4
|
||||
to:main::@7
|
||||
main::@4: scope:[main] from main::@2 main::@7
|
||||
(byte) main::key#2 ← phi( main::@2/(byte) main::key#0 main::@7/(byte) main::key#1 )
|
||||
if((bool~) main::$3) goto main::@3
|
||||
to:main::@4
|
||||
main::@3: scope:[main] from main::@2 main::@4
|
||||
(byte) main::key#2 ← phi( main::@2/(byte) main::key#0 main::@4/(byte) main::key#1 )
|
||||
*((const nomodify byte*) SCREEN) ← (byte) main::key#2
|
||||
to:main::@1
|
||||
main::@7: scope:[main] from main::@2
|
||||
main::@4: scope:[main] from main::@2
|
||||
(byte) main::key#1 ← (number) 0
|
||||
to:main::@4
|
||||
to:main::@3
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@ -52,8 +48,8 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$3
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@7
|
||||
(label) main::@return
|
||||
(byte) main::key
|
||||
(byte) main::key#0
|
||||
@ -85,14 +81,14 @@ if() condition always true - replacing block destination [0] if(true) goto main:
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Simple Condition (bool~) main::$0 [3] if((byte) main::key#0>(byte) $20) goto main::@7
|
||||
Simple Condition (bool~) main::$1 [7] if((byte) main::key#0<(byte) $40) goto main::@7
|
||||
Simple Condition (bool~) main::$0 [3] if((byte) main::key#0>(byte) $20) goto main::@4
|
||||
Simple Condition (bool~) main::$1 [7] if((byte) main::key#0<(byte) $40) goto main::@4
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Negating conditional jump and destination [7] if((byte) main::key#0>=(byte) $40) goto main::@4
|
||||
Negating conditional jump and destination [7] if((byte) main::key#0>=(byte) $40) goto main::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
||||
Rewriting conditional comparison [3] if((byte) main::key#0>(byte) $20) goto main::@7
|
||||
Adding number conversion cast (unumber) $20+1 in if((byte) main::key#0>=(byte) $20+(number) 1) goto main::@7
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::key#0>=(unumber)(byte) $20+(number) 1) goto main::@7
|
||||
Rewriting conditional comparison [3] if((byte) main::key#0>(byte) $20) goto main::@4
|
||||
Adding number conversion cast (unumber) $20+1 in if((byte) main::key#0>=(byte) $20+(number) 1) goto main::@4
|
||||
Adding number conversion cast (unumber) 1 in if((byte) main::key#0>=(unumber)(byte) $20+(number) 1) goto main::@4
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast (byte) $20+(unumber)(number) 1
|
||||
Simplifying constant integer cast 1
|
||||
@ -102,14 +98,14 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inlining constant with var siblings (const byte) main::key#1
|
||||
Constant inlined main::key#1 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@10(between main::@9 and main::@4)
|
||||
Added new block during phi lifting main::@6(between main::@5 and main::@3)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@7
|
||||
Adding NOP phi() at start of main::@4
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
@ -118,11 +114,11 @@ Coalesced [13] main::key#3 ← main::key#0
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@4
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@4 to main::@2
|
||||
Renumbering block main::@9 to main::@3
|
||||
Renumbering block main::@10 to main::@4
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@5 to main::@3
|
||||
Renumbering block main::@6 to main::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -1,11 +1,8 @@
|
||||
Loading link script "ataritempest.ld"
|
||||
Culled Empty Block (label) entryPoint::@2
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@3
|
||||
to:@1
|
||||
|
||||
(void()) entryPoint()
|
||||
entryPoint: scope:[entryPoint] from
|
||||
@ -31,22 +28,22 @@ nmiHandler::@return: scope:[nmiHandler] from nmiHandler
|
||||
to:@return
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @3
|
||||
main: scope:[main] from @1
|
||||
*((const nomodify byte*) BGCOL) ← ++ *((const nomodify byte*) BGCOL)
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @begin
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @4
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const nomodify byte*) BGCOL = (byte*)(number) $c01a
|
||||
@ -83,10 +80,10 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inlining constant with var siblings (const byte) entryPoint::i#0
|
||||
Constant inlined entryPoint::i#0 = (byte) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting entryPoint::@3(between entryPoint::@1 and entryPoint::@1)
|
||||
Added new block during phi lifting entryPoint::@2(between entryPoint::@1 and entryPoint::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of entryPoint
|
||||
CALL GRAPH
|
||||
@ -95,9 +92,8 @@ Calls in [] to main:2
|
||||
Created 1 initial phi equivalence classes
|
||||
Coalesced [15] entryPoint::i#3 ← entryPoint::i#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) entryPoint::@3
|
||||
Renumbering block @3 to @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) entryPoint::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
@ -377,7 +377,7 @@ atan2_16::@9: scope:[atan2_16] from atan2_16::@7
|
||||
[205] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11
|
||||
to:atan2_16::@8
|
||||
atan2_16::@8: scope:[atan2_16] from atan2_16::@7 atan2_16::@9
|
||||
[206] (word) atan2_16::return#0 ← phi( atan2_16::@9/(word) atan2_16::angle#5 atan2_16::@7/(word) atan2_16::angle#11 )
|
||||
[206] (word) atan2_16::return#0 ← phi( atan2_16::@7/(word) atan2_16::angle#11 atan2_16::@9/(word) atan2_16::angle#5 )
|
||||
to:atan2_16::@return
|
||||
atan2_16::@return: scope:[atan2_16] from atan2_16::@8
|
||||
[207] return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -505,7 +505,7 @@ zp[2]:19 [ startProcessing::$33 atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 ata
|
||||
zp[2]:21 [ startProcessing::colPtr#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
|
||||
zp[1]:23 [ startProcessing::spriteCol#0 init_angle_screen::x#2 init_angle_screen::x#1 getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
||||
reg byte a [ startProcessing::ch#0 ]
|
||||
zp[2]:24 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
|
||||
zp[2]:24 [ startProcessing::$26 startProcessing::$8 startProcessing::$9 startProcessing::spriteX#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
|
||||
zp[2]:26 [ startProcessing::$27 startProcessing::$11 startProcessing::$12 startProcessing::spriteY#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
zp[1]:28 [ startProcessing::spritePtr#0 init_angle_screen::xb#2 init_angle_screen::xb#1 getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
||||
reg byte y [ startProcessing::$15 ]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user