From cfb27e5915b6a4672dcf788134b94a3e0eb04988 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 3 Nov 2019 21:27:11 +0100 Subject: [PATCH] Converting constant value lists directly to constant values during parse. --- .../Pass0GenerateStatementSequence.java | 23 +- .../Pass2ConstantInitializerValueLists.java | 20 +- ...PassNAddInitializerValueListTypeCasts.java | 24 +- src/test/ref/address-of-3.log | 35 +- src/test/ref/array-length-symbolic.log | 31 +- src/test/ref/assignment-compound.log | 20 +- src/test/ref/bitmap-circle-2.log | 106 +- src/test/ref/bitmap-circle.log | 90 +- src/test/ref/bitmap-plotter.log | 126 +- src/test/ref/c64dtv-blitter-box.cfg | 4 +- src/test/ref/c64dtv-blitter-box.log | 102 +- src/test/ref/c64dtv-blitter-box.sym | 4 +- src/test/ref/c64dtv-blittermin.asm | 2 +- src/test/ref/c64dtv-blittermin.cfg | 4 +- src/test/ref/c64dtv-blittermin.log | 107 +- src/test/ref/c64dtv-blittermin.sym | 4 +- src/test/ref/c64dtv-color.log | 28 +- src/test/ref/c64dtv-gfxexplorer.asm | 137 +- src/test/ref/c64dtv-gfxexplorer.cfg | 86 +- src/test/ref/c64dtv-gfxexplorer.log | 5086 ++++++++--------- src/test/ref/c64dtv-gfxexplorer.sym | 49 +- src/test/ref/c64dtv-gfxmodes.asm | 4 +- src/test/ref/c64dtv-gfxmodes.cfg | 4 +- src/test/ref/c64dtv-gfxmodes.log | 1750 +++--- src/test/ref/c64dtv-gfxmodes.sym | 4 +- src/test/ref/cast-deref.log | 20 +- src/test/ref/cast-not-needed-2.log | 4 +- src/test/ref/cast-not-needed-3.log | 4 +- .../ref/complex/ataritempest/ataritempest.log | 4 +- .../ref/complex/splines/truetype-splines.log | 4 +- src/test/ref/complex/tetris/tetris.asm | 42 +- src/test/ref/complex/tetris/tetris.log | 2371 ++++---- src/test/ref/complex/xmega65/xmega65.log | 7 +- src/test/ref/cordic-atan2-16-ref.asm | 2 +- src/test/ref/cordic-atan2-16-ref.log | 238 +- src/test/ref/cordic-atan2-16.log | 230 +- src/test/ref/cordic-atan2-clear.log | 234 +- src/test/ref/cordic-atan2.log | 310 +- src/test/ref/examples/3d/3d.log | 208 +- .../examples/bresenham/bitmap-bresenham.asm | 4 +- .../examples/bresenham/bitmap-bresenham.log | 310 +- .../ref/examples/chargen/chargen-analysis.log | 202 +- .../examples/fastmultiply/fastmultiply8.log | 144 +- src/test/ref/examples/fire/fire.log | 50 +- .../ref/examples/plasma/plasma-unroll.log | 42 +- src/test/ref/examples/plasma/plasma.log | 42 +- .../ref/examples/rasterbars/raster-bars.log | 40 +- src/test/ref/examples/rotate/rotate.asm | 6 +- src/test/ref/examples/rotate/rotate.log | 214 +- .../ref/examples/sinsprites/sinus-sprites.log | 182 +- src/test/ref/font-hex-show.log | 224 +- .../ref/function-pointer-noarg-call-5.log | 4 +- src/test/ref/halfscii.log | 54 +- src/test/ref/hex2dec.log | 162 +- src/test/ref/initializer-0.log | 18 +- src/test/ref/initializer-1.log | 26 +- src/test/ref/initializer-2.log | 4 +- src/test/ref/initializer-3.log | 4 +- src/test/ref/inlinearrayproblem.log | 18 +- src/test/ref/inmemarray.log | 22 +- src/test/ref/irq-idx-problem.log | 34 +- src/test/ref/keyboard-glitch.log | 62 +- src/test/ref/line-anim.log | 188 +- src/test/ref/literals.log | 20 +- src/test/ref/loophead-problem-2.log | 36 +- src/test/ref/mixed-array-0.log | 33 +- src/test/ref/mixed-array-1.log | 33 +- src/test/ref/nes-array.log | 18 +- src/test/ref/norom-charset.log | 42 +- .../ref/optimize-unsigned-comparisons.log | 48 +- src/test/ref/plasma-center.log | 42 +- src/test/ref/screen-center-angle.asm | 2 +- src/test/ref/screen-center-angle.log | 244 +- src/test/ref/screen-center-distance.asm | 2 +- src/test/ref/screen-center-distance.log | 528 +- src/test/ref/semi-struct-2.cfg | 82 +- src/test/ref/semi-struct-2.log | 1390 +++-- src/test/ref/semi-struct-2.sym | 16 +- src/test/ref/sieve.log | 484 +- src/test/ref/signed-indexed-subtract.cfg | 4 +- src/test/ref/signed-indexed-subtract.log | 192 +- src/test/ref/signed-indexed-subtract.sym | 4 +- src/test/ref/sinus-basic.log | 55 +- src/test/ref/sinusgen8.asm | 2 +- src/test/ref/sinusgen8.log | 408 +- src/test/ref/sizeof-arrays.log | 74 +- src/test/ref/struct-10.log | 37 +- src/test/ref/struct-10.sym | 1 - src/test/ref/struct-11.asm | 4 +- src/test/ref/struct-11.log | 154 +- src/test/ref/struct-ptr-20.log | 4 +- src/test/ref/struct-ptr-21.log | 38 +- src/test/ref/struct-ptr-23.log | 4 +- src/test/ref/struct-ptr-29.log | 4 +- src/test/ref/struct-ptr-30.log | 4 +- src/test/ref/struct-ptr-31.log | 4 +- src/test/ref/struct-ptr-33.log | 4 +- src/test/ref/test-comparisons-sword.cfg | 14 +- src/test/ref/test-comparisons-sword.log | 450 +- src/test/ref/test-comparisons-sword.sym | 12 +- src/test/ref/test-comparisons-word.cfg | 14 +- src/test/ref/test-comparisons-word.log | 440 +- src/test/ref/test-comparisons-word.sym | 12 +- src/test/ref/test-comparisons.asm | 2 +- src/test/ref/test-comparisons.log | 136 +- src/test/ref/test-division.log | 198 +- src/test/ref/test-keyboard-space.log | 38 +- src/test/ref/test-keyboard.log | 106 +- src/test/ref/voronoi.log | 280 +- src/test/ref/word-array-1.log | 20 +- src/test/ref/word-pointer-compound.log | 66 +- src/test/ref/word-pointer-iteration.log | 23 +- src/test/ref/word-pointer-math.log | 22 +- 113 files changed, 9237 insertions(+), 10197 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java index 82e1a96ec..3f6b484e3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java @@ -4,7 +4,7 @@ import dk.camelot64.kickc.NumberParser; import dk.camelot64.kickc.SourceLoader; import dk.camelot64.kickc.asm.AsmClobber; import dk.camelot64.kickc.model.*; -import dk.camelot64.kickc.model.InternalError; +import dk.camelot64.kickc.model.iterator.ProgramValue; import dk.camelot64.kickc.model.operators.*; import dk.camelot64.kickc.model.statements.*; import dk.camelot64.kickc.model.symbols.*; @@ -1403,9 +1403,30 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor comments, StatementSource statementSource) { PrePostModifierHandler.addPreModifiers(this, initializer, statementSource); RValue rValue = (RValue) visit(initializer); + // Forward references are not allowed if(lValue.isDeclaredConst() && rValue instanceof ForwardVariableRef) { throw new CompileError("Variable used before being defined " + rValue.toString(), statementSource); } + + // Handle initializer value lists for constants + if(lValue.isDeclaredConst() && (rValue instanceof ValueList)) { + SymbolType declaredType = lValue.getType(); + ProgramValue programValue = new ProgramValue.GenericValue(rValue); + boolean modified = PassNAddInitializerValueListTypeCasts.addValueCasts(declaredType, programValue, program, statementSource); + if(modified && programValue.get() instanceof CastValue) { + CastValue castValue = (CastValue) programValue.get(); + if(castValue.getValue() instanceof ValueList) { + // Found value list with cast - look through all elements + ConstantValue constantValue = Pass2ConstantInitializerValueLists.getConstantValueFromList(castValue.getToType(), (ValueList) castValue.getValue(), program, statementSource); + if(constantValue != null) { + // Converted value list to constant!! + rValue = constantValue; + } + } + } + + } + /* if(lValue.isDeclaredConst() && !(rValue instanceof ConstantValue)) { throw new InternalError("RValue is not constant!"); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInitializerValueLists.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInitializerValueLists.java index ef8839171..87f165cc3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInitializerValueLists.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInitializerValueLists.java @@ -4,7 +4,7 @@ import dk.camelot64.kickc.model.CompileError; import dk.camelot64.kickc.model.InternalError; import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.iterator.ProgramValueIterator; -import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementSource; import dk.camelot64.kickc.model.symbols.StructDefinition; import dk.camelot64.kickc.model.symbols.Variable; import dk.camelot64.kickc.model.types.SymbolType; @@ -37,7 +37,7 @@ public class Pass2ConstantInitializerValueLists extends Pass2SsaOptimization { CastValue castValue = (CastValue) programValue.get(); if(castValue.getValue() instanceof ValueList) { // Found value list with cast - look through all elements - ConstantValue constantValue = getConstantValueFromList(castValue.getToType(), (ValueList) castValue.getValue(), currentStmt); + ConstantValue constantValue = getConstantValueFromList(castValue.getToType(), (ValueList) castValue.getValue(), getProgram(), currentStmt.getSource()); if(constantValue!=null) { programValue.set(constantValue); getLog().append("Identified constant from value list ("+castValue.getToType()+") "+constantValue.toString(getProgram())); @@ -57,7 +57,7 @@ public class Pass2ConstantInitializerValueLists extends Pass2SsaOptimization { * @param valueList The list of values * @return The constant value if all list elements are constant. null if elements are not constant */ - private ConstantValue getConstantValueFromList(SymbolType declaredType, ValueList valueList, Statement currentStmt) { + public static ConstantValue getConstantValueFromList(SymbolType declaredType, ValueList valueList, Program program, StatementSource source) { // Examine whether all list elements are constant List values = valueList.getList(); List constantValues = new ArrayList<>(); @@ -75,9 +75,9 @@ public class Pass2ConstantInitializerValueLists extends Pass2SsaOptimization { // Check that type of constant values match the array element type SymbolType declaredElementType = ((SymbolTypeArray) declaredType).getElementType(); for(ConstantValue constantValue : constantValues) { - SymbolType elmType = constantValue.getType(getScope()); + SymbolType elmType = constantValue.getType(program.getScope()); if(!elmType.equals(declaredElementType)) { - throw new CompileError("Initializer element "+constantValue.toString(getProgram())+" does not match array type "+declaredType.getTypeName(), currentStmt); + throw new CompileError("Initializer element "+constantValue.toString(program)+" does not match array type "+declaredType.getTypeName(), source); } } // Return the constant array @@ -85,14 +85,14 @@ public class Pass2ConstantInitializerValueLists extends Pass2SsaOptimization { } else if(declaredType instanceof SymbolTypeStruct) { // Check that type of constant values match the struct member types SymbolTypeStruct declaredStructType = (SymbolTypeStruct) declaredType; - StructDefinition structDefinition = declaredStructType.getStructDefinition(getScope()); + StructDefinition structDefinition = declaredStructType.getStructDefinition(program.getScope()); Collection memberDefs = structDefinition.getAllVariables(false); if(memberDefs.size()!=constantValues.size()) { throw new CompileError( "Struct initializer has wrong size ("+valueList.getList().size()+"), " + "which does not match the number of members in "+declaredStructType.getTypeName()+" (\"+size+\" members).\n" + - " Struct initializer: "+valueList.toString(getProgram()), - currentStmt); + " Struct initializer: "+valueList.toString(program), + source); } Iterator memberDefIt = memberDefs.iterator(); LinkedHashMap memberValues = new LinkedHashMap<>(); @@ -100,9 +100,9 @@ public class Pass2ConstantInitializerValueLists extends Pass2SsaOptimization { Variable memberDef = memberDefIt.next(); SymbolType declaredElementType = memberDef.getType(); ConstantValue memberValue = constantValues.get(i); - SymbolType elmType = memberValue.getType(getScope()); + SymbolType elmType = memberValue.getType(program.getScope()); if(!SymbolTypeConversion.assignmentTypeMatch(declaredElementType, elmType)) { - throw new CompileError("Initializer element "+ memberValue.toString(getProgram())+" does not match struct member type "+memberDef.toString(getProgram()), currentStmt); + throw new CompileError("Initializer element "+ memberValue.toString(program)+" does not match struct member type "+memberDef.toString(program), source); } memberValues.put(memberDef.getRef(), memberValue); } diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNAddInitializerValueListTypeCasts.java b/src/main/java/dk/camelot64/kickc/passes/PassNAddInitializerValueListTypeCasts.java index 72a0f8a5a..b187b23a6 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNAddInitializerValueListTypeCasts.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNAddInitializerValueListTypeCasts.java @@ -7,7 +7,7 @@ import dk.camelot64.kickc.model.iterator.ProgramExpressionBinary; import dk.camelot64.kickc.model.iterator.ProgramExpressionIterator; import dk.camelot64.kickc.model.iterator.ProgramValue; import dk.camelot64.kickc.model.operators.Operators; -import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementSource; import dk.camelot64.kickc.model.symbols.StructDefinition; import dk.camelot64.kickc.model.symbols.Variable; import dk.camelot64.kickc.model.types.*; @@ -35,9 +35,9 @@ public class PassNAddInitializerValueListTypeCasts extends Pass2SsaOptimization if(binary.getRight() instanceof ValueList && binary.getOperator().equals(Operators.ASSIGNMENT)) { RValue left = binary.getLeft(); SymbolType declaredType = SymbolTypeInference.inferType(getProgram().getScope(), left); - boolean isModified = addValueCasts(declaredType, binary.getRightValue(), currentStmt); + boolean isModified = addValueCasts(declaredType, binary.getRightValue(), getProgram(), currentStmt.getSource()); if(isModified) { - getLog().append("Added casts to value list in " + (currentStmt == null ? "" : currentStmt.toString(getProgram(), false))); + getLog().append("Added casts to value list in " + currentStmt.toString(getProgram(), false)); modified.set(true); } } @@ -51,10 +51,10 @@ public class PassNAddInitializerValueListTypeCasts extends Pass2SsaOptimization * * @param declaredType The declared type of the value * @param programValue The value wrapped in a program value - * @param currentStmt The current statement + * @param source The current statement * @return true if anything was modified */ - private boolean addValueCasts(SymbolType declaredType, ProgramValue programValue, Statement currentStmt) { + public static boolean addValueCasts(SymbolType declaredType, ProgramValue programValue, Program program, StatementSource source) { boolean exprModified = false; Value value = programValue.get(); if(value instanceof ValueList) { @@ -66,27 +66,27 @@ public class PassNAddInitializerValueListTypeCasts extends Pass2SsaOptimization int size = valueList.getList().size(); // TODO: Check declared array size vs. actual size for(int i = 0; i < size; i++) { - exprModified |= addValueCasts(declaredElmType, new ProgramValue.ProgramValueListElement(valueList, i), currentStmt); + exprModified |= addValueCasts(declaredElmType, new ProgramValue.ProgramValueListElement(valueList, i), program, source); } // Add a cast to the value list itself programValue.set(new CastValue(declaredType, valueList)); } else if(declaredType instanceof SymbolTypeStruct) { SymbolTypeStruct declaredStructType = (SymbolTypeStruct) declaredType; // Recursively cast all sub-elements - StructDefinition structDefinition = declaredStructType.getStructDefinition(getScope()); + StructDefinition structDefinition = declaredStructType.getStructDefinition(program.getScope()); Collection memberDefinitions = structDefinition.getAllVariables(false); int size = memberDefinitions.size(); if(size!=valueList.getList().size()) { throw new CompileError( "Struct initializer has wrong size ("+valueList.getList().size()+"), " + "which does not match the number of members in "+declaredStructType.getTypeName()+" ("+size+" members).\n" + - " Struct initializer: "+valueList.toString(getProgram()), - currentStmt); + " Struct initializer: "+valueList.toString(program), + source); } Iterator memberDefIt = memberDefinitions.iterator(); for(int i = 0; i < size; i++) { Variable memberDef = memberDefIt.next(); - exprModified |= addValueCasts(memberDef.getType(), new ProgramValue.ProgramValueListElement(valueList, i), currentStmt); + exprModified |= addValueCasts(memberDef.getType(), new ProgramValue.ProgramValueListElement(valueList, i), program, source); } // Add a cast to the value list itself programValue.set(new CastValue(declaredType, valueList)); @@ -95,11 +95,11 @@ public class PassNAddInitializerValueListTypeCasts extends Pass2SsaOptimization throw new InternalError("Type not handled! "+declaredType); } } else { - SymbolType valueType = SymbolTypeInference.inferType(getProgram().getScope(), (RValue) value); + SymbolType valueType = SymbolTypeInference.inferType(program.getScope(), (RValue) value); if(SymbolType.NUMBER.equals(valueType) || SymbolType.VAR.equals(valueType)) { // Check if the value fits. if(!SymbolTypeConversion.assignmentTypeMatch(declaredType, valueType)) { - throw new CompileError("Declared type " + declaredType + " does not match element type " + valueType, currentStmt); + throw new CompileError("Declared type " + declaredType + " does not match element type " + valueType, source); } // TODO: Test if the value matches the declared type! // Add a cast to the value diff --git a/src/test/ref/address-of-3.log b/src/test/ref/address-of-3.log index deaed1f19..de0861c9f 100644 --- a/src/test/ref/address-of-3.log +++ b/src/test/ref/address-of-3.log @@ -1,24 +1,23 @@ -Fixing pointer array-indexing *((signed word[]) VALS + (number) 1) -Fixing pointer array-indexing *((signed word[]) VALS + (byte) main::i) +Fixing pointer array-indexing *((const signed word[]) VALS + (number) 1) +Fixing pointer array-indexing *((const signed word[]) VALS + (byte) main::i) Fixing pointer array-indexing *((const signed word*) SCREEN + (byte) idx) Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (signed word[]) VALS ← { (number) 1, (number) 2, (number) 3, (number) 4 } to:@1 (void()) main() main: scope:[main] from @2 (byte) idx#15 ← phi( @2/(byte) idx#17 ) - (signed word*) print::p#0 ← (signed word[]) VALS + (signed word*) print::p#0 ← (const signed word[]) VALS call print to:main::@3 main::@3: scope:[main] from main (byte) idx#8 ← phi( main/(byte) idx#6 ) (byte) idx#0 ← (byte) idx#8 (number~) main::$6 ← (number) 1 * (const byte) SIZEOF_SIGNED_WORD - (signed word*~) main::$1 ← & *((signed word[]) VALS + (number~) main::$6) + (signed word*~) main::$1 ← & *((const signed word[]) VALS + (number~) main::$6) (signed word*) print::p#1 ← (signed word*~) main::$1 call print to:main::@4 @@ -31,7 +30,7 @@ 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 ) (byte~) main::$7 ← (byte) main::i#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word*~) main::$3 ← & *((signed word[]) VALS + (byte~) main::$7) + (signed word*~) main::$3 ← & *((const signed word[]) VALS + (byte~) main::$7) (signed word*) print::p#2 ← (signed word*~) main::$3 call print to:main::@5 @@ -83,7 +82,7 @@ SYMBOL TABLE SSA (label) @end (const signed word*) SCREEN = (signed word*)(number) $400 (const byte) SIZEOF_SIGNED_WORD = (byte) 2 -(signed word[]) VALS +(const signed word[]) VALS = { (signed word)(number) 1, (signed word)(number) 2, (signed word)(number) 3, (signed word)(number) 4 } (byte) idx (byte) idx#0 (byte) idx#1 @@ -132,15 +131,13 @@ Adding number conversion cast (unumber) 1 in (number~) main::$6 ← (number) 1 * Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (unumber)(number) 1 * (const byte) SIZEOF_SIGNED_WORD Adding number conversion cast (unumber) 0 in (byte) idx#4 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed word[]) VALS ← (signed word[]){ (signed word)(number) 1, (signed word)(number) 2, (signed word)(number) 3, (signed word)(number) 4 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) idx#4 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (signed word*) 1024 Simplifying constant integer cast 1 Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast 4 +Simplifying constant pointer cast (signed word*) 1024 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification @@ -166,24 +163,20 @@ Identical Phi Values (byte) idx#14 (byte) idx#10 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (byte) idx#16 (byte) idx#13 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) main::$5 [22] if((byte) main::i#1!=rangelast(2,3)) goto main::@1 +Simple Condition (bool~) main::$5 [21] if((byte) main::i#1!=rangelast(2,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting array member address-of to pointer addition [7] (signed word*) print::p#1 ← (signed word[]) VALS + (byte~) main::$6 -Rewriting array member address-of to pointer addition [15] (signed word*) print::p#2 ← (signed word[]) VALS + (byte~) main::$7 +Rewriting array member address-of to pointer addition [6] (signed word*) print::p#1 ← (const signed word[]) VALS + (byte~) main::$6 +Rewriting array member address-of to pointer addition [14] (signed word*) print::p#2 ← (const signed word[]) VALS + (byte~) main::$7 Successful SSA optimization PassNArrayElementAddressOfRewriting -Constant right-side identified [6] (byte~) main::$6 ← (byte) 1 * (const byte) SIZEOF_SIGNED_WORD +Constant right-side identified [5] (byte~) main::$6 ← (byte) 1 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (signed word[]) { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const signed word[]) VALS = { 1, 2, 3, 4 } +Constant (const signed word*) print::p#0 = VALS Constant (const byte) main::$6 = 1*SIZEOF_SIGNED_WORD Constant (const byte) main::i#0 = 2 Constant (const byte) idx#17 = 0 Successful SSA optimization Pass2ConstantIdentification -Constant (const signed word*) print::p#0 = VALS -Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [20] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [22] if(main::i#1!=rangelast(2,3)) goto main::@1 to (number) 4 +Resolved ranged next value [19] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [21] if(main::i#1!=rangelast(2,3)) goto main::@1 to (number) 4 Adding number conversion cast (unumber) 4 in if((byte) main::i#1!=(number) 4) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 4 diff --git a/src/test/ref/array-length-symbolic.log b/src/test/ref/array-length-symbolic.log index 1c0f213a9..144466e52 100644 --- a/src/test/ref/array-length-symbolic.log +++ b/src/test/ref/array-length-symbolic.log @@ -5,12 +5,11 @@ Culled Empty Block (label) main::@4 CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte~) $0 ← (const byte) ITEM_COUNT * (const byte) ITEM_SIZE - (byte[$0]) items ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } to:@1 (void()) main() main: scope:[main] from @1 - (byte*) main::cur_item#0 ← (byte[$0]) items + (byte*) main::cur_item#0 ← (const byte[$0]) items (number~) main::$0 ← (const byte) ITEM_COUNT - (number) 1 (byte) main::item#0 ← (byte) 0 to:main::@1 @@ -57,7 +56,7 @@ SYMBOL TABLE SSA (label) @end (const byte) ITEM_COUNT = (byte) 3 (const byte) ITEM_SIZE = (byte) 5 -(byte[$0]) items +(const byte[$0]) items = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } (void()) main() (number~) main::$0 (number~) main::$1 @@ -94,8 +93,6 @@ Adding number conversion cast (unumber) $10 in (number~) main::$2 ← (byte) mai Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (byte) main::item#2 * (unumber)(number) $10 Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (unumber~) main::$2 | (byte) main::sub#2 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[$0]) items ← (byte[$0]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -129,28 +126,24 @@ Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) main::item#2 (byte) main::item#4 Identical Phi Values (byte*) main::cur_item#2 (byte*) main::cur_item#4 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) main::$4 [14] if((byte) main::sub#1!=rangelast(0,main::$1)) goto main::@2 -Simple Condition (bool~) main::$5 [19] if((byte) main::item#1!=rangelast(0,main::$0)) goto main::@1 +Simple Condition (bool~) main::$4 [13] if((byte) main::sub#1!=rangelast(0,main::$1)) goto main::@2 +Simple Condition (bool~) main::$5 [18] if((byte) main::item#1!=rangelast(0,main::$0)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [0] (byte~) $0 ← (const byte) ITEM_COUNT * (const byte) ITEM_SIZE -Constant right-side identified [3] (byte~) main::$0 ← (const byte) ITEM_COUNT - (byte) 1 -Constant right-side identified [6] (byte~) main::$1 ← (const byte) ITEM_SIZE - (byte) 1 +Constant right-side identified [2] (byte~) main::$0 ← (const byte) ITEM_COUNT - (byte) 1 +Constant right-side identified [5] (byte~) main::$1 ← (const byte) ITEM_SIZE - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[$0]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte) $0 = ITEM_COUNT*ITEM_SIZE -Constant (const byte[$0]) items = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +Constant (const byte*) main::cur_item#0 = items Constant (const byte) main::$0 = ITEM_COUNT-1 Constant (const byte) main::item#0 = 0 Constant (const byte) main::$1 = ITEM_SIZE-1 Constant (const byte) main::sub#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) main::cur_item#0 = items -Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [12] main::sub#1 ← ++ main::sub#2 to ++ -Resolved ranged comparison value [14] if(main::sub#1!=rangelast(0,main::$1)) goto main::@2 to (const byte) main::$1+(number) 1 -Resolved ranged next value [17] main::item#1 ← ++ main::item#4 to ++ -Resolved ranged comparison value [19] if(main::item#1!=rangelast(0,main::$0)) goto main::@1 to (const byte) main::$0+(number) 1 +Resolved ranged next value [11] main::sub#1 ← ++ main::sub#2 to ++ +Resolved ranged comparison value [13] if(main::sub#1!=rangelast(0,main::$1)) goto main::@2 to (const byte) main::$1+(number) 1 +Resolved ranged next value [16] main::item#1 ← ++ main::item#4 to ++ +Resolved ranged comparison value [18] if(main::item#1!=rangelast(0,main::$0)) goto main::@1 to (const byte) main::$0+(number) 1 Adding number conversion cast (unumber) main::$1+1 in if((byte) main::sub#1!=(const byte) main::$1+(number) 1) goto main::@2 Adding number conversion cast (unumber) 1 in if((byte) main::sub#1!=(unumber)(const byte) main::$1+(number) 1) goto main::@2 Adding number conversion cast (unumber) main::$0+1 in if((byte) main::item#1!=(const byte) main::$0+(number) 1) goto main::@1 @@ -166,9 +159,9 @@ Finalized unsigned number type (byte) 1 Successful SSA optimization PassNFinalizeNumberTypeConversions Rewriting multiplication to use shift [2] (byte~) main::$2 ← (byte) main::item#4 * (byte) $10 Successful SSA optimization Pass2MultiplyToShiftRewriting +Inlining constant with var siblings (const byte*) main::cur_item#0 Inlining constant with var siblings (const byte) main::item#0 Inlining constant with var siblings (const byte) main::sub#0 -Inlining constant with var siblings (const byte*) main::cur_item#0 Constant inlined main::sub#0 = (byte) 0 Constant inlined main::$1 = (const byte) ITEM_SIZE-(byte) 1 Constant inlined $0 = (const byte) ITEM_COUNT*(const byte) ITEM_SIZE diff --git a/src/test/ref/assignment-compound.log b/src/test/ref/assignment-compound.log index 32074a891..705db910d 100644 --- a/src/test/ref/assignment-compound.log +++ b/src/test/ref/assignment-compound.log @@ -8,7 +8,6 @@ Culled Empty Block (label) test::@4 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) ref ← { (number) 3, (number) 4, (number) 3, (number) $12, (number) 9, (number) 1, (number) 4, (number) 2, (number) 4, (number) 5, (number) 1, (number) 0 } (byte*~) $0 ← (const byte*) screen1 + (number) $28 (byte*) screen2#0 ← (byte*~) $0 to:@2 @@ -136,8 +135,8 @@ test: scope:[test] from main main::@1 main::@10 main::@2 main::@3 main::@4 main (byte) test::i#11 ← phi( main/(byte) test::i#0 main::@1/(byte) test::i#1 main::@10/(byte) test::i#10 main::@2/(byte) test::i#2 main::@3/(byte) test::i#3 main::@4/(byte) test::i#4 main::@5/(byte) test::i#5 main::@6/(byte) test::i#6 main::@7/(byte) test::i#7 main::@8/(byte) test::i#8 main::@9/(byte) test::i#9 ) (byte) test::a#11 ← phi( main/(byte) test::a#0 main::@1/(byte) test::a#1 main::@10/(byte) test::a#10 main::@2/(byte) test::a#2 main::@3/(byte) test::a#3 main::@4/(byte) test::a#4 main::@5/(byte) test::a#5 main::@6/(byte) test::a#6 main::@7/(byte) test::a#7 main::@8/(byte) test::a#8 main::@9/(byte) test::a#9 ) *((const byte*) screen1 + (byte) test::i#11) ← (byte) test::a#11 - *((byte*) screen2#1 + (byte) test::i#11) ← *((byte[]) ref + (byte) test::i#11) - (bool~) test::$0 ← *((byte[]) ref + (byte) test::i#11) == (byte) test::a#11 + *((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 test::@1: scope:[test] from test @@ -227,7 +226,7 @@ SYMBOL TABLE SSA (byte) main::i#7 (byte) main::i#8 (byte) main::i#9 -(byte[]) ref +(const byte[]) ref = { (byte)(number) 3, (byte)(number) 4, (byte)(number) 3, (byte)(number) $12, (byte)(number) 9, (byte)(number) 1, (byte)(number) 4, (byte)(number) 2, (byte)(number) 4, (byte)(number) 5, (byte)(number) 1, (byte)(number) 0 } (const byte*) screen1 = (byte*)(number) $400 (byte*) screen2 (byte*) screen2#0 @@ -292,13 +291,9 @@ Adding number conversion cast (unumber) 6 in (byte) main::a#8 ← (byte) main::a Adding number conversion cast (unumber) 1 in (byte) main::a#9 ← (byte) main::a#19 | (number) 1 Adding number conversion cast (unumber) 1 in (byte) main::a#10 ← (byte) main::a#20 & (number) 1 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) ref ← (byte[]){ (byte)(number) 3, (byte)(number) 4, (byte)(number) 3, (byte)(number) $12, (byte)(number) 9, (byte)(number) 1, (byte)(number) 4, (byte)(number) 2, (byte)(number) 4, (byte)(number) 5, (byte)(number) 1, (byte)(number) 0 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::i#0 ← (unumber)(number) 0 Inlining cast (byte) main::a#0 ← (unumber)(number) 3 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 55296 Simplifying constant integer cast 3 Simplifying constant integer cast 4 Simplifying constant integer cast 3 @@ -311,6 +306,8 @@ Simplifying constant integer cast 4 Simplifying constant integer cast 5 Simplifying constant integer cast 1 Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 55296 Simplifying constant integer cast $28 Simplifying constant integer cast 0 Simplifying constant integer cast 3 @@ -367,13 +364,10 @@ Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) screen2#10 (byte*) screen2#0 Identical Phi Values (byte*) screen2#1 (byte*) screen2#10 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) test::$0 [76] if(*((byte[]) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 +Simple Condition (bool~) test::$0 [75] if(*((const byte[]) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [1] (byte*) screen2#0 ← (const byte*) screen1 + (byte) $28 +Constant right-side identified [0] (byte*) screen2#0 ← (const byte*) screen1 + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) 3, (byte) 4, (byte) 3, (byte) $12, (byte) 9, (byte) 1, (byte) 4, (byte) 2, (byte) 4, (byte) 5, (byte) 1, (byte) 0 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) ref = { 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0 } Constant (const byte*) screen2#0 = screen1+$28 Constant (const byte) main::i#0 = 0 Constant (const byte) main::a#0 = 3 diff --git a/src/test/ref/bitmap-circle-2.log b/src/test/ref/bitmap-circle-2.log index 21a1defeb..831269ddf 100644 --- a/src/test/ref/bitmap-circle-2.log +++ b/src/test/ref/bitmap-circle-2.log @@ -3,6 +3,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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 @@ -25,9 +26,6 @@ Culled Empty Block (label) fill::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[]) bitmask ← { (number) $80, (number) $40, (number) $20, (number) $10, (number) 8, (number) 4, (number) 2, (number) 1 } to:@8 (void()) main() @@ -269,7 +267,7 @@ plot::@1: scope:[plot] from plot (number~) plot::$12 ← (signed word~) plot::$11 * (number) $140 (byte*) plot::location#3 ← (byte*) plot::location#2 + (number~) plot::$12 (number~) plot::$13 ← (signed word) plot::x#9 & (number) 7 - (byte~) plot::$14 ← *((byte*) plot::location#3) | *((byte[]) bitmask + (number~) plot::$13) + (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte[]) bitmask + (number~) plot::$13) *((byte*) plot::location#3) ← (byte~) plot::$14 to:plot::@return plot::@return: scope:[plot] from plot plot::@1 @@ -302,7 +300,7 @@ fill::@2: scope:[fill] from fill::@1 fill::@return: scope:[fill] from fill::@1 return to:@return -@8: scope:[] from @4 +@8: scope:[] from @begin call main to:@9 @9: scope:[] from @8 @@ -310,7 +308,6 @@ fill::@return: scope:[fill] from fill::@1 @end: scope:[] from @9 SYMBOL TABLE SSA -(label) @4 (label) @8 (label) @9 (label) @begin @@ -324,7 +321,7 @@ SYMBOL TABLE SSA (const byte) VIC_DEN = (number) $10 (const byte*) VIC_MEMORY = (byte*)(number) $d018 (const byte) VIC_RSEL = (number) 8 -(byte[]) bitmask +(const byte[]) bitmask = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 } (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) (signed word~) circle::$0 (number~) circle::$1 @@ -597,8 +594,6 @@ Adding number conversion cast (snumber) plot::$12 in (number~) plot::$12 ← (si Adding number conversion cast (snumber) 7 in (number~) plot::$13 ← (signed word) plot::x#9 & (number) 7 Adding number conversion cast (snumber) plot::$13 in (number~) plot::$13 ← (signed word) plot::x#9 & (snumber)(number) 7 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) bitmask ← (byte[]){ (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8 Inlining cast (byte) fill::val#0 ← (unumber)(number) 0 Inlining cast (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19 @@ -753,24 +748,21 @@ Identical Phi Values (signed word) circle::yc#1 (signed word) circle::yc#13 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~) main::$10 [23] if((signed word) main::i#2<(signed word) $b4) goto main::@2 -Simple Condition (bool~) circle::$2 [41] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 -Simple Condition (bool~) circle::$3 [44] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4 -Simple Condition (bool~) fill::$1 [139] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 +Simple Condition (bool~) main::$10 [22] if((signed word) main::i#2<(signed word) $b4) goto main::@2 +Simple Condition (bool~) circle::$2 [40] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 +Simple Condition (bool~) circle::$3 [43] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4 +Simple Condition (bool~) fill::$1 [138] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting ! if()-condition to reversed if() [117] (bool~) plot::$7 ← ! (bool~) plot::$6 -Rewriting || if()-condition to two if()s [116] (bool~) plot::$6 ← (bool~) plot::$4 || (bool~) plot::$5 -Rewriting || if()-condition to two if()s [114] (bool~) plot::$4 ← (bool~) plot::$2 || (bool~) plot::$3 -Rewriting || if()-condition to two if()s [112] (bool~) plot::$2 ← (bool~) plot::$0 || (bool~) plot::$1 +Rewriting ! if()-condition to reversed if() [116] (bool~) plot::$7 ← ! (bool~) plot::$6 +Rewriting || if()-condition to two if()s [115] (bool~) plot::$6 ← (bool~) plot::$4 || (bool~) plot::$5 +Rewriting || if()-condition to two if()s [113] (bool~) plot::$4 ← (bool~) plot::$2 || (bool~) plot::$3 +Rewriting || if()-condition to two if()s [111] (bool~) plot::$2 ← (bool~) plot::$0 || (bool~) plot::$1 Successful SSA optimization Pass2ConditionalAndOrRewriting -Constant right-side identified [2] (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8 -Constant right-side identified [6] (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19 -Constant right-side identified [11] (word~) main::$2 ← (word)(const byte*) SCREEN -Constant right-side identified [14] (word~) main::$5 ← (word)(const byte*) BITMAP +Constant right-side identified [1] (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8 +Constant right-side identified [5] (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19 +Constant right-side identified [10] (word~) main::$2 ← (word)(const byte*) SCREEN +Constant right-side identified [13] (word~) main::$5 ← (word)(const byte*) BITMAP Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) bitmask = { $80, $40, $20, $10, 8, 4, 2, 1 } Constant (const byte*) fill::start#0 = BITMAP Constant (const signed word) fill::size#0 = (snumber)$28*$19*8 Constant (const byte) fill::val#0 = 0 @@ -785,7 +777,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 [31] if(true) goto main::@7 +if() condition always true - replacing block destination [30] if(true) goto main::@7 Successful SSA optimization Pass2ConstantIfs Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -850,7 +842,6 @@ Successful SSA optimization Pass2ConstantInlining Alias (signed word~) plot::$12 = (signed word) plot::$17 Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @8 Adding NOP phi() at start of @9 Adding NOP phi() at start of @end @@ -858,41 +849,40 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@9 Adding NOP phi() at start of main::@7 CALL GRAPH -Calls in [] to main:3 -Calls in [main] to fill:7 fill:9 circle:17 -Calls in [circle] to plot:40 plot:45 plot:50 plot:55 plot:60 plot:65 plot:70 plot:75 +Calls in [] to main:2 +Calls in [main] to fill:6 fill:8 circle:16 +Calls in [circle] to plot:39 plot:44 plot:49 plot:54 plot:59 plot:64 plot:69 plot:74 Created 12 initial phi equivalence classes -Coalesced [19] main::i#5 ← main::i#1 -Coalesced [22] circle::y#15 ← circle::r#0 -Coalesced [23] circle::p#16 ← circle::p#0 -Coalesced [33] circle::y#18 ← circle::y#1 -Coalesced [34] circle::p#19 ← circle::p#2 -Coalesced [38] plot::x#17 ← plot::x#0 -Coalesced [39] plot::y#17 ← plot::y#0 -Coalesced [43] plot::x#10 ← plot::x#1 -Coalesced [44] plot::y#10 ← plot::y#1 -Coalesced [48] plot::x#11 ← plot::x#2 -Coalesced [49] plot::y#11 ← plot::y#2 -Coalesced [53] plot::x#12 ← plot::x#3 -Coalesced [54] plot::y#12 ← plot::y#3 -Coalesced [58] plot::x#13 ← plot::x#4 -Coalesced [59] plot::y#13 ← plot::y#4 -Coalesced [63] plot::x#14 ← plot::x#5 -Coalesced [64] plot::y#14 ← plot::y#5 -Coalesced [68] plot::x#15 ← plot::x#6 -Coalesced [69] plot::y#15 ← plot::y#6 -Coalesced [73] plot::x#16 ← plot::x#7 -Coalesced [74] plot::y#16 ← plot::y#7 -Coalesced [77] circle::x1#15 ← circle::x1#1 -Coalesced [78] circle::y#16 ← circle::y#10 -Coalesced [79] circle::p#17 ← circle::p#10 -Coalesced (already) [83] circle::y#17 ← circle::y#13 -Coalesced [84] circle::p#18 ← circle::p#1 -Coalesced [106] fill::addr#4 ← fill::addr#0 -Coalesced [112] fill::addr#5 ← fill::addr#1 +Coalesced [18] main::i#5 ← main::i#1 +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 [76] circle::x1#15 ← circle::x1#1 +Coalesced [77] circle::y#16 ← circle::y#10 +Coalesced [78] circle::p#17 ← circle::p#10 +Coalesced (already) [82] circle::y#17 ← circle::y#13 +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) @4 Culled Empty Block (label) @9 Renumbering block @8 to @1 Renumbering block main::@7 to main::@3 diff --git a/src/test/ref/bitmap-circle.log b/src/test/ref/bitmap-circle.log index d1389cc47..ad966e5f0 100644 --- a/src/test/ref/bitmap-circle.log +++ b/src/test/ref/bitmap-circle.log @@ -3,6 +3,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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 @@ -19,9 +20,6 @@ Culled Empty Block (label) fill::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[]) bitmask ← { (number) $80, (number) $40, (number) $20, (number) $10, (number) 8, (number) 4, (number) 2, (number) 1 } to:@8 (void()) main() @@ -239,7 +237,7 @@ plot: scope:[plot] from circle::@11 circle::@12 circle::@13 circle::@14 circle: (number~) plot::$4 ← (signed word~) plot::$3 * (number) $140 (byte*) plot::location#3 ← (byte*) plot::location#2 + (number~) plot::$4 (number~) plot::$5 ← (signed word) plot::x#8 & (number) 7 - (byte~) plot::$6 ← *((byte*) plot::location#3) | *((byte[]) bitmask + (number~) plot::$5) + (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte[]) bitmask + (number~) plot::$5) *((byte*) plot::location#3) ← (byte~) plot::$6 to:plot::@return plot::@return: scope:[plot] from plot @@ -272,7 +270,7 @@ fill::@2: scope:[fill] from fill::@1 fill::@return: scope:[fill] from fill::@1 return to:@return -@8: scope:[] from @4 +@8: scope:[] from @begin call main to:@9 @9: scope:[] from @8 @@ -280,7 +278,6 @@ fill::@return: scope:[fill] from fill::@1 @end: scope:[] from @9 SYMBOL TABLE SSA -(label) @4 (label) @8 (label) @9 (label) @begin @@ -294,7 +291,7 @@ SYMBOL TABLE SSA (const byte) VIC_DEN = (number) $10 (const byte*) VIC_MEMORY = (byte*)(number) $d018 (const byte) VIC_RSEL = (number) 8 -(byte[]) bitmask +(const byte[]) bitmask = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 } (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) (signed word~) circle::$0 (number~) circle::$1 @@ -541,8 +538,6 @@ Adding number conversion cast (snumber) plot::$4 in (number~) plot::$4 ← (sign Adding number conversion cast (snumber) 7 in (number~) plot::$5 ← (signed word) plot::x#8 & (number) 7 Adding number conversion cast (snumber) plot::$5 in (number~) plot::$5 ← (signed word) plot::x#8 & (snumber)(number) 7 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) bitmask ← (byte[]){ (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8 Inlining cast (byte) fill::val#0 ← (unumber)(number) 0 Inlining cast (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19 @@ -682,18 +677,15 @@ Identical Phi Values (signed word) circle::yc#1 (signed word) circle::yc#13 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 [34] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 -Simple Condition (bool~) circle::$3 [37] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4 -Simple Condition (bool~) fill::$1 [122] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 +Simple Condition (bool~) circle::$2 [33] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 +Simple Condition (bool~) circle::$3 [36] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4 +Simple Condition (bool~) fill::$1 [121] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [2] (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8 -Constant right-side identified [6] (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19 -Constant right-side identified [11] (word~) main::$2 ← (word)(const byte*) SCREEN -Constant right-side identified [14] (word~) main::$5 ← (word)(const byte*) BITMAP +Constant right-side identified [1] (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8 +Constant right-side identified [5] (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19 +Constant right-side identified [10] (word~) main::$2 ← (word)(const byte*) SCREEN +Constant right-side identified [13] (word~) main::$5 ← (word)(const byte*) BITMAP Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) bitmask = { $80, $40, $20, $10, 8, 4, 2, 1 } Constant (const byte*) fill::start#0 = BITMAP Constant (const signed word) fill::size#0 = (snumber)$28*$19*8 Constant (const byte) fill::val#0 = 0 @@ -708,7 +700,7 @@ Constant (const signed word) circle::r#0 = $32 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 [24] if(true) goto main::@1 +if() condition always true - replacing block destination [23] if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -764,7 +756,6 @@ Successful SSA optimization Pass2ConstantInlining Alias (signed word~) plot::$4 = (signed word) plot::$9 Successful SSA optimization Pass2AliasElimination Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @8 Adding NOP phi() at start of @9 Adding NOP phi() at start of @end @@ -774,38 +765,37 @@ Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@1 Adding NOP phi() at start of circle CALL GRAPH -Calls in [] to main:3 -Calls in [main] to fill:7 fill:9 circle:13 -Calls in [circle] to plot:33 plot:38 plot:43 plot:48 plot:53 plot:58 plot:63 plot:68 +Calls in [] to main:2 +Calls in [main] to fill:6 fill:8 circle:12 +Calls in [circle] to plot:32 plot:37 plot:42 plot:47 plot:52 plot:57 plot:62 plot:67 Created 11 initial phi equivalence classes -Coalesced [26] circle::y#17 ← circle::y#1 -Coalesced [27] circle::p#18 ← circle::p#2 -Coalesced [31] plot::x#16 ← plot::x#0 -Coalesced [32] plot::y#16 ← plot::y#0 -Coalesced [36] plot::x#9 ← plot::x#1 -Coalesced [37] plot::y#9 ← plot::y#1 -Coalesced [41] plot::x#10 ← plot::x#2 -Coalesced [42] plot::y#10 ← plot::y#2 -Coalesced [46] plot::x#11 ← plot::x#3 -Coalesced [47] plot::y#11 ← plot::y#3 -Coalesced [51] plot::x#12 ← plot::x#4 -Coalesced [52] plot::y#12 ← plot::y#4 -Coalesced [56] plot::x#13 ← plot::x#5 -Coalesced [57] plot::y#13 ← plot::y#5 -Coalesced [61] plot::x#14 ← plot::x#6 -Coalesced [62] plot::y#14 ← plot::y#6 -Coalesced [66] plot::x#15 ← plot::x#7 -Coalesced [67] plot::y#15 ← plot::y#7 -Coalesced [70] circle::x1#15 ← circle::x1#1 -Coalesced [71] circle::y#15 ← circle::y#10 -Coalesced [72] circle::p#16 ← circle::p#10 -Coalesced (already) [76] circle::y#16 ← circle::y#13 -Coalesced [77] circle::p#17 ← circle::p#1 -Coalesced [95] fill::addr#4 ← fill::addr#0 -Coalesced [101] fill::addr#5 ← fill::addr#1 +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 [69] circle::x1#15 ← circle::x1#1 +Coalesced [70] circle::y#15 ← circle::y#10 +Coalesced [71] circle::p#16 ← circle::p#10 +Coalesced (already) [75] circle::y#16 ← circle::y#13 +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) @4 Culled Empty Block (label) @9 Culled Empty Block (label) main::@5 Renumbering block @8 to @1 diff --git a/src/test/ref/bitmap-plotter.log b/src/test/ref/bitmap-plotter.log index 8e4a56279..b4a995c6d 100644 --- a/src/test/ref/bitmap-plotter.log +++ b/src/test/ref/bitmap-plotter.log @@ -16,6 +16,7 @@ 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 @@ -33,7 +34,7 @@ Culled Empty Block (label) init_screen::@12 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@1 + to:@2 (void()) main() main: scope:[main] from @5 @@ -72,10 +73,6 @@ main::@7: scope:[main] from main::@3 main::@return: scope:[main] from main::@7 return to:@return -@1: scope:[] from @begin - (byte[]) plots_x ← { (number) $3c, (number) $50, (number) $6e, (number) $50, (number) $3c, (number) $28, (number) $a, (number) $28 } - (byte[]) plots_y ← { (number) $a, (number) $28, (number) $3c, (number) $50, (number) $6e, (number) $50, (number) $3c, (number) $28 } - to:@2 (void()) plots() plots: scope:[plots] from main::@3 @@ -88,8 +85,8 @@ plots::@1: scope:[plots] from plots plots::@7 to:plots::@return plots::@2: scope:[plots] from plots::@1 (byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 ) - (byte) plot::x#0 ← *((byte[]) plots_x + (byte) plots::i#3) - (byte) plot::y#0 ← *((byte[]) plots_y + (byte) plots::i#3) + (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 @@ -99,7 +96,7 @@ plots::@7: scope:[plots] from plots::@2 plots::@return: scope:[plots] from plots::@1 return to:@return -@2: scope:[] from @1 +@2: scope:[] from @begin (byte[$100]) plot_xlo ← { fill( $100, 0) } (byte[$100]) plot_xhi ← { fill( $100, 0) } (byte[$100]) plot_ylo ← { fill( $100, 0) } @@ -233,7 +230,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@7 @end: scope:[] from @6 SYMBOL TABLE SSA -(label) @1 (label) @2 (label) @5 (label) @6 @@ -375,8 +371,8 @@ SYMBOL TABLE SSA (byte) plots::i#3 (byte) plots::i#4 (const byte) plots_cnt = (byte) 8 -(byte[]) plots_x -(byte[]) plots_y +(const byte[]) plots_x = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28 } +(const byte[]) plots_y = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28 } Adding number conversion cast (unumber) 0 in *((const byte*) BGCOL) ← (number) 0 Adding number conversion cast (unumber) 0 in *((const byte*) FGCOL) ← (number) 0 @@ -409,9 +405,6 @@ Adding number conversion cast (unumber) 0 in *((byte*) init_screen::b#3) ← (nu Adding number conversion cast (unumber) $400 in (byte*~) init_screen::$1 ← (const byte*) SCREEN + (number) $400 Adding number conversion cast (unumber) $14 in *((byte*) init_screen::c#3) ← (number) $14 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) plots_x ← (byte[]){ (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28 } -Added casts to value list in (byte[]) plots_y ← (byte[]){ (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 0 Inlining cast *((const byte*) FGCOL) ← (unumber)(number) 0 Inlining cast (word~) main::$3 ← (word)(const byte*) SCREEN @@ -427,6 +420,22 @@ Inlining cast *((byte*) init_screen::b#3) ← (unumber)(number) 0 Inlining cast *((byte*) init_screen::c#3) ← (unumber)(number) $14 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 8192 +Simplifying constant integer cast $3c +Simplifying constant integer cast $50 +Simplifying constant integer cast $6e +Simplifying constant integer cast $50 +Simplifying constant integer cast $3c +Simplifying constant integer cast $28 +Simplifying constant integer cast $a +Simplifying constant integer cast $28 +Simplifying constant integer cast $a +Simplifying constant integer cast $28 +Simplifying constant integer cast $3c +Simplifying constant integer cast $50 +Simplifying constant integer cast $6e +Simplifying constant integer cast $50 +Simplifying constant integer cast $3c +Simplifying constant integer cast $28 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53272 @@ -439,22 +448,6 @@ Simplifying constant integer cast 3 Simplifying constant integer cast $40 Simplifying constant integer cast $400 Simplifying constant integer cast $ff -Simplifying constant integer cast $3c -Simplifying constant integer cast $50 -Simplifying constant integer cast $6e -Simplifying constant integer cast $50 -Simplifying constant integer cast $3c -Simplifying constant integer cast $28 -Simplifying constant integer cast $a -Simplifying constant integer cast $28 -Simplifying constant integer cast $a -Simplifying constant integer cast $28 -Simplifying constant integer cast $3c -Simplifying constant integer cast $50 -Simplifying constant integer cast $6e -Simplifying constant integer cast $50 -Simplifying constant integer cast $3c -Simplifying constant integer cast $28 Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast 0 @@ -502,8 +495,8 @@ Inferred type updated to byte in (unumber~) init_plot_tables::$1 ← (byte) init Inferred type updated to byte in (unumber~) init_plot_tables::$5 ← (byte) init_plot_tables::y#2 & (byte) 7 Inferred type updated to byte in (unumber~) init_plot_tables::$7 ← (byte~) init_plot_tables::$5 | (byte~) init_plot_tables::$6 Inferred type updated to byte in (unumber~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 -Inversing boolean not [66] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 != (byte) 0 from [65] (bool~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#1 == (byte) 0 -Inversing boolean not [85] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$9 != (byte) 7 from [84] (bool~) init_plot_tables::$10 ← (byte~) init_plot_tables::$9 == (byte) 7 +Inversing boolean not [64] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 != (byte) 0 from [63] (bool~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#1 == (byte) 0 +Inversing boolean not [83] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$9 != (byte) 7 from [82] (bool~) init_plot_tables::$10 ← (byte~) init_plot_tables::$9 == (byte) 7 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) plots::i#2 = (byte) plots::i#3 (byte) plots::i#4 Alias (byte*) plot::plotter#0 = (byte*~) plot::$4 @@ -521,35 +514,30 @@ Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) plot::x#1 (byte) plot::x#0 Identical Phi Values (byte) plot::y#1 (byte) plot::y#0 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [83] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 +Identified duplicate assignment right side [81] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) main::$11 [16] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 -Simple Condition (bool~) plots::$0 [27] if((byte) plots::i#2<(const byte) plots_cnt) goto plots::@2 -Simple Condition (bool~) init_plot_tables::$3 [67] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 -Simple Condition (bool~) init_plot_tables::$4 [71] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1 -Simple Condition (bool~) init_plot_tables::$11 [86] if((byte~) init_plot_tables::$9!=(byte) 7) goto init_plot_tables::@6 -Simple Condition (bool~) init_plot_tables::$13 [90] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5 -Simple Condition (bool~) init_screen::$0 [98] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 -Simple Condition (bool~) init_screen::$2 [106] if((byte*) init_screen::c#2!=(byte*~) init_screen::$1) goto init_screen::@8 +Simple Condition (bool~) plots::$0 [25] if((byte) plots::i#2<(const byte) plots_cnt) goto plots::@2 +Simple Condition (bool~) init_plot_tables::$3 [65] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 +Simple Condition (bool~) init_plot_tables::$4 [69] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1 +Simple Condition (bool~) init_plot_tables::$11 [84] if((byte~) init_plot_tables::$9!=(byte) 7) goto init_plot_tables::@6 +Simple Condition (bool~) init_plot_tables::$13 [88] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5 +Simple Condition (bool~) init_screen::$0 [96] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 +Simple Condition (bool~) init_screen::$2 [104] if((byte*) init_screen::c#2!=(byte*~) init_screen::$1) goto init_screen::@8 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::$3 ← (word)(const byte*) SCREEN Constant right-side identified [8] (word~) main::$5 ← (word)(const byte*) BITMAP -Constant right-side identified [35] (byte[$100]) plot_xlo ← { fill( $100, 0) } -Constant right-side identified [36] (byte[$100]) plot_xhi ← { fill( $100, 0) } -Constant right-side identified [37] (byte[$100]) plot_ylo ← { fill( $100, 0) } -Constant right-side identified [38] (byte[$100]) plot_yhi ← { fill( $100, 0) } -Constant right-side identified [39] (byte[$100]) plot_bit ← { fill( $100, 0) } -Constant right-side identified [104] (byte*~) init_screen::$1 ← (const byte*) SCREEN + (word) $400 +Constant right-side identified [33] (byte[$100]) plot_xlo ← { fill( $100, 0) } +Constant right-side identified [34] (byte[$100]) plot_xhi ← { fill( $100, 0) } +Constant right-side identified [35] (byte[$100]) plot_ylo ← { fill( $100, 0) } +Constant right-side identified [36] (byte[$100]) plot_yhi ← { fill( $100, 0) } +Constant right-side identified [37] (byte[$100]) plot_bit ← { fill( $100, 0) } +Constant right-side identified [102] (byte*~) init_screen::$1 ← (const byte*) SCREEN + (word) $400 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 } -Identified constant from value list (byte[]) { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte) main::$0 = BMM|DEN Constant (const word) main::$3 = (word)SCREEN Constant (const word) main::$5 = (word)BITMAP -Constant (const byte[]) plots_x = { $3c, $50, $6e, $50, $3c, $28, $a, $28 } -Constant (const byte[]) plots_y = { $a, $28, $3c, $50, $6e, $50, $3c, $28 } Constant (const byte) plots::i#0 = 0 Constant (const byte[$100]) plot_xlo = { fill( $100, 0) } Constant (const byte[$100]) plot_xhi = { fill( $100, 0) } @@ -569,10 +557,10 @@ Constant (const byte*) init_screen::$1 = SCREEN+$400 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [20] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [69] init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to ++ -Resolved ranged comparison value [71] if(init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1 to (number) 0 -Resolved ranged next value [88] init_plot_tables::y#1 ← ++ init_plot_tables::y#2 to ++ -Resolved ranged comparison value [90] if(init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5 to (number) 0 +Resolved ranged next value [67] init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to ++ +Resolved ranged comparison value [69] if(init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1 to (number) 0 +Resolved ranged next value [86] init_plot_tables::y#1 ← ++ init_plot_tables::y#2 to ++ +Resolved ranged comparison value [88] if(init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5 to (number) 0 Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Adding number conversion cast (unumber) 0 in if((byte) init_plot_tables::x#1!=(number) 0) goto init_plot_tables::@1 @@ -640,7 +628,6 @@ Added new block during phi lifting init_plot_tables::@10(between init_plot_table 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) 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 @5 Adding NOP phi() at start of @6 @@ -654,23 +641,22 @@ Adding NOP phi() at start of init_plot_tables::@4 Adding NOP phi() at start of init_screen Adding NOP phi() at start of init_screen::@3 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to init_screen:11 init_plot_tables:13 plots:17 -Calls in [plots] to plot:25 +Calls in [] to main:3 +Calls in [main] to init_screen:10 init_plot_tables:12 plots:16 +Calls in [plots] to plot:24 Created 9 initial phi equivalence classes -Coalesced [27] plots::i#5 ← plots::i#1 -Coalesced [62] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 -Coalesced [67] init_plot_tables::y#5 ← init_plot_tables::y#1 -Coalesced [68] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 -Coalesced (already) [69] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 -Coalesced [70] init_plot_tables::x#5 ← init_plot_tables::x#1 -Coalesced [71] init_plot_tables::bits#5 ← init_plot_tables::bits#4 -Coalesced [72] init_plot_tables::bits#6 ← init_plot_tables::bits#1 -Coalesced [82] init_screen::c#4 ← init_screen::c#1 -Coalesced [85] init_screen::b#4 ← init_screen::b#1 +Coalesced [26] plots::i#5 ← plots::i#1 +Coalesced [61] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 +Coalesced [66] init_plot_tables::y#5 ← init_plot_tables::y#1 +Coalesced [67] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 +Coalesced (already) [68] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 +Coalesced [69] init_plot_tables::x#5 ← init_plot_tables::x#1 +Coalesced [70] init_plot_tables::bits#5 ← init_plot_tables::bits#4 +Coalesced [71] init_plot_tables::bits#6 ← init_plot_tables::bits#1 +Coalesced [81] init_screen::c#4 ← init_screen::c#1 +Coalesced [84] init_screen::b#4 ← init_screen::b#1 Coalesced down to 7 phi equivalence classes -Culled Empty Block (label) @1 Culled Empty Block (label) @2 Culled Empty Block (label) @6 Culled Empty Block (label) main::@6 diff --git a/src/test/ref/c64dtv-blitter-box.cfg b/src/test/ref/c64dtv-blitter-box.cfg index 859f20f87..e99c5d986 100644 --- a/src/test/ref/c64dtv-blitter-box.cfg +++ b/src/test/ref/c64dtv-blitter-box.cfg @@ -44,8 +44,8 @@ main: scope:[main] from @1 [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT to:main::@1 main::@1: scope:[main] from main main::@1 - [36] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY - [37] if((byte~) main::$2!=(byte) 0) goto main::@1 + [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY + [37] if((byte~) main::$0!=(byte) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 [38] return diff --git a/src/test/ref/c64dtv-blitter-box.log b/src/test/ref/c64dtv-blitter-box.log index 2d321556a..38eaa83f2 100644 --- a/src/test/ref/c64dtv-blitter-box.log +++ b/src/test/ref/c64dtv-blitter-box.log @@ -5,13 +5,11 @@ 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:@5 -@5: scope:[] from @begin - (byte[]) SRCB ← { (number) $80 } to:@6 (void()) main() @@ -26,10 +24,8 @@ main: scope:[main] from @6 *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100 *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 *((const byte*) DTV_BLITTER_SRCA_STEP) ← (number) 1 - (byte~) main::$0 ← < (byte[]) SRCB - *((const byte*) DTV_BLITTER_SRCB_LO) ← (byte~) main::$0 - (byte~) main::$1 ← > (byte[]) SRCB - *((const byte*) DTV_BLITTER_SRCB_MI) ← (byte~) main::$1 + *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte[]) SRCB + *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte[]) SRCB *((const byte*) DTV_BLITTER_SRCB_HI) ← (number) 0 *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (number) 0 *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (number) 0 @@ -52,14 +48,14 @@ main: scope:[main] from @6 *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY - (bool~) main::$3 ← (byte~) main::$2 != (number) 0 - if((bool~) main::$3) goto main::@1 + (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY + (bool~) main::$1 ← (byte~) main::$0 != (number) 0 + if((bool~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return to:@return -@6: scope:[] from @5 +@6: scope:[] from @begin call main to:@7 @7: scope:[] from @6 @@ -67,7 +63,6 @@ main::@return: scope:[main] from main::@1 @end: scope:[] from @7 SYMBOL TABLE SSA -(label) @5 (label) @6 (label) @7 (label) @begin @@ -115,12 +110,10 @@ SYMBOL TABLE SSA (const byte) DTV_FEATURE_ENABLE = (number) 1 (const byte*) SCREEN = (byte*)(number) $400 (const byte[]) SRCA = (string) "camelot rules!" -(byte[]) SRCB +(const byte[]) SRCB = { (byte)(number) $80 } (void()) main() (byte~) main::$0 -(byte~) main::$1 -(byte~) main::$2 -(bool~) main::$3 +(bool~) main::$1 (label) main::@1 (label) main::@return @@ -142,10 +135,8 @@ Adding number conversion cast (unumber) <$14*$a in *((const byte*) DTV_BLITTER_L Adding number conversion cast (unumber) $14 in *((const byte*) DTV_BLITTER_LEN_LO) ← ((unumber)) <(number) $14*(word) $a Adding number conversion cast (unumber) >$14*$a in *((const byte*) DTV_BLITTER_LEN_HI) ← >(number) $14*(word) $a Adding number conversion cast (unumber) $14 in *((const byte*) DTV_BLITTER_LEN_HI) ← ((unumber)) >(number) $14*(word) $a -Adding number conversion cast (unumber) 0 in (bool~) main::$3 ← (byte~) main::$2 != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) main::$1 ← (byte~) main::$0 != (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) SRCB ← (byte[]){ (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) DTV_BLITTER_SRCA_HI) ← (unumber)(number) 0 Inlining cast *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (unumber)(number) 0 Inlining cast *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (unumber)(number) 0 @@ -190,8 +181,8 @@ Simplifying constant pointer cast (byte*) 54074 Simplifying constant pointer cast (byte*) 54075 Simplifying constant pointer cast (byte*) 54079 Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 54078 Simplifying constant integer cast $80 +Simplifying constant pointer cast (byte*) 54078 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -230,38 +221,23 @@ Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) $14 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Simple Condition (bool~) main::$3 [37] if((byte~) main::$2!=(byte) 0) goto main::@1 +Simple Condition (bool~) main::$1 [34] if((byte~) main::$0!=(byte) 0) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) SRCB = { $80 } -Successful SSA optimization Pass2ConstantIdentification -Simplifying constant evaluating to zero <(word) $100 in [8] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100 -Simplifying constant evaluating to zero <(word) $100 in [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← <(word) $100 -Simplifying constant evaluating to zero >(word) $15 in [25] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← >(word) $15 -Simplifying constant evaluating to zero >(word) $13 in [27] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← >(word) $13 -Simplifying constant evaluating to zero >(byte) $14*(word) $a in [30] *((const byte*) DTV_BLITTER_LEN_HI) ← >(byte) $14*(word) $a +Simplifying constant evaluating to zero <(word) $100 in [7] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100 +Simplifying constant evaluating to zero <(word) $100 in [15] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← <(word) $100 +Simplifying constant evaluating to zero >(word) $15 in [22] *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← >(word) $15 +Simplifying constant evaluating to zero >(word) $13 in [24] *((const byte*) DTV_BLITTER_DEST_LIN_HI) ← >(word) $13 +Simplifying constant evaluating to zero >(byte) $14*(word) $a in [27] *((const byte*) DTV_BLITTER_LEN_HI) ← >(byte) $14*(word) $a Successful SSA optimization PassNSimplifyConstantZero -Constant right-side identified [10] (byte~) main::$0 ← < (const byte[]) SRCB -Constant right-side identified [12] (byte~) main::$1 ← > (const byte[]) SRCB -Successful SSA optimization Pass2ConstantRValueConsolidation -Constant (const byte) main::$0 = SRCB -Successful SSA optimization Pass2ConstantIdentification -Constant inlined main::$1 = >(const byte[]) SRCB -Constant inlined main::$0 = <(const byte[]) SRCB -Successful SSA optimization Pass2ConstantInlining 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 @7 Adding NOP phi() at start of @end CALL GRAPH -Calls in [] to main:3 +Calls in [] to main:2 Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes -Culled Empty Block (label) @5 Culled Empty Block (label) @7 Renumbering block @6 to @1 Adding NOP phi() at start of @begin @@ -315,8 +291,8 @@ main: scope:[main] from @1 [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT to:main::@1 main::@1: scope:[main] from main main::@1 - [36] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY - [37] if((byte~) main::$2!=(byte) 0) goto main::@1 + [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY + [37] if((byte~) main::$0!=(byte) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 [38] return @@ -325,13 +301,13 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$2 22.0 +(byte~) main::$0 22.0 Initial phi equivalence classes -Added variable main::$2 to zero page equivalence class [ main::$2 ] +Added variable main::$0 to zero page equivalence class [ main::$0 ] Complete equivalence classes -[ main::$2 ] -Allocated zp[1]:2 [ main::$2 ] +[ main::$0 ] +Allocated zp[1]:2 [ main::$0 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -427,7 +403,7 @@ __bend_from___b1: __bend: // main main: { - .label __2 = 2 + .label __0 = 2 // [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE sta DTV_FEATURE @@ -534,12 +510,12 @@ main: { // wait til blitter is ready // main::@1 __b1: - // [36] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuz1=_deref_pbuc1_band_vbuc2 + // [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuz1=_deref_pbuc1_band_vbuc2 lda #DTV_BLIT_STATUS_BUSY and DTV_BLITTER_CONTROL2 - sta.z __2 - // [37] if((byte~) main::$2!=(byte) 0) goto main::@1 -- vbuz1_neq_0_then_la1 - lda.z __2 + sta.z __0 + // [37] if((byte~) main::$0!=(byte) 0) goto main::@1 -- vbuz1_neq_0_then_la1 + lda.z __0 cmp #0 bne __b1 jmp __breturn @@ -586,14 +562,14 @@ Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [36] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::$2 ] ( main:2 [ main::$2 ] ) always clobbers reg byte a -Potential registers zp[1]:2 [ main::$2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , +Statement [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::$0 ] ( main:2 [ main::$0 ] ) always clobbers reg byte a +Potential registers zp[1]:2 [ main::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 22: zp[1]:2 [ main::$2 ] +Uplift Scope [main] 22: zp[1]:2 [ main::$0 ] Uplift Scope [] -Uplifting [main] best 348 combination reg byte a [ main::$2 ] +Uplifting [main] best 348 combination reg byte a [ main::$0 ] Uplifting [] best 348 combination ASSEMBLER BEFORE OPTIMIZATION @@ -795,10 +771,10 @@ main: { // wait til blitter is ready // main::@1 __b1: - // [36] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 + // [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 lda #DTV_BLIT_STATUS_BUSY and DTV_BLITTER_CONTROL2 - // [37] if((byte~) main::$2!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 + // [37] if((byte~) main::$0!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne __b1 jmp __breturn @@ -888,11 +864,11 @@ FINAL SYMBOL TABLE (const byte[]) SRCA = (string) "camelot rules!" (const byte[]) SRCB = { (byte) $80 } (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@return -reg byte a [ main::$2 ] +reg byte a [ main::$0 ] FINAL ASSEMBLER @@ -1114,11 +1090,11 @@ main: { // main::@1 __b1: // *DTV_BLITTER_CONTROL2 & DTV_BLIT_STATUS_BUSY - // [36] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 + // [36] (byte~) main::$0 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 lda #DTV_BLIT_STATUS_BUSY and DTV_BLITTER_CONTROL2 // while((*DTV_BLITTER_CONTROL2 & DTV_BLIT_STATUS_BUSY)!=0) - // [37] if((byte~) main::$2!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 + // [37] if((byte~) main::$0!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne __b1 // main::@return diff --git a/src/test/ref/c64dtv-blitter-box.sym b/src/test/ref/c64dtv-blitter-box.sym index 2bd680eec..d7712c191 100644 --- a/src/test/ref/c64dtv-blitter-box.sym +++ b/src/test/ref/c64dtv-blitter-box.sym @@ -46,8 +46,8 @@ (const byte[]) SRCA = (string) "camelot rules!" (const byte[]) SRCB = { (byte) $80 } (void()) main() -(byte~) main::$2 reg byte a 22.0 +(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@return -reg byte a [ main::$2 ] +reg byte a [ main::$0 ] diff --git a/src/test/ref/c64dtv-blittermin.asm b/src/test/ref/c64dtv-blittermin.asm index 25129bf14..b32466de5 100644 --- a/src/test/ref/c64dtv-blittermin.asm +++ b/src/test/ref/c64dtv-blittermin.asm @@ -147,5 +147,5 @@ main: { bne __b1 rts } - SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' SRCB: .byte $80 + SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' diff --git a/src/test/ref/c64dtv-blittermin.cfg b/src/test/ref/c64dtv-blittermin.cfg index 327016c02..2fdca775e 100644 --- a/src/test/ref/c64dtv-blittermin.cfg +++ b/src/test/ref/c64dtv-blittermin.cfg @@ -45,8 +45,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 main::@2 [36] (byte) main::r#2 ← phi( main/(byte) 0 main::@1/(byte) main::r#2 main::@2/(byte) main::r#1 ) - [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY - [38] if((byte~) main::$4!=(byte) 0) goto main::@1 + [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY + [38] if((byte~) main::$2!=(byte) 0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD diff --git a/src/test/ref/c64dtv-blittermin.log b/src/test/ref/c64dtv-blittermin.log index 9102349d4..ada32359a 100644 --- a/src/test/ref/c64dtv-blittermin.log +++ b/src/test/ref/c64dtv-blittermin.log @@ -13,7 +13,6 @@ CONTROL FLOW GRAPH SSA to:@5 @5: scope:[] from @begin (byte[]) SRCA ← { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } - (byte[]) SRCB ← { (number) $80 } to:@6 (void()) main() @@ -30,10 +29,8 @@ main: scope:[main] from @6 *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100 *((const byte*) DTV_BLITTER_SRCA_LIN_HI) ← >(word) $100 *((const byte*) DTV_BLITTER_SRCA_STEP) ← (number) $10 - (byte~) main::$2 ← < (byte[]) SRCB - *((const byte*) DTV_BLITTER_SRCB_LO) ← (byte~) main::$2 - (byte~) main::$3 ← > (byte[]) SRCB - *((const byte*) DTV_BLITTER_SRCB_MI) ← (byte~) main::$3 + *((const byte*) DTV_BLITTER_SRCB_LO) ← <(const byte[]) SRCB + *((const byte*) DTV_BLITTER_SRCB_MI) ← >(const byte[]) SRCB *((const byte*) DTV_BLITTER_SRCB_HI) ← (number) 0 *((const byte*) DTV_BLITTER_SRCB_MOD_LO) ← (number) 0 *((const byte*) DTV_BLITTER_SRCB_MOD_HI) ← (number) 0 @@ -58,16 +55,16 @@ main: scope:[main] from @6 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 ) - (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY - (bool~) main::$5 ← (byte~) main::$4 != (number) 0 - if((bool~) main::$5) goto main::@2 + (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY + (bool~) main::$3 ← (byte~) main::$2 != (number) 0 + if((bool~) main::$3) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::r#2 ← phi( main::@2/(byte) main::r#3 ) *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD (byte) main::r#1 ← (byte) main::r#2 + rangenext(0,7) - (bool~) main::$6 ← (byte) main::r#1 != rangelast(0,7) - if((bool~) main::$6) goto main::@2 + (bool~) main::$4 ← (byte) main::r#1 != rangelast(0,7) + if((bool~) main::$4) goto main::@2 to:main::@return main::@return: scope:[main] from main::@3 return @@ -129,15 +126,13 @@ SYMBOL TABLE SSA (const byte*) SCREEN = (byte*)(number) $400 (byte[]) SRCA (const byte) SRCA_LEN = (number) 9 -(byte[]) SRCB +(const byte[]) SRCB = { (byte)(number) $80 } (void()) main() (byte~) main::$0 (byte~) main::$1 (byte~) main::$2 -(byte~) main::$3 -(byte~) main::$4 -(bool~) main::$5 -(bool~) main::$6 +(bool~) main::$3 +(bool~) main::$4 (label) main::@2 (label) main::@3 (label) main::@return @@ -160,10 +155,8 @@ Adding number conversion cast (unumber) 0 in *((const byte*) DTV_BLITTER_DEST_MO Adding number conversion cast (unumber) 0 in *((const byte*) DTV_BLITTER_DEST_MOD_HI) ← (number) 0 Adding number conversion cast (unumber) $10 in *((const byte*) DTV_BLITTER_DEST_STEP) ← (number) $10 Adding number conversion cast (unumber) 0 in *((const byte*) DTV_BLITTER_LEN_HI) ← (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) main::$5 ← (byte~) main::$4 != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) main::$3 ← (byte~) main::$2 != (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) SRCB ← (byte[]){ (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) DTV_BLITTER_SRCA_HI) ← (unumber)(number) 0 Inlining cast *((const byte*) DTV_BLITTER_SRCA_MOD_LO) ← (unumber)(number) 0 Inlining cast *((const byte*) DTV_BLITTER_SRCA_MOD_HI) ← (unumber)(number) 0 @@ -209,8 +202,8 @@ Simplifying constant pointer cast (byte*) 54074 Simplifying constant pointer cast (byte*) 54075 Simplifying constant pointer cast (byte*) 54079 Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 54078 Simplifying constant integer cast $80 +Simplifying constant pointer cast (byte*) 54078 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -243,22 +236,20 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Alias (byte) main::r#2 = (byte) main::r#3 Successful SSA optimization Pass2AliasElimination -Simple Condition (bool~) main::$5 [42] if((byte~) main::$4!=(byte) 0) goto main::@2 -Simple Condition (bool~) main::$6 [47] if((byte) main::r#1!=rangelast(0,7)) goto main::@2 +Simple Condition (bool~) main::$3 [39] if((byte~) main::$2!=(byte) 0) goto main::@2 +Simple Condition (bool~) main::$4 [44] if((byte) main::r#1!=rangelast(0,7)) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Identified constant from value list (byte[]) { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } -Identified constant from value list (byte[]) { (byte) $80 } Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte[]) SRCA = { 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' } -Constant (const byte[]) SRCB = { $80 } Constant (const byte) main::r#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [45] main::r#1 ← ++ main::r#2 to ++ -Resolved ranged comparison value [47] if(main::r#1!=rangelast(0,7)) goto main::@2 to (number) 8 -Simplifying constant evaluating to zero <(word) $100 in [11] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100 -Simplifying constant evaluating to zero <(word) $100 in [21] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← <(word) $100 -Simplifying constant evaluating to zero <(const byte*) SCREEN in [24] *((const byte*) DTV_BLITTER_DEST_LO) ← <(const byte*) SCREEN -Simplifying constant evaluating to zero <(word) $100 in [29] *((const byte*) DTV_BLITTER_DEST_LIN_LO) ← <(word) $100 +Resolved ranged next value [42] main::r#1 ← ++ main::r#2 to ++ +Resolved ranged comparison value [44] if(main::r#1!=rangelast(0,7)) goto main::@2 to (number) 8 +Simplifying constant evaluating to zero <(word) $100 in [10] *((const byte*) DTV_BLITTER_SRCA_LIN_LO) ← <(word) $100 +Simplifying constant evaluating to zero <(word) $100 in [18] *((const byte*) DTV_BLITTER_SRCB_LIN_LO) ← <(word) $100 +Simplifying constant evaluating to zero <(const byte*) SCREEN in [21] *((const byte*) DTV_BLITTER_DEST_LO) ← <(const byte*) SCREEN +Simplifying constant evaluating to zero <(word) $100 in [26] *((const 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 Successful SSA optimization PassNAddNumberTypeConversions @@ -268,19 +259,13 @@ Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions Constant right-side identified [2] (byte~) main::$0 ← < (const byte[]) SRCA Constant right-side identified [4] (byte~) main::$1 ← > (const byte[]) SRCA -Constant right-side identified [12] (byte~) main::$2 ← < (const byte[]) SRCB -Constant right-side identified [14] (byte~) main::$3 ← > (const byte[]) SRCB Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::$0 = SRCA -Constant (const byte) main::$2 = SRCB Successful SSA optimization Pass2ConstantIdentification Inlining constant with var siblings (const byte) main::r#0 -Constant inlined main::r#0 = (byte) 0 -Constant inlined main::$3 = >(const byte[]) SRCB Constant inlined main::$1 = >(const byte[]) SRCA -Constant inlined main::$2 = <(const byte[]) SRCB +Constant inlined main::r#0 = (byte) 0 Constant inlined main::$0 = <(const byte[]) SRCA Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@5(between main::@2 and main::@2) @@ -356,8 +341,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 main::@2 [36] (byte) main::r#2 ← phi( main/(byte) 0 main::@1/(byte) main::r#2 main::@2/(byte) main::r#1 ) - [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY - [38] if((byte~) main::$4!=(byte) 0) goto main::@1 + [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY + [38] if((byte~) main::$2!=(byte) 0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD @@ -371,19 +356,19 @@ main::@return: scope:[main] from main::@2 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$4 202.0 +(byte~) main::$2 202.0 (byte) main::r (byte) main::r#1 16.5 (byte) main::r#2 56.0 Initial phi equivalence classes [ main::r#2 main::r#1 ] -Added variable main::$4 to zero page equivalence class [ main::$4 ] +Added variable main::$2 to zero page equivalence class [ main::$2 ] Complete equivalence classes [ main::r#2 main::r#1 ] -[ main::$4 ] +[ main::$2 ] Allocated zp[1]:2 [ main::r#2 main::r#1 ] -Allocated zp[1]:3 [ main::$4 ] +Allocated zp[1]:3 [ main::$2 ] INITIAL ASM Target platform is c64basic / MOS6502X @@ -479,7 +464,7 @@ __bend_from___b1: __bend: // main main: { - .label __4 = 3 + .label __2 = 3 .label r = 2 // [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE -- _deref_pbuc1=vbuc2 lda #DTV_FEATURE_ENABLE @@ -597,12 +582,12 @@ main: { jmp __b1 // main::@1 __b1: - // [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuz1=_deref_pbuc1_band_vbuc2 + // [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuz1=_deref_pbuc1_band_vbuc2 lda #DTV_BLIT_STATUS_BUSY and DTV_BLITTER_CONTROL2 - sta.z __4 - // [38] if((byte~) main::$4!=(byte) 0) goto main::@1 -- vbuz1_neq_0_then_la1 - lda.z __4 + sta.z __2 + // [38] if((byte~) main::$2!=(byte) 0) goto main::@1 -- vbuz1_neq_0_then_la1 + lda.z __2 cmp #0 bne __b1_from___b1 jmp __b2 @@ -625,8 +610,8 @@ main: { rts } // File Data - SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' SRCB: .byte $80 + SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -661,7 +646,7 @@ Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$4 ] ( main:2 [ main::r#2 main::$4 ] ) always clobbers reg byte a +Statement [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$2 ] ( main:2 [ main::r#2 main::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::r#2 main::r#1 ] Statement [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a Statement [4] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -696,16 +681,16 @@ Statement [32] *((const byte*) DTV_BLITTER_ALU) ← (const byte) DTV_BLIT_ADD [ Statement [33] *((const byte*) DTV_BLITTER_TRANSPARANCY) ← (const byte) DTV_BLIT_TRANSPARANCY_NONE [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [34] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [35] *((const byte*) DTV_BLITTER_CONTROL2) ← (const byte) DTV_BLIT_DEST_CONT [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$4 ] ( main:2 [ main::r#2 main::$4 ] ) always clobbers reg byte a +Statement [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY [ main::r#2 main::$2 ] ( main:2 [ main::r#2 main::$2 ] ) always clobbers reg byte a Statement [39] *((const byte*) DTV_BLITTER_CONTROL) ← (const byte) DTV_BLIT_FORCE_START|(const byte) DTV_BLIT_SRCA_FWD|(const byte) DTV_BLIT_SRCB_FWD|(const byte) DTV_BLIT_DEST_FWD [ main::r#2 ] ( main:2 [ main::r#2 ] ) always clobbers reg byte a Potential registers zp[1]:2 [ main::r#2 main::r#1 ] : zp[1]:2 , reg byte x , reg byte y , -Potential registers zp[1]:3 [ main::$4 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:3 [ main::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 202: zp[1]:3 [ main::$4 ] 72.5: zp[1]:2 [ main::r#2 main::r#1 ] +Uplift Scope [main] 202: zp[1]:3 [ main::$2 ] 72.5: zp[1]:2 [ main::r#2 main::r#1 ] Uplift Scope [] -Uplifting [main] best 2515 combination reg byte a [ main::$4 ] reg byte x [ main::r#2 main::r#1 ] +Uplifting [main] best 2515 combination reg byte a [ main::$2 ] reg byte x [ main::r#2 main::r#1 ] Uplifting [] best 2515 combination ASSEMBLER BEFORE OPTIMIZATION @@ -916,10 +901,10 @@ main: { jmp __b1 // main::@1 __b1: - // [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 + // [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 lda #DTV_BLIT_STATUS_BUSY and DTV_BLITTER_CONTROL2 - // [38] if((byte~) main::$4!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 + // [38] if((byte~) main::$2!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne __b1_from___b1 jmp __b2 @@ -941,8 +926,8 @@ main: { rts } // File Data - SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' SRCB: .byte $80 + SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 @@ -1034,7 +1019,7 @@ FINAL SYMBOL TABLE (const byte) SRCA_LEN = (number) 9 (const byte[]) SRCB = { (byte) $80 } (void()) main() -(byte~) main::$4 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return @@ -1043,7 +1028,7 @@ FINAL SYMBOL TABLE (byte) main::r#2 reg byte x 56.0 reg byte x [ main::r#2 main::r#1 ] -reg byte a [ main::$4 ] +reg byte a [ main::$2 ] FINAL ASSEMBLER @@ -1266,11 +1251,11 @@ main: { // main::@1 __b1: // *DTV_BLITTER_CONTROL2 & DTV_BLIT_STATUS_BUSY - // [37] (byte~) main::$4 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 + // [37] (byte~) main::$2 ← *((const byte*) DTV_BLITTER_CONTROL2) & (const byte) DTV_BLIT_STATUS_BUSY -- vbuaa=_deref_pbuc1_band_vbuc2 lda #DTV_BLIT_STATUS_BUSY and DTV_BLITTER_CONTROL2 // while((*DTV_BLITTER_CONTROL2 & DTV_BLIT_STATUS_BUSY)!=0) - // [38] if((byte~) main::$4!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 + // [38] if((byte~) main::$2!=(byte) 0) goto main::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne __b1 // main::@2 @@ -1291,6 +1276,6 @@ main: { rts } // File Data - SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' SRCB: .byte $80 + SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' diff --git a/src/test/ref/c64dtv-blittermin.sym b/src/test/ref/c64dtv-blittermin.sym index d36736e95..326de4cd0 100644 --- a/src/test/ref/c64dtv-blittermin.sym +++ b/src/test/ref/c64dtv-blittermin.sym @@ -47,7 +47,7 @@ (const byte) SRCA_LEN = (number) 9 (const byte[]) SRCB = { (byte) $80 } (void()) main() -(byte~) main::$4 reg byte a 202.0 +(byte~) main::$2 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@return @@ -56,4 +56,4 @@ (byte) main::r#2 reg byte x 56.0 reg byte x [ main::r#2 main::r#1 ] -reg byte a [ main::$4 ] +reg byte a [ main::$2 ] diff --git a/src/test/ref/c64dtv-color.log b/src/test/ref/c64dtv-color.log index 1e0a2752b..1a03e90e1 100644 --- a/src/test/ref/c64dtv-color.log +++ b/src/test/ref/c64dtv-color.log @@ -26,7 +26,6 @@ main: scope:[main] from @6 asm { sei } *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE *((const byte*) DTV_CONTROL) ← (const byte) DTV_HIGHCOLOR|(const byte) DTV_BORDER_OFF|(const byte) DTV_BADLINE_OFF - (byte[$10]) main::palette ← { (number) 0, (number) 1, (number) 2, (number) 3, (number) 4, (number) 5, (number) 6, (number) 7, (number) 8, (number) 9, (number) $a, (number) $b, (number) $c, (number) $d, (number) $e, (number) $f } to:main::@1 main::@1: scope:[main] from main main::@12 if(true) goto main::@4 @@ -52,8 +51,8 @@ main::@11: scope:[main] from main::@10 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 ) - *((const byte*) DTV_PALETTE + (byte) main::c#2) ← *((byte[$10]) main::palette + (byte) main::c#2) - *((byte[$10]) main::palette + (byte) main::c#2) ← ++ *((byte[$10]) main::palette + (byte) main::c#2) + *((const byte*) DTV_PALETTE + (byte) main::c#2) ← *((const byte[$10]) main::palette + (byte) main::c#2) + *((const byte[$10]) main::palette + (byte) main::c#2) ← ++ *((const byte[$10]) 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 @@ -97,7 +96,7 @@ SYMBOL TABLE SSA (byte) main::c#0 (byte) main::c#1 (byte) main::c#2 -(byte[$10]) main::palette +(const byte[$10]) main::palette = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) $e, (byte)(number) $f } (byte) main::r (byte) main::r#0 (byte) main::r#1 @@ -106,8 +105,6 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) $40 in (bool~) main::$0 ← *((const byte*) RASTER) != (number) $40 Adding number conversion cast (unumber) 0 in *((const byte*) BGCOL) ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[$10]) main::palette ← (byte[$10]){ (byte)(number) 0, (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) $e, (byte)(number) $f } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) BGCOL) ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53266 @@ -137,22 +134,19 @@ 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 [6] if(*((const byte*) RASTER)!=(byte) $40) goto main::@4 -Simple Condition (bool~) main::$2 [14] if((byte) main::r#1!=rangelast($31,$ff)) goto main::@10 -Simple Condition (bool~) main::$4 [21] if((byte) main::c#1!=rangelast(0,$f)) goto main::@12 +Simple Condition (bool~) main::$0 [5] if(*((const 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 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[$10]) { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[$10]) main::palette = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $a, $b, $c, $d, $e, $f } 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 [4] if(true) goto main::@4 +if() condition always true - replacing block destination [3] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [12] main::r#1 ← ++ main::r#2 to ++ -Resolved ranged comparison value [14] if(main::r#1!=rangelast($31,$ff)) goto main::@10 to (number) 0 -Resolved ranged next value [19] main::c#1 ← ++ main::c#2 to ++ -Resolved ranged comparison value [21] if(main::c#1!=rangelast(0,$f)) goto main::@12 to (number) $10 +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 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 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 diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index b8ec940c8..e8e7d31ee 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -126,6 +126,41 @@ .label FORM_SCREEN = $400 // Charset used for the FORM .label FORM_CHARSET = $1800 + .label form_ctrl_bmm = form_fields_val+1 + .label form_ctrl_mcm = form_fields_val+2 + .label form_ctrl_ecm = form_fields_val+3 + .label form_ctrl_hicol = form_fields_val+4 + .label form_ctrl_line = form_fields_val+5 + .label form_ctrl_colof = form_fields_val+6 + .label form_ctrl_chunk = form_fields_val+7 + .label form_ctrl_borof = form_fields_val+8 + .label form_ctrl_overs = form_fields_val+9 + .label form_a_pattern = form_fields_val+$a + .label form_a_start_hi = form_fields_val+$b + .label form_a_start_lo = form_fields_val+$c + .label form_a_step_hi = form_fields_val+$d + .label form_a_step_lo = form_fields_val+$e + .label form_a_mod_hi = form_fields_val+$f + .label form_a_mod_lo = form_fields_val+$10 + .label form_b_pattern = form_fields_val+$11 + .label form_b_start_hi = form_fields_val+$12 + .label form_b_start_lo = form_fields_val+$13 + .label form_b_step_hi = form_fields_val+$14 + .label form_b_step_lo = form_fields_val+$15 + .label form_b_mod_hi = form_fields_val+$16 + .label form_b_mod_lo = form_fields_val+$17 + .label form_vic_screen = form_fields_val+$18 + .label form_vic_gfx = form_fields_val+$19 + .label form_vic_cols = form_fields_val+$1a + .label form_dtv_palet = form_fields_val+$1b + .label form_vic_bg0_hi = form_fields_val+$1c + .label form_vic_bg0_lo = form_fields_val+$1d + .label form_vic_bg1_hi = form_fields_val+$1e + .label form_vic_bg1_lo = form_fields_val+$1f + .label form_vic_bg2_hi = form_fields_val+$20 + .label form_vic_bg2_lo = form_fields_val+$21 + .label form_vic_bg3_hi = form_fields_val+$22 + .label form_vic_bg3_lo = form_fields_val+$23 // The number of frames to use for a full blink cycle .const FORM_CURSOR_BLINK = $28 // Number of form fields @@ -177,7 +212,7 @@ gfx_mode: { .label vic_colors = 6 .label col = $b .label cy = $a - lda form_fields_val+5 + lda form_ctrl_line cmp #0 beq b1 ldx #DTV_LINEAR @@ -185,35 +220,35 @@ gfx_mode: { b1: ldx #0 __b1: - lda form_fields_val+8 + lda form_ctrl_borof cmp #0 beq __b2 txa ora #DTV_BORDER_OFF tax __b2: - lda form_fields_val+4 + lda form_ctrl_hicol cmp #0 beq __b3 txa ora #DTV_HIGHCOLOR tax __b3: - lda form_fields_val+9 + lda form_ctrl_overs cmp #0 beq __b4 txa ora #DTV_OVERSCAN tax __b4: - lda form_fields_val+6 + lda form_ctrl_colof cmp #0 beq __b5 txa ora #DTV_COLORRAM_OFF tax __b5: - lda form_fields_val+7 + lda form_ctrl_chunk cmp #0 beq __b6 txa @@ -221,7 +256,7 @@ gfx_mode: { tax __b6: stx DTV_CONTROL - lda form_fields_val+3 + lda form_ctrl_ecm cmp #0 beq b2 ldx #VIC_DEN|VIC_RSEL|3|VIC_ECM @@ -229,7 +264,7 @@ gfx_mode: { b2: ldx #VIC_DEN|VIC_RSEL|3 __b7: - lda form_fields_val+1 + lda form_ctrl_bmm cmp #0 beq __b8 txa @@ -237,7 +272,7 @@ gfx_mode: { tax __b8: stx VIC_CONTROL - lda form_fields_val+2 + lda form_ctrl_mcm cmp #0 beq b3 lda #VIC_CSEL|VIC_MCM @@ -246,14 +281,14 @@ gfx_mode: { lda #VIC_CSEL __b9: sta VIC_CONTROL2 - lda form_fields_val+$b + lda form_a_start_hi asl asl asl asl - ora form_fields_val+$c + ora form_a_start_lo tax - lda form_fields_val+$a + lda form_a_pattern jsr get_plane txa clc @@ -282,30 +317,30 @@ gfx_mode: { sta.z __26+1 lda.z __26 sta DTV_PLANEA_START_HI - lda form_fields_val+$d + lda form_a_step_hi asl asl asl asl - ora form_fields_val+$e + ora form_a_step_lo sta DTV_PLANEA_STEP - lda form_fields_val+$f + lda form_a_mod_hi asl asl asl asl - ora form_fields_val+$10 + ora form_a_mod_lo sta DTV_PLANEA_MODULO_LO lda #0 sta DTV_PLANEA_MODULO_HI - lda form_fields_val+$12 + lda form_b_start_hi asl asl asl asl - ora form_fields_val+$13 + ora form_b_start_lo tax - lda form_fields_val+$11 + lda form_b_pattern jsr get_plane txa clc @@ -334,19 +369,19 @@ gfx_mode: { sta.z __40+1 lda.z __40 sta DTV_PLANEB_START_HI - lda form_fields_val+$14 + lda form_b_step_hi asl asl asl asl - ora form_fields_val+$15 + ora form_b_step_lo sta DTV_PLANEB_STEP - lda form_fields_val+$16 + lda form_b_mod_hi asl asl asl asl - ora form_fields_val+$17 + ora form_b_mod_lo sta DTV_PLANEB_MODULO_LO lda #0 sta DTV_PLANEB_MODULO_HI @@ -356,7 +391,7 @@ gfx_mode: { // Set VIC Bank bits to output - all others to input lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A - lda form_fields_val+$18 + lda form_vic_screen jsr get_vic_screen lda.z __52 and #<$3fff @@ -372,7 +407,7 @@ gfx_mode: { bne !- lda.z __53 sta.z __54 - lda form_fields_val+$19 + lda form_vic_gfx jsr get_vic_charset lda.z __57 and #<$3fff @@ -386,7 +421,7 @@ gfx_mode: { // Set VIC Bank // VIC memory sta VIC_MEMORY - lda form_fields_val+$1a + lda form_vic_cols jsr get_vic_screen lda #0 sta.z cy @@ -418,36 +453,36 @@ gfx_mode: { // Background colors lda #0 sta BORDERCOL - lda form_fields_val+$1c + lda form_vic_bg0_hi asl asl asl asl - ora form_fields_val+$1d + ora form_vic_bg0_lo sta BGCOL1 - lda form_fields_val+$1e + lda form_vic_bg1_hi asl asl asl asl - ora form_fields_val+$1f + ora form_vic_bg1_lo sta BGCOL2 - lda form_fields_val+$20 + lda form_vic_bg2_hi asl asl asl asl - ora form_fields_val+$21 + ora form_vic_bg2_lo sta BGCOL3 - lda form_fields_val+$22 + lda form_vic_bg3_hi asl asl asl asl - ora form_fields_val+$23 + ora form_vic_bg3_lo sta BGCOL4 // DTV Palette - lda form_fields_val+$1b + lda form_dtv_palet cmp #0 beq b4 ldx #0 @@ -2539,28 +2574,18 @@ keyboard_init: { sta CIA1_PORT_B_DDR rts } + // Default vallues for the palette + DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a print_hextab: .text "0123456789abcdef" + // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) + keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f + // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) + keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 // Charset ROM FORM_TEXT: .text " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @" .byte 0 FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" .byte 0 - // Default vallues for the palette - DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a - // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) - keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f - // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) - keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // Tables for the plotter - initialized by calling bitmap_draw_init(); - bitmap_plot_xlo: .fill $100, 0 - bitmap_plot_xhi: .fill $100, 0 - bitmap_plot_ylo: .fill $100, 0 - bitmap_plot_yhi: .fill $100, 0 - bitmap_plot_bit: .fill $100, 0 // Form fields x/y-positions form_fields_x: .byte 8, $c, $c, $c, $c, $c, $c, $c, $c, $c, $19, $18, $19, $18, $19, $18, $19, $19, $18, $19, $18, $19, $18, $19, $25, $25, $25, $25, $24, $25, $24, $25, $24, $25, $24, $25 form_fields_y: .byte 2, 5, 6, 7, 8, 9, $a, $b, $c, $d, 5, 6, 6, 7, 7, 8, 8, $b, $c, $c, $d, $d, $e, $e, 5, 6, 7, $a, $b, $b, $c, $c, $d, $d, $e, $e @@ -2590,6 +2615,16 @@ keyboard_init: { preset_sixsfred2: .byte 9, 1, 1, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, $a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 // Preset: 8bpp Pixel Cell preset_8bpppixelcell: .byte $a, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, $b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // Tables for the plotter - initialized by calling bitmap_draw_init(); + bitmap_plot_xlo: .fill $100, 0 + bitmap_plot_xhi: .fill $100, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 // Table with addresses of the y-lines of the form. The first line contains the address of the form screen. form_line_lo: .fill $19, 0 form_line_hi: .fill $19, 0 diff --git a/src/test/ref/c64dtv-gfxexplorer.cfg b/src/test/ref/c64dtv-gfxexplorer.cfg index 996c09d52..adb8050c1 100644 --- a/src/test/ref/c64dtv-gfxexplorer.cfg +++ b/src/test/ref/c64dtv-gfxexplorer.cfg @@ -36,42 +36,42 @@ main::@4: scope:[main] from main::@2 (void()) gfx_mode() gfx_mode: scope:[gfx_mode] from main::@4 - [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 + [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 to:gfx_mode::@10 gfx_mode::@10: scope:[gfx_mode] from gfx_mode [17] phi() to:gfx_mode::@1 gfx_mode::@1: scope:[gfx_mode] from gfx_mode gfx_mode::@10 [18] (byte) gfx_mode::dtv_control#14 ← phi( gfx_mode/(byte) 0 gfx_mode::@10/(const byte) DTV_LINEAR ) - [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 + [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 to:gfx_mode::@11 gfx_mode::@11: scope:[gfx_mode] from gfx_mode::@1 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF to:gfx_mode::@2 gfx_mode::@2: scope:[gfx_mode] from gfx_mode::@1 gfx_mode::@11 [21] (byte) gfx_mode::dtv_control#15 ← phi( gfx_mode::@1/(byte) gfx_mode::dtv_control#14 gfx_mode::@11/(byte) gfx_mode::dtv_control#2 ) - [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 + [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 to:gfx_mode::@12 gfx_mode::@12: scope:[gfx_mode] from gfx_mode::@2 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR to:gfx_mode::@3 gfx_mode::@3: scope:[gfx_mode] from gfx_mode::@12 gfx_mode::@2 [24] (byte) gfx_mode::dtv_control#10 ← phi( gfx_mode::@12/(byte) gfx_mode::dtv_control#3 gfx_mode::@2/(byte) gfx_mode::dtv_control#15 ) - [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 + [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 to:gfx_mode::@13 gfx_mode::@13: scope:[gfx_mode] from gfx_mode::@3 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN to:gfx_mode::@4 gfx_mode::@4: scope:[gfx_mode] from gfx_mode::@13 gfx_mode::@3 [27] (byte) gfx_mode::dtv_control#11 ← phi( gfx_mode::@13/(byte) gfx_mode::dtv_control#4 gfx_mode::@3/(byte) gfx_mode::dtv_control#10 ) - [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 + [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 to:gfx_mode::@14 gfx_mode::@14: scope:[gfx_mode] from gfx_mode::@4 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF to:gfx_mode::@5 gfx_mode::@5: scope:[gfx_mode] from gfx_mode::@14 gfx_mode::@4 [30] (byte) gfx_mode::dtv_control#13 ← phi( gfx_mode::@14/(byte) gfx_mode::dtv_control#5 gfx_mode::@4/(byte) gfx_mode::dtv_control#11 ) - [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 + [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 to:gfx_mode::@15 gfx_mode::@15: scope:[gfx_mode] from gfx_mode::@5 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY @@ -79,14 +79,14 @@ gfx_mode::@15: scope:[gfx_mode] from gfx_mode::@5 gfx_mode::@6: scope:[gfx_mode] from gfx_mode::@15 gfx_mode::@5 [33] (byte) gfx_mode::dtv_control#12 ← phi( gfx_mode::@15/(byte) gfx_mode::dtv_control#6 gfx_mode::@5/(byte) gfx_mode::dtv_control#13 ) [34] *((const byte*) DTV_CONTROL) ← (byte) gfx_mode::dtv_control#12 - [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 + [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 to:gfx_mode::@16 gfx_mode::@16: scope:[gfx_mode] from gfx_mode::@6 [36] phi() to:gfx_mode::@7 gfx_mode::@7: scope:[gfx_mode] from gfx_mode::@16 gfx_mode::@6 [37] (byte) gfx_mode::vic_control#5 ← phi( gfx_mode::@16/(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3|(const byte) VIC_ECM gfx_mode::@6/(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 ) - [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 + [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 to:gfx_mode::@17 gfx_mode::@17: scope:[gfx_mode] from gfx_mode::@7 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM @@ -94,7 +94,7 @@ gfx_mode::@17: scope:[gfx_mode] from gfx_mode::@7 gfx_mode::@8: scope:[gfx_mode] from gfx_mode::@17 gfx_mode::@7 [40] (byte) gfx_mode::vic_control#4 ← phi( gfx_mode::@17/(byte) gfx_mode::vic_control#2 gfx_mode::@7/(byte) gfx_mode::vic_control#5 ) [41] *((const byte*) VIC_CONTROL) ← (byte) gfx_mode::vic_control#4 - [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 + [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 to:gfx_mode::@18 gfx_mode::@18: scope:[gfx_mode] from gfx_mode::@8 [43] phi() @@ -102,9 +102,9 @@ gfx_mode::@18: scope:[gfx_mode] from gfx_mode::@8 gfx_mode::@9: scope:[gfx_mode] from gfx_mode::@18 gfx_mode::@8 [44] (byte) gfx_mode::vic_control2#2 ← phi( gfx_mode::@18/(const byte) VIC_CSEL|(const byte) VIC_MCM gfx_mode::@8/(const byte) VIC_CSEL ) [45] *((const byte*) VIC_CONTROL2) ← (byte) gfx_mode::vic_control2#2 - [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 - [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) - [48] (byte) get_plane::idx#0 ← *((const byte[]) form_fields_val+(byte) $a) + [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 + [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) + [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern) [49] call get_plane [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 to:gfx_mode::@27 @@ -119,16 +119,16 @@ gfx_mode::@27: scope:[gfx_mode] from gfx_mode::@9 [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [60] *((const byte*) DTV_PLANEA_START_HI) ← (byte~) gfx_mode::$27 - [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 - [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) + [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 + [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [63] *((const byte*) DTV_PLANEA_STEP) ← (byte~) gfx_mode::$29 - [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 - [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) + [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 + [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [66] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte~) gfx_mode::$31 [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 - [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 - [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) - [70] (byte) get_plane::idx#1 ← *((const byte[]) form_fields_val+(byte) $11) + [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 + [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) + [70] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern) [71] call get_plane [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 to:gfx_mode::@28 @@ -143,16 +143,16 @@ gfx_mode::@28: scope:[gfx_mode] from gfx_mode::@27 [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [82] *((const byte*) DTV_PLANEB_START_HI) ← (byte~) gfx_mode::$41 - [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 - [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) + [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 + [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [85] *((const byte*) DTV_PLANEB_STEP) ← (byte~) gfx_mode::$43 - [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 - [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) + [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 + [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [88] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte~) gfx_mode::$45 [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 - [92] (byte) get_vic_screen::idx#0 ← *((const byte[]) form_fields_val+(byte) $18) + [92] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen) [93] call get_vic_screen [94] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 to:gfx_mode::@29 @@ -161,7 +161,7 @@ gfx_mode::@29: scope:[gfx_mode] from gfx_mode::@28 [96] (word~) gfx_mode::$52 ← (word)(byte*~) gfx_mode::$51 & (word) $3fff [97] (word~) gfx_mode::$53 ← (word~) gfx_mode::$52 >> (byte) 6 [98] (byte~) gfx_mode::$54 ← (byte)(word~) gfx_mode::$53 - [99] (byte) get_vic_charset::idx#0 ← *((const byte[]) form_fields_val+(byte) $19) + [99] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx) [100] call get_vic_charset [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 to:gfx_mode::@30 @@ -172,7 +172,7 @@ gfx_mode::@30: scope:[gfx_mode] from gfx_mode::@29 [105] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 >> (byte) 2 [106] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$54 | (byte~) gfx_mode::$59 [107] *((const byte*) VIC_MEMORY) ← (byte~) gfx_mode::$60 - [108] (byte) get_vic_screen::idx#1 ← *((const byte[]) form_fields_val+(byte) $1a) + [108] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols) [109] call get_vic_screen [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 to:gfx_mode::@31 @@ -200,19 +200,19 @@ gfx_mode::@21: scope:[gfx_mode] from gfx_mode::@20 to:gfx_mode::@22 gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 [121] *((const byte*) BORDERCOL) ← (byte) 0 - [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 - [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) + [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 + [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) [124] *((const byte*) BGCOL1) ← (byte~) gfx_mode::$63 - [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 - [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) + [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 + [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) [127] *((const byte*) BGCOL2) ← (byte~) gfx_mode::$65 - [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 - [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) + [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 + [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) [130] *((const byte*) BGCOL3) ← (byte~) gfx_mode::$67 - [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 - [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) + [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 + [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) [133] *((const byte*) BGCOL4) ← (byte~) gfx_mode::$69 - [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 + [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 to:gfx_mode::@23 gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 gfx_mode::@23 [135] (byte) gfx_mode::j#2 ← phi( gfx_mode::@22/(byte) 0 gfx_mode::@23/(byte) gfx_mode::j#1 ) @@ -262,10 +262,10 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (void()) keyboard_event_scan() keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3 gfx_mode::@26 - [157] (byte) keyboard_events_size#99 ← phi( form_control::@3/(byte) keyboard_events_size#47 gfx_mode::@26/(byte) keyboard_events_size#24 ) + [157] (byte) keyboard_events_size#98 ← phi( form_control::@3/(byte) keyboard_events_size#47 gfx_mode::@26/(byte) keyboard_events_size#24 ) to:keyboard_event_scan::@7 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8 - [158] (byte) keyboard_events_size#109 ← phi( keyboard_event_scan/(byte) keyboard_events_size#99 keyboard_event_scan::@8/(byte) keyboard_events_size#100 ) + [158] (byte) keyboard_events_size#107 ← phi( keyboard_event_scan/(byte) keyboard_events_size#98 keyboard_event_scan::@8/(byte) keyboard_events_size#100 ) [158] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 ) [158] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) [159] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 @@ -280,7 +280,7 @@ keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan: [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 to:keyboard_event_scan::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16 - [165] (byte) keyboard_events_size#100 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#108 keyboard_event_scan::@16/(byte) keyboard_events_size#109 ) + [165] (byte) keyboard_events_size#100 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#106 keyboard_event_scan::@16/(byte) keyboard_events_size#107 ) [165] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) [166] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [167] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 @@ -338,7 +338,7 @@ keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_s [193] return to:@return keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19 - [194] (byte) keyboard_events_size#18 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#108 keyboard_event_scan::@19/(byte) keyboard_events_size#109 ) + [194] (byte) keyboard_events_size#18 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#106 keyboard_event_scan::@19/(byte) keyboard_events_size#107 ) [194] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) [194] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 ) [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) @@ -357,7 +357,7 @@ keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan: [202] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 - [203] (byte) keyboard_events_size#108 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#18 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#18 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) + [203] (byte) keyboard_events_size#106 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#18 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#18 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) [204] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 [205] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [206] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 @@ -850,11 +850,11 @@ 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 [412] (byte*) print_str_lines::str#5 ← phi( form_mode::@9/(const byte[]) FORM_COLS form_mode::@12/(const byte[]) FORM_TEXT ) - [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 + [413] (byte*~) print_char_cursor#68 ← (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 [414] (byte*) print_line_cursor#2 ← phi( print_str_lines/(byte*) print_set_screen::screen#2 print_str_lines::@6/(byte*) print_line_cursor#22 ) - [414] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#71 print_str_lines::@6/(byte*~) print_char_cursor#72 ) + [414] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#68 print_str_lines::@6/(byte*~) print_char_cursor#69 ) [414] (byte*) print_str_lines::str#3 ← phi( print_str_lines/(byte*) print_str_lines::str#5 print_str_lines::@6/(byte*) print_str_lines::str#0 ) [415] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 to:print_str_lines::@return @@ -881,7 +881,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3 [426] call print_ln to:print_str_lines::@6 print_str_lines::@6: scope:[print_str_lines] from print_str_lines::@5 - [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 + [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 to:print_str_lines::@1 (void()) print_ln() diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index 311b087d1..82cf88ae7 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -18,6 +18,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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 @@ -67,6 +68,7 @@ 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) keyboard_matrix_read::@1 Culled Empty Block (label) @43 @@ -178,6 +180,7 @@ Culled Empty Block (label) get_vic_charset::@6 Culled Empty Block (label) get_vic_charset::@7 Culled Empty Block (label) get_vic_charset::@8 Culled Empty Block (label) get_vic_charset::@9 +Culled Empty Block (label) @60 Culled Empty Block (label) apply_preset::@12 Culled Empty Block (label) apply_preset::@34 Culled Empty Block (label) apply_preset::@13 @@ -225,6 +228,7 @@ Culled Empty Block (label) render_preset_name::@42 Culled Empty Block (label) render_preset_name::@21 Culled Empty Block (label) render_preset_name::@43 Culled Empty Block (label) render_preset_name::@44 +Culled Empty Block (label) @62 Culled Empty Block (label) gfx_mode::@27 Culled Empty Block (label) gfx_mode::@11 Culled Empty Block (label) gfx_mode::@28 @@ -305,9 +309,6 @@ Culled Empty Block (label) form_control::@18 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[$10]) DTV_PALETTE_DEFAULT ← { (number) 0, (number) $f, (number) $36, (number) $be, (number) $58, (number) $db, (number) $86, (number) $ff, (number) $29, (number) $26, (number) $3b, (number) 5, (number) 7, (number) $df, (number) $9a, (number) $a } to:@17 (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) @@ -363,11 +364,11 @@ memset::@return: scope:[memset] from memset::@1 (void*) memset::return#1 ← (void*) memset::return#3 return to:@return -@17: scope:[] from @4 +@17: 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:@41 + to:@45 (void()) print_str_lines((byte*) print_str_lines::str) print_str_lines: scope:[print_str_lines] from form_mode::@22 form_mode::@25 @@ -514,13 +515,6 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#26 return to:@return -@41: scope:[] from @17 - (byte*) print_char_cursor#70 ← phi( @17/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#70 ← phi( @17/(byte*) print_line_cursor#0 ) - (byte*) print_screen#47 ← phi( @17/(byte*) print_screen#0 ) - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } - to:@45 (void()) keyboard_init() keyboard_init: scope:[keyboard_init] from main @@ -534,7 +528,7 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@8 (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_event_scan::@8/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -544,10 +538,10 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3 return to:@return -@45: scope:[] from @41 - (byte*) print_char_cursor#68 ← phi( @41/(byte*) print_char_cursor#70 ) - (byte*) print_line_cursor#68 ← phi( @41/(byte*) print_line_cursor#70 ) - (byte*) print_screen#45 ← phi( @41/(byte*) print_screen#47 ) +@45: scope:[] from @17 + (byte*) print_char_cursor#61 ← phi( @17/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#61 ← phi( @17/(byte*) print_line_cursor#0 ) + (byte*) print_screen#38 ← phi( @17/(byte*) print_screen#0 ) (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (number) 0 (byte) keyboard_modifiers#0 ← (number) 0 @@ -556,12 +550,12 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (void()) keyboard_event_scan() keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3 gfx_mode::@36 - (byte) keyboard_events_size#99 ← phi( form_control::@3/(byte) keyboard_events_size#48 gfx_mode::@36/(byte) keyboard_events_size#44 ) + (byte) keyboard_events_size#98 ← phi( form_control::@3/(byte) keyboard_events_size#48 gfx_mode::@36/(byte) keyboard_events_size#44 ) (byte) keyboard_event_scan::keycode#0 ← (number) 0 (byte) keyboard_event_scan::row#0 ← (byte) 0 to:keyboard_event_scan::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@10 - (byte) keyboard_events_size#90 ← phi( keyboard_event_scan/(byte) keyboard_events_size#99 keyboard_event_scan::@10/(byte) keyboard_events_size#100 ) + (byte) keyboard_events_size#90 ← phi( keyboard_event_scan/(byte) keyboard_events_size#98 keyboard_event_scan::@10/(byte) keyboard_events_size#99 ) (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::keycode#0 keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#13 ) (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::row#0 keyboard_event_scan::@10/(byte) keyboard_event_scan::row#1 ) (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 @@ -586,14 +580,14 @@ keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan:: (byte) keyboard_event_scan::col#0 ← (byte) 0 to:keyboard_event_scan::@11 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#109 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#77 ) + (byte) keyboard_events_size#107 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#77 ) (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (number~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode#3 + (number) 8 (byte) keyboard_event_scan::keycode#1 ← (number~) keyboard_event_scan::$14 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21 - (byte) keyboard_events_size#100 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#108 keyboard_event_scan::@21/(byte) keyboard_events_size#109 ) + (byte) keyboard_events_size#99 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#106 keyboard_event_scan::@21/(byte) keyboard_events_size#107 ) (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@21/(byte) keyboard_event_scan::keycode#1 ) (byte) keyboard_event_scan::row#4 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_scan::row#6 keyboard_event_scan::@21/(byte) keyboard_event_scan::row#7 ) (byte) keyboard_event_scan::row#1 ← (byte) keyboard_event_scan::row#4 + rangenext(0,7) @@ -607,7 +601,7 @@ keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_event_scan::row#5 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::row#8 keyboard_event_scan::@9/(byte) keyboard_event_scan::row#9 ) (byte) keyboard_event_scan::row_scan#1 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::row_scan#4 keyboard_event_scan::@9/(byte) keyboard_event_scan::row_scan#5 ) (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#1 ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#5) - (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) + (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) (bool~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (number) 0 (bool~) keyboard_event_scan::$18 ← ! (bool~) keyboard_event_scan::$17 if((bool~) keyboard_event_scan::$18) goto keyboard_event_scan::@12 @@ -639,7 +633,7 @@ keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#9 ) (byte) keyboard_event_scan::col#4 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::col#6 ) (byte) keyboard_event_scan::row_scan#2 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::row_scan#6 ) - (byte~) keyboard_event_scan::$21 ← (byte) keyboard_event_scan::row_scan#2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#4) + (byte~) keyboard_event_scan::$21 ← (byte) keyboard_event_scan::row_scan#2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#4) (byte) keyboard_event_scan::event_type#0 ← (byte~) keyboard_event_scan::$21 (bool~) keyboard_event_scan::$22 ← (byte) keyboard_event_scan::event_type#0 == (number) 0 if((bool~) keyboard_event_scan::$22) goto keyboard_event_scan::@14 @@ -664,21 +658,21 @@ keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#20 to:keyboard_event_scan::@12 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@12 - (byte) keyboard_events_size#108 ← phi( keyboard_event_scan::@12/(byte) keyboard_events_size#54 ) + (byte) keyboard_events_size#106 ← phi( keyboard_event_scan::@12/(byte) keyboard_events_size#54 ) (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::keycode#2 ) (byte) keyboard_event_scan::row#6 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::row#8 ) (byte) keyboard_event_scan::row_scan#3 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::row_scan#4 ) *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#6) ← (byte) keyboard_event_scan::row_scan#3 to:keyboard_event_scan::@10 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - (byte) keyboard_events_size#117 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#100 ) + (byte) keyboard_events_size#115 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#99 ) (byte) keyboard_modifiers#1 ← (number) 0 (byte) keyboard_event_pressed::keycode#0 ← (const byte) KEY_LSHIFT call keyboard_event_pressed (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@23 - (byte) keyboard_events_size#114 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#117 ) + (byte) keyboard_events_size#112 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#115 ) (byte) keyboard_modifiers#34 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#1 ) (byte) keyboard_event_pressed::return#6 ← phi( keyboard_event_scan::@23/(byte) keyboard_event_pressed::return#0 ) (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#6 @@ -687,14 +681,14 @@ keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$2) goto keyboard_event_scan::@1 to:keyboard_event_scan::@24 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@26 - (byte) keyboard_events_size#110 ← phi( keyboard_event_scan::@24/(byte) keyboard_events_size#113 keyboard_event_scan::@26/(byte) keyboard_events_size#114 ) + (byte) keyboard_events_size#108 ← phi( keyboard_event_scan::@24/(byte) keyboard_events_size#111 keyboard_event_scan::@26/(byte) keyboard_events_size#112 ) (byte) keyboard_modifiers#53 ← phi( keyboard_event_scan::@24/(byte) keyboard_modifiers#2 keyboard_event_scan::@26/(byte) keyboard_modifiers#34 ) (byte) keyboard_event_pressed::keycode#1 ← (const byte) KEY_RSHIFT call keyboard_event_pressed (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - (byte) keyboard_events_size#101 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#110 ) + (byte) keyboard_events_size#100 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#108 ) (byte) keyboard_modifiers#35 ← phi( keyboard_event_scan::@1/(byte) keyboard_modifiers#53 ) (byte) keyboard_event_pressed::return#7 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_pressed::return#1 ) (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#7 @@ -703,13 +697,13 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$5) goto keyboard_event_scan::@2 to:keyboard_event_scan::@5 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - (byte) keyboard_events_size#113 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#114 ) + (byte) keyboard_events_size#111 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#112 ) (byte) keyboard_modifiers#17 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#34 ) (byte~) keyboard_event_scan::$26 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_LSHIFT (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$26 to:keyboard_event_scan::@1 keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@27 keyboard_event_scan::@5 - (byte) keyboard_events_size#91 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#101 keyboard_event_scan::@5/(byte) keyboard_events_size#102 ) + (byte) keyboard_events_size#91 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#100 keyboard_event_scan::@5/(byte) keyboard_events_size#101 ) (byte) keyboard_modifiers#54 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#35 keyboard_event_scan::@5/(byte) keyboard_modifiers#3 ) (byte) keyboard_event_pressed::keycode#2 ← (const byte) KEY_CTRL call keyboard_event_pressed @@ -725,7 +719,7 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$8) goto keyboard_event_scan::@3 to:keyboard_event_scan::@6 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - (byte) keyboard_events_size#102 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#101 ) + (byte) keyboard_events_size#101 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#100 ) (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#35 ) (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT (byte) keyboard_modifiers#3 ← (byte~) keyboard_event_scan::$27 @@ -772,7 +766,7 @@ keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (number) 3 (byte) keyboard_event_pressed::row_bits#0 ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) (number~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (number) 7 - (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits#0 & *((byte[8]) keyboard_matrix_col_bitmask + (number~) keyboard_event_pressed::$1) + (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (number~) keyboard_event_pressed::$1) (byte) keyboard_event_pressed::return#4 ← (byte~) keyboard_event_pressed::$2 to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed @@ -804,17 +798,17 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get return to:@return @48: scope:[] from @45 - (byte) keyboard_modifiers#90 ← phi( @45/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#103 ← phi( @45/(byte) keyboard_events_size#0 ) - (byte*) print_char_cursor#65 ← phi( @45/(byte*) print_char_cursor#68 ) - (byte*) print_line_cursor#65 ← phi( @45/(byte*) print_line_cursor#68 ) - (byte*) print_screen#42 ← phi( @45/(byte*) print_screen#45 ) + (byte) keyboard_modifiers#81 ← phi( @45/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#85 ← phi( @45/(byte) keyboard_events_size#0 ) + (byte*) print_char_cursor#60 ← phi( @45/(byte*) print_char_cursor#61 ) + (byte*) print_line_cursor#60 ← phi( @45/(byte*) print_line_cursor#61 ) + (byte*) print_screen#37 ← phi( @45/(byte*) print_screen#38 ) (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } - to:@60 + to:@81 (void()) bitmap_init((byte*) bitmap_init::bitmap) bitmap_init: scope:[bitmap_init] from gfx_init_vic_bitmap @@ -1382,9 +1376,9 @@ main: scope:[main] from @85 (byte) keyboard_modifiers#83 ← phi( @85/(byte) keyboard_modifiers#52 ) (byte) keyboard_events_size#92 ← phi( @85/(byte) keyboard_events_size#53 ) (signed byte) form_cursor_count#43 ← phi( @85/(signed byte) form_cursor_count#26 ) - (byte*) print_char_cursor#61 ← phi( @85/(byte*) print_char_cursor#46 ) - (byte*) print_line_cursor#61 ← phi( @85/(byte*) print_line_cursor#44 ) - (byte*) print_screen#38 ← phi( @85/(byte*) print_screen#24 ) + (byte*) print_char_cursor#62 ← phi( @85/(byte*) print_char_cursor#46 ) + (byte*) print_line_cursor#62 ← phi( @85/(byte*) print_line_cursor#44 ) + (byte*) print_screen#39 ← phi( @85/(byte*) print_screen#24 ) asm { sei } *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO @@ -1396,9 +1390,9 @@ main::@7: scope:[main] from main (byte) keyboard_modifiers#76 ← phi( main/(byte) keyboard_modifiers#83 ) (byte) keyboard_events_size#80 ← phi( main/(byte) keyboard_events_size#92 ) (signed byte) form_cursor_count#38 ← phi( main/(signed byte) form_cursor_count#43 ) - (byte*) print_char_cursor#56 ← phi( main/(byte*) print_char_cursor#61 ) - (byte*) print_line_cursor#56 ← phi( main/(byte*) print_line_cursor#61 ) - (byte*) print_screen#33 ← phi( main/(byte*) print_screen#38 ) + (byte*) print_char_cursor#56 ← phi( main/(byte*) print_char_cursor#62 ) + (byte*) print_line_cursor#56 ← phi( main/(byte*) print_line_cursor#62 ) + (byte*) print_screen#33 ← phi( main/(byte*) print_screen#39 ) call gfx_init to:main::@8 main::@8: scope:[main] from main::@7 @@ -1691,28 +1685,6 @@ get_vic_charset::@return: scope:[get_vic_charset] from get_vic_charset::@1 get_ get_vic_charset::@3: scope:[get_vic_charset] from get_vic_charset::@4 (byte*) get_vic_charset::return#3 ← (const byte*) VIC_CHARSET_ROM to:get_vic_charset::@return -@60: scope:[] from @48 - (byte) keyboard_modifiers#84 ← phi( @48/(byte) keyboard_modifiers#90 ) - (byte) keyboard_events_size#93 ← phi( @48/(byte) keyboard_events_size#103 ) - (byte*) print_char_cursor#62 ← phi( @48/(byte*) print_char_cursor#65 ) - (byte*) print_line_cursor#62 ← phi( @48/(byte*) print_line_cursor#65 ) - (byte*) print_screen#39 ← phi( @48/(byte*) print_screen#42 ) - (byte[]) form_fields_x ← { (number) 8, (number) $c, (number) $c, (number) $c, (number) $c, (number) $c, (number) $c, (number) $c, (number) $c, (number) $c, (number) $19, (number) $18, (number) $19, (number) $18, (number) $19, (number) $18, (number) $19, (number) $19, (number) $18, (number) $19, (number) $18, (number) $19, (number) $18, (number) $19, (number) $25, (number) $25, (number) $25, (number) $25, (number) $24, (number) $25, (number) $24, (number) $25, (number) $24, (number) $25, (number) $24, (number) $25 } - (byte[]) form_fields_y ← { (number) 2, (number) 5, (number) 6, (number) 7, (number) 8, (number) 9, (number) $a, (number) $b, (number) $c, (number) $d, (number) 5, (number) 6, (number) 6, (number) 7, (number) 7, (number) 8, (number) 8, (number) $b, (number) $c, (number) $c, (number) $d, (number) $d, (number) $e, (number) $e, (number) 5, (number) 6, (number) 7, (number) $a, (number) $b, (number) $b, (number) $c, (number) $c, (number) $d, (number) $d, (number) $e, (number) $e } - (byte[]) form_fields_max ← { (number) $a, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) $d, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) $d, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) 3, (number) 1, (number) 4, (number) 1, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f, (number) $f } - (byte[]) form_fields_val ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_stdchar ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_ecmchar ← { (number) 1, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 2, (number) 0, (number) 5, (number) 0, (number) 6 } - (byte[]) preset_stdbm ← { (number) 2, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 2, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_mcbm ← { (number) 3, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 2, (number) 1, (number) 0, (number) 0, (number) 0, (number) 9, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_hi_stdchar ← { (number) 4, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_hi_ecmchar ← { (number) 5, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 3, (number) 4, (number) 6, (number) 8, (number) 9, (number) $c, (number) $c } - (byte[]) preset_twoplane ← { (number) 6, (number) 1, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 7, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 8, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 7, (number) 0, (number) $d, (number) 4, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_chunky ← { (number) 7, (number) 0, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 6, (number) 0, (number) 0, (number) 0, (number) 8, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_sixsfred ← { (number) 8, (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 9, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) $a, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_sixsfred2 ← { (number) 9, (number) 1, (number) 1, (number) 1, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 9, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) $a, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) preset_8bpppixelcell ← { (number) $a, (number) 0, (number) 1, (number) 1, (number) 1, (number) 1, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) $b, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - to:@62 (void()) apply_preset((byte) apply_preset::idx) apply_preset: scope:[apply_preset] from form_mode::@18 @@ -1722,7 +1694,7 @@ apply_preset: scope:[apply_preset] from form_mode::@18 if((bool~) apply_preset::$0) goto apply_preset::@1 to:apply_preset::@23 apply_preset::@1: scope:[apply_preset] from apply_preset - (byte*) apply_preset::preset#1 ← (byte[]) preset_stdchar + (byte*) apply_preset::preset#1 ← (const byte[]) preset_stdchar to:apply_preset::@22 apply_preset::@23: scope:[apply_preset] from apply_preset (byte) apply_preset::idx#2 ← phi( apply_preset/(byte) apply_preset::idx#1 ) @@ -1730,7 +1702,7 @@ apply_preset::@23: scope:[apply_preset] from apply_preset if((bool~) apply_preset::$1) goto apply_preset::@2 to:apply_preset::@24 apply_preset::@2: scope:[apply_preset] from apply_preset::@23 - (byte*) apply_preset::preset#2 ← (byte[]) preset_ecmchar + (byte*) apply_preset::preset#2 ← (const byte[]) preset_ecmchar to:apply_preset::@22 apply_preset::@24: scope:[apply_preset] from apply_preset::@23 (byte) apply_preset::idx#3 ← phi( apply_preset::@23/(byte) apply_preset::idx#2 ) @@ -1738,7 +1710,7 @@ apply_preset::@24: scope:[apply_preset] from apply_preset::@23 if((bool~) apply_preset::$2) goto apply_preset::@3 to:apply_preset::@25 apply_preset::@3: scope:[apply_preset] from apply_preset::@24 - (byte*) apply_preset::preset#3 ← (byte[]) preset_stdbm + (byte*) apply_preset::preset#3 ← (const byte[]) preset_stdbm to:apply_preset::@22 apply_preset::@25: scope:[apply_preset] from apply_preset::@24 (byte) apply_preset::idx#4 ← phi( apply_preset::@24/(byte) apply_preset::idx#3 ) @@ -1746,7 +1718,7 @@ apply_preset::@25: scope:[apply_preset] from apply_preset::@24 if((bool~) apply_preset::$3) goto apply_preset::@4 to:apply_preset::@26 apply_preset::@4: scope:[apply_preset] from apply_preset::@25 - (byte*) apply_preset::preset#4 ← (byte[]) preset_mcbm + (byte*) apply_preset::preset#4 ← (const byte[]) preset_mcbm to:apply_preset::@22 apply_preset::@26: scope:[apply_preset] from apply_preset::@25 (byte) apply_preset::idx#5 ← phi( apply_preset::@25/(byte) apply_preset::idx#4 ) @@ -1754,7 +1726,7 @@ apply_preset::@26: scope:[apply_preset] from apply_preset::@25 if((bool~) apply_preset::$4) goto apply_preset::@5 to:apply_preset::@27 apply_preset::@5: scope:[apply_preset] from apply_preset::@26 - (byte*) apply_preset::preset#5 ← (byte[]) preset_hi_stdchar + (byte*) apply_preset::preset#5 ← (const byte[]) preset_hi_stdchar to:apply_preset::@22 apply_preset::@27: scope:[apply_preset] from apply_preset::@26 (byte) apply_preset::idx#6 ← phi( apply_preset::@26/(byte) apply_preset::idx#5 ) @@ -1762,7 +1734,7 @@ apply_preset::@27: scope:[apply_preset] from apply_preset::@26 if((bool~) apply_preset::$5) goto apply_preset::@6 to:apply_preset::@28 apply_preset::@6: scope:[apply_preset] from apply_preset::@27 - (byte*) apply_preset::preset#6 ← (byte[]) preset_hi_ecmchar + (byte*) apply_preset::preset#6 ← (const byte[]) preset_hi_ecmchar to:apply_preset::@22 apply_preset::@28: scope:[apply_preset] from apply_preset::@27 (byte) apply_preset::idx#7 ← phi( apply_preset::@27/(byte) apply_preset::idx#6 ) @@ -1770,7 +1742,7 @@ apply_preset::@28: scope:[apply_preset] from apply_preset::@27 if((bool~) apply_preset::$6) goto apply_preset::@7 to:apply_preset::@29 apply_preset::@7: scope:[apply_preset] from apply_preset::@28 - (byte*) apply_preset::preset#7 ← (byte[]) preset_twoplane + (byte*) apply_preset::preset#7 ← (const byte[]) preset_twoplane to:apply_preset::@22 apply_preset::@29: scope:[apply_preset] from apply_preset::@28 (byte) apply_preset::idx#8 ← phi( apply_preset::@28/(byte) apply_preset::idx#7 ) @@ -1778,7 +1750,7 @@ apply_preset::@29: scope:[apply_preset] from apply_preset::@28 if((bool~) apply_preset::$7) goto apply_preset::@8 to:apply_preset::@30 apply_preset::@8: scope:[apply_preset] from apply_preset::@29 - (byte*) apply_preset::preset#8 ← (byte[]) preset_chunky + (byte*) apply_preset::preset#8 ← (const byte[]) preset_chunky to:apply_preset::@22 apply_preset::@30: scope:[apply_preset] from apply_preset::@29 (byte) apply_preset::idx#9 ← phi( apply_preset::@29/(byte) apply_preset::idx#8 ) @@ -1786,7 +1758,7 @@ apply_preset::@30: scope:[apply_preset] from apply_preset::@29 if((bool~) apply_preset::$8) goto apply_preset::@9 to:apply_preset::@31 apply_preset::@9: scope:[apply_preset] from apply_preset::@30 - (byte*) apply_preset::preset#9 ← (byte[]) preset_sixsfred + (byte*) apply_preset::preset#9 ← (const byte[]) preset_sixsfred to:apply_preset::@22 apply_preset::@31: scope:[apply_preset] from apply_preset::@30 (byte) apply_preset::idx#10 ← phi( apply_preset::@30/(byte) apply_preset::idx#9 ) @@ -1794,7 +1766,7 @@ apply_preset::@31: scope:[apply_preset] from apply_preset::@30 if((bool~) apply_preset::$9) goto apply_preset::@10 to:apply_preset::@32 apply_preset::@10: scope:[apply_preset] from apply_preset::@31 - (byte*) apply_preset::preset#10 ← (byte[]) preset_sixsfred2 + (byte*) apply_preset::preset#10 ← (const byte[]) preset_sixsfred2 to:apply_preset::@22 apply_preset::@32: scope:[apply_preset] from apply_preset::@31 (byte) apply_preset::idx#11 ← phi( apply_preset::@31/(byte) apply_preset::idx#10 ) @@ -1802,10 +1774,10 @@ apply_preset::@32: scope:[apply_preset] from apply_preset::@31 if((bool~) apply_preset::$10) goto apply_preset::@11 to:apply_preset::@33 apply_preset::@11: scope:[apply_preset] from apply_preset::@32 - (byte*) apply_preset::preset#11 ← (byte[]) preset_8bpppixelcell + (byte*) apply_preset::preset#11 ← (const byte[]) preset_8bpppixelcell to:apply_preset::@22 apply_preset::@33: scope:[apply_preset] from apply_preset::@32 - (byte*) apply_preset::preset#12 ← (byte[]) preset_stdchar + (byte*) apply_preset::preset#12 ← (const byte[]) preset_stdchar to:apply_preset::@22 apply_preset::@22: scope:[apply_preset] from apply_preset::@1 apply_preset::@10 apply_preset::@11 apply_preset::@2 apply_preset::@3 apply_preset::@33 apply_preset::@4 apply_preset::@5 apply_preset::@6 apply_preset::@7 apply_preset::@8 apply_preset::@9 (byte*) apply_preset::preset#15 ← phi( apply_preset::@1/(byte*) apply_preset::preset#1 apply_preset::@10/(byte*) apply_preset::preset#10 apply_preset::@11/(byte*) apply_preset::preset#11 apply_preset::@2/(byte*) apply_preset::preset#2 apply_preset::@3/(byte*) apply_preset::preset#3 apply_preset::@33/(byte*) apply_preset::preset#12 apply_preset::@4/(byte*) apply_preset::preset#4 apply_preset::@5/(byte*) apply_preset::preset#5 apply_preset::@6/(byte*) apply_preset::preset#6 apply_preset::@7/(byte*) apply_preset::preset#7 apply_preset::@8/(byte*) apply_preset::preset#8 apply_preset::@9/(byte*) apply_preset::preset#9 ) @@ -1820,7 +1792,7 @@ apply_preset::@45: scope:[apply_preset] from apply_preset::@22 apply_preset::@4 apply_preset::@46: scope:[apply_preset] from apply_preset::@45 (byte) apply_preset::i#3 ← phi( apply_preset::@45/(byte) apply_preset::i#2 ) (byte*) apply_preset::preset#13 ← phi( apply_preset::@45/(byte*) apply_preset::preset#14 ) - *((byte[]) form_fields_val + (byte) apply_preset::i#3) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#3) + *((const byte[]) form_fields_val + (byte) apply_preset::i#3) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#3) (byte) apply_preset::i#1 ← ++ (byte) apply_preset::i#3 to:apply_preset::@45 apply_preset::@return: scope:[apply_preset] from apply_preset::@45 @@ -1931,234 +1903,155 @@ render_preset_name::@45: scope:[render_preset_name] from render_preset_name::@2 render_preset_name::@return: scope:[render_preset_name] from render_preset_name::@45 return to:@return -@62: scope:[] from @60 - (byte) keyboard_modifiers#81 ← phi( @60/(byte) keyboard_modifiers#84 ) - (byte) keyboard_events_size#85 ← phi( @60/(byte) keyboard_events_size#93 ) - (byte*) print_char_cursor#60 ← phi( @60/(byte*) print_char_cursor#62 ) - (byte*) print_line_cursor#60 ← phi( @60/(byte*) print_line_cursor#62 ) - (byte*) print_screen#37 ← phi( @60/(byte*) print_screen#39 ) - (byte*~) $0 ← (byte[]) form_fields_val + (number) 0 - (byte*) form_preset ← (byte*~) $0 - (byte*~) $1 ← (byte[]) form_fields_val + (number) 1 - (byte*) form_ctrl_bmm ← (byte*~) $1 - (byte*~) $2 ← (byte[]) form_fields_val + (number) 2 - (byte*) form_ctrl_mcm ← (byte*~) $2 - (byte*~) $3 ← (byte[]) form_fields_val + (number) 3 - (byte*) form_ctrl_ecm ← (byte*~) $3 - (byte*~) $4 ← (byte[]) form_fields_val + (number) 4 - (byte*) form_ctrl_hicol ← (byte*~) $4 - (byte*~) $5 ← (byte[]) form_fields_val + (number) 5 - (byte*) form_ctrl_line ← (byte*~) $5 - (byte*~) $6 ← (byte[]) form_fields_val + (number) 6 - (byte*) form_ctrl_colof ← (byte*~) $6 - (byte*~) $7 ← (byte[]) form_fields_val + (number) 7 - (byte*) form_ctrl_chunk ← (byte*~) $7 - (byte*~) $8 ← (byte[]) form_fields_val + (number) 8 - (byte*) form_ctrl_borof ← (byte*~) $8 - (byte*~) $9 ← (byte[]) form_fields_val + (number) 9 - (byte*) form_ctrl_overs ← (byte*~) $9 - (byte*~) $10 ← (byte[]) form_fields_val + (number) $a - (byte*) form_a_pattern ← (byte*~) $10 - (byte*~) $11 ← (byte[]) form_fields_val + (number) $b - (byte*) form_a_start_hi ← (byte*~) $11 - (byte*~) $12 ← (byte[]) form_fields_val + (number) $c - (byte*) form_a_start_lo ← (byte*~) $12 - (byte*~) $13 ← (byte[]) form_fields_val + (number) $d - (byte*) form_a_step_hi ← (byte*~) $13 - (byte*~) $14 ← (byte[]) form_fields_val + (number) $e - (byte*) form_a_step_lo ← (byte*~) $14 - (byte*~) $15 ← (byte[]) form_fields_val + (number) $f - (byte*) form_a_mod_hi ← (byte*~) $15 - (byte*~) $16 ← (byte[]) form_fields_val + (number) $10 - (byte*) form_a_mod_lo ← (byte*~) $16 - (byte*~) $17 ← (byte[]) form_fields_val + (number) $11 - (byte*) form_b_pattern ← (byte*~) $17 - (byte*~) $18 ← (byte[]) form_fields_val + (number) $12 - (byte*) form_b_start_hi ← (byte*~) $18 - (byte*~) $19 ← (byte[]) form_fields_val + (number) $13 - (byte*) form_b_start_lo ← (byte*~) $19 - (byte*~) $20 ← (byte[]) form_fields_val + (number) $14 - (byte*) form_b_step_hi ← (byte*~) $20 - (byte*~) $21 ← (byte[]) form_fields_val + (number) $15 - (byte*) form_b_step_lo ← (byte*~) $21 - (byte*~) $22 ← (byte[]) form_fields_val + (number) $16 - (byte*) form_b_mod_hi ← (byte*~) $22 - (byte*~) $23 ← (byte[]) form_fields_val + (number) $17 - (byte*) form_b_mod_lo ← (byte*~) $23 - (byte*~) $24 ← (byte[]) form_fields_val + (number) $18 - (byte*) form_vic_screen ← (byte*~) $24 - (byte*~) $25 ← (byte[]) form_fields_val + (number) $19 - (byte*) form_vic_gfx ← (byte*~) $25 - (byte*~) $26 ← (byte[]) form_fields_val + (number) $1a - (byte*) form_vic_cols ← (byte*~) $26 - (byte*~) $27 ← (byte[]) form_fields_val + (number) $1b - (byte*) form_dtv_palet ← (byte*~) $27 - (byte*~) $28 ← (byte[]) form_fields_val + (number) $1c - (byte*) form_vic_bg0_hi ← (byte*~) $28 - (byte*~) $29 ← (byte[]) form_fields_val + (number) $1d - (byte*) form_vic_bg0_lo ← (byte*~) $29 - (byte*~) $30 ← (byte[]) form_fields_val + (number) $1e - (byte*) form_vic_bg1_hi ← (byte*~) $30 - (byte*~) $31 ← (byte[]) form_fields_val + (number) $1f - (byte*) form_vic_bg1_lo ← (byte*~) $31 - (byte*~) $32 ← (byte[]) form_fields_val + (number) $20 - (byte*) form_vic_bg2_hi ← (byte*~) $32 - (byte*~) $33 ← (byte[]) form_fields_val + (number) $21 - (byte*) form_vic_bg2_lo ← (byte*~) $33 - (byte*~) $34 ← (byte[]) form_fields_val + (number) $22 - (byte*) form_vic_bg3_hi ← (byte*~) $34 - (byte*~) $35 ← (byte[]) form_fields_val + (number) $23 - (byte*) form_vic_bg3_lo ← (byte*~) $35 - to:@81 (void()) gfx_mode() gfx_mode: scope:[gfx_mode] from main::@9 - (byte) keyboard_modifiers#127 ← phi( main::@9/(byte) keyboard_modifiers#7 ) - (byte) keyboard_events_size#146 ← phi( main::@9/(byte) keyboard_events_size#6 ) + (byte) keyboard_modifiers#125 ← phi( main::@9/(byte) keyboard_modifiers#7 ) + (byte) keyboard_events_size#144 ← phi( main::@9/(byte) keyboard_events_size#6 ) (byte) gfx_mode::dtv_control#0 ← (number) 0 - (bool~) gfx_mode::$0 ← *((byte*) form_ctrl_line) != (number) 0 + (bool~) gfx_mode::$0 ← *((const byte*) form_ctrl_line) != (number) 0 (bool~) gfx_mode::$1 ← ! (bool~) gfx_mode::$0 if((bool~) gfx_mode::$1) goto gfx_mode::@1 to:gfx_mode::@12 gfx_mode::@1: scope:[gfx_mode] from gfx_mode gfx_mode::@12 - (byte) keyboard_modifiers#125 ← phi( gfx_mode/(byte) keyboard_modifiers#127 gfx_mode::@12/(byte) keyboard_modifiers#128 ) - (byte) keyboard_events_size#144 ← phi( gfx_mode/(byte) keyboard_events_size#146 gfx_mode::@12/(byte) keyboard_events_size#147 ) + (byte) keyboard_modifiers#123 ← phi( gfx_mode/(byte) keyboard_modifiers#125 gfx_mode::@12/(byte) keyboard_modifiers#126 ) + (byte) keyboard_events_size#142 ← phi( gfx_mode/(byte) keyboard_events_size#144 gfx_mode::@12/(byte) keyboard_events_size#145 ) (byte) gfx_mode::dtv_control#14 ← phi( gfx_mode/(byte) gfx_mode::dtv_control#0 gfx_mode::@12/(byte) gfx_mode::dtv_control#1 ) - (bool~) gfx_mode::$2 ← *((byte*) form_ctrl_borof) != (number) 0 + (bool~) gfx_mode::$2 ← *((const byte*) form_ctrl_borof) != (number) 0 (bool~) gfx_mode::$3 ← ! (bool~) gfx_mode::$2 if((bool~) gfx_mode::$3) goto gfx_mode::@2 to:gfx_mode::@13 gfx_mode::@12: scope:[gfx_mode] from gfx_mode - (byte) keyboard_modifiers#128 ← phi( gfx_mode/(byte) keyboard_modifiers#127 ) - (byte) keyboard_events_size#147 ← phi( gfx_mode/(byte) keyboard_events_size#146 ) + (byte) keyboard_modifiers#126 ← phi( gfx_mode/(byte) keyboard_modifiers#125 ) + (byte) keyboard_events_size#145 ← phi( gfx_mode/(byte) keyboard_events_size#144 ) (byte) gfx_mode::dtv_control#7 ← phi( gfx_mode/(byte) gfx_mode::dtv_control#0 ) (byte~) gfx_mode::$71 ← (byte) gfx_mode::dtv_control#7 | (const byte) DTV_LINEAR (byte) gfx_mode::dtv_control#1 ← (byte~) gfx_mode::$71 to:gfx_mode::@1 gfx_mode::@2: scope:[gfx_mode] from gfx_mode::@1 gfx_mode::@13 - (byte) keyboard_modifiers#124 ← phi( gfx_mode::@1/(byte) keyboard_modifiers#125 gfx_mode::@13/(byte) keyboard_modifiers#126 ) - (byte) keyboard_events_size#143 ← phi( gfx_mode::@1/(byte) keyboard_events_size#144 gfx_mode::@13/(byte) keyboard_events_size#145 ) + (byte) keyboard_modifiers#122 ← phi( gfx_mode::@1/(byte) keyboard_modifiers#123 gfx_mode::@13/(byte) keyboard_modifiers#124 ) + (byte) keyboard_events_size#141 ← phi( gfx_mode::@1/(byte) keyboard_events_size#142 gfx_mode::@13/(byte) keyboard_events_size#143 ) (byte) gfx_mode::dtv_control#15 ← phi( gfx_mode::@1/(byte) gfx_mode::dtv_control#14 gfx_mode::@13/(byte) gfx_mode::dtv_control#2 ) - (bool~) gfx_mode::$4 ← *((byte*) form_ctrl_hicol) != (number) 0 + (bool~) gfx_mode::$4 ← *((const byte*) form_ctrl_hicol) != (number) 0 (bool~) gfx_mode::$5 ← ! (bool~) gfx_mode::$4 if((bool~) gfx_mode::$5) goto gfx_mode::@3 to:gfx_mode::@14 gfx_mode::@13: scope:[gfx_mode] from gfx_mode::@1 - (byte) keyboard_modifiers#126 ← phi( gfx_mode::@1/(byte) keyboard_modifiers#125 ) - (byte) keyboard_events_size#145 ← phi( gfx_mode::@1/(byte) keyboard_events_size#144 ) + (byte) keyboard_modifiers#124 ← phi( gfx_mode::@1/(byte) keyboard_modifiers#123 ) + (byte) keyboard_events_size#143 ← phi( gfx_mode::@1/(byte) keyboard_events_size#142 ) (byte) gfx_mode::dtv_control#8 ← phi( gfx_mode::@1/(byte) gfx_mode::dtv_control#14 ) (byte~) gfx_mode::$72 ← (byte) gfx_mode::dtv_control#8 | (const byte) DTV_BORDER_OFF (byte) gfx_mode::dtv_control#2 ← (byte~) gfx_mode::$72 to:gfx_mode::@2 gfx_mode::@3: scope:[gfx_mode] from gfx_mode::@14 gfx_mode::@2 - (byte) keyboard_modifiers#122 ← phi( gfx_mode::@14/(byte) keyboard_modifiers#123 gfx_mode::@2/(byte) keyboard_modifiers#124 ) - (byte) keyboard_events_size#141 ← phi( gfx_mode::@14/(byte) keyboard_events_size#142 gfx_mode::@2/(byte) keyboard_events_size#143 ) + (byte) keyboard_modifiers#120 ← phi( gfx_mode::@14/(byte) keyboard_modifiers#121 gfx_mode::@2/(byte) keyboard_modifiers#122 ) + (byte) keyboard_events_size#139 ← phi( gfx_mode::@14/(byte) keyboard_events_size#140 gfx_mode::@2/(byte) keyboard_events_size#141 ) (byte) gfx_mode::dtv_control#16 ← phi( gfx_mode::@14/(byte) gfx_mode::dtv_control#3 gfx_mode::@2/(byte) gfx_mode::dtv_control#15 ) - (bool~) gfx_mode::$6 ← *((byte*) form_ctrl_overs) != (number) 0 + (bool~) gfx_mode::$6 ← *((const byte*) form_ctrl_overs) != (number) 0 (bool~) gfx_mode::$7 ← ! (bool~) gfx_mode::$6 if((bool~) gfx_mode::$7) goto gfx_mode::@4 to:gfx_mode::@15 gfx_mode::@14: scope:[gfx_mode] from gfx_mode::@2 - (byte) keyboard_modifiers#123 ← phi( gfx_mode::@2/(byte) keyboard_modifiers#124 ) - (byte) keyboard_events_size#142 ← phi( gfx_mode::@2/(byte) keyboard_events_size#143 ) + (byte) keyboard_modifiers#121 ← phi( gfx_mode::@2/(byte) keyboard_modifiers#122 ) + (byte) keyboard_events_size#140 ← phi( gfx_mode::@2/(byte) keyboard_events_size#141 ) (byte) gfx_mode::dtv_control#9 ← phi( gfx_mode::@2/(byte) gfx_mode::dtv_control#15 ) (byte~) gfx_mode::$73 ← (byte) gfx_mode::dtv_control#9 | (const byte) DTV_HIGHCOLOR (byte) gfx_mode::dtv_control#3 ← (byte~) gfx_mode::$73 to:gfx_mode::@3 gfx_mode::@4: scope:[gfx_mode] from gfx_mode::@15 gfx_mode::@3 - (byte) keyboard_modifiers#120 ← phi( gfx_mode::@15/(byte) keyboard_modifiers#121 gfx_mode::@3/(byte) keyboard_modifiers#122 ) - (byte) keyboard_events_size#139 ← phi( gfx_mode::@15/(byte) keyboard_events_size#140 gfx_mode::@3/(byte) keyboard_events_size#141 ) + (byte) keyboard_modifiers#118 ← phi( gfx_mode::@15/(byte) keyboard_modifiers#119 gfx_mode::@3/(byte) keyboard_modifiers#120 ) + (byte) keyboard_events_size#137 ← phi( gfx_mode::@15/(byte) keyboard_events_size#138 gfx_mode::@3/(byte) keyboard_events_size#139 ) (byte) gfx_mode::dtv_control#17 ← phi( gfx_mode::@15/(byte) gfx_mode::dtv_control#4 gfx_mode::@3/(byte) gfx_mode::dtv_control#16 ) - (bool~) gfx_mode::$8 ← *((byte*) form_ctrl_colof) != (number) 0 + (bool~) gfx_mode::$8 ← *((const byte*) form_ctrl_colof) != (number) 0 (bool~) gfx_mode::$9 ← ! (bool~) gfx_mode::$8 if((bool~) gfx_mode::$9) goto gfx_mode::@5 to:gfx_mode::@16 gfx_mode::@15: scope:[gfx_mode] from gfx_mode::@3 - (byte) keyboard_modifiers#121 ← phi( gfx_mode::@3/(byte) keyboard_modifiers#122 ) - (byte) keyboard_events_size#140 ← phi( gfx_mode::@3/(byte) keyboard_events_size#141 ) + (byte) keyboard_modifiers#119 ← phi( gfx_mode::@3/(byte) keyboard_modifiers#120 ) + (byte) keyboard_events_size#138 ← phi( gfx_mode::@3/(byte) keyboard_events_size#139 ) (byte) gfx_mode::dtv_control#10 ← phi( gfx_mode::@3/(byte) gfx_mode::dtv_control#16 ) (byte~) gfx_mode::$74 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN (byte) gfx_mode::dtv_control#4 ← (byte~) gfx_mode::$74 to:gfx_mode::@4 gfx_mode::@5: scope:[gfx_mode] from gfx_mode::@16 gfx_mode::@4 - (byte) keyboard_modifiers#118 ← phi( gfx_mode::@16/(byte) keyboard_modifiers#119 gfx_mode::@4/(byte) keyboard_modifiers#120 ) - (byte) keyboard_events_size#137 ← phi( gfx_mode::@16/(byte) keyboard_events_size#138 gfx_mode::@4/(byte) keyboard_events_size#139 ) + (byte) keyboard_modifiers#116 ← phi( gfx_mode::@16/(byte) keyboard_modifiers#117 gfx_mode::@4/(byte) keyboard_modifiers#118 ) + (byte) keyboard_events_size#135 ← phi( gfx_mode::@16/(byte) keyboard_events_size#136 gfx_mode::@4/(byte) keyboard_events_size#137 ) (byte) gfx_mode::dtv_control#18 ← phi( gfx_mode::@16/(byte) gfx_mode::dtv_control#5 gfx_mode::@4/(byte) gfx_mode::dtv_control#17 ) - (bool~) gfx_mode::$10 ← *((byte*) form_ctrl_chunk) != (number) 0 + (bool~) gfx_mode::$10 ← *((const byte*) form_ctrl_chunk) != (number) 0 (bool~) gfx_mode::$11 ← ! (bool~) gfx_mode::$10 if((bool~) gfx_mode::$11) goto gfx_mode::@6 to:gfx_mode::@17 gfx_mode::@16: scope:[gfx_mode] from gfx_mode::@4 - (byte) keyboard_modifiers#119 ← phi( gfx_mode::@4/(byte) keyboard_modifiers#120 ) - (byte) keyboard_events_size#138 ← phi( gfx_mode::@4/(byte) keyboard_events_size#139 ) + (byte) keyboard_modifiers#117 ← phi( gfx_mode::@4/(byte) keyboard_modifiers#118 ) + (byte) keyboard_events_size#136 ← phi( gfx_mode::@4/(byte) keyboard_events_size#137 ) (byte) gfx_mode::dtv_control#11 ← phi( gfx_mode::@4/(byte) gfx_mode::dtv_control#17 ) (byte~) gfx_mode::$75 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF (byte) gfx_mode::dtv_control#5 ← (byte~) gfx_mode::$75 to:gfx_mode::@5 gfx_mode::@6: scope:[gfx_mode] from gfx_mode::@17 gfx_mode::@5 - (byte) keyboard_modifiers#116 ← phi( gfx_mode::@17/(byte) keyboard_modifiers#117 gfx_mode::@5/(byte) keyboard_modifiers#118 ) - (byte) keyboard_events_size#135 ← phi( gfx_mode::@17/(byte) keyboard_events_size#136 gfx_mode::@5/(byte) keyboard_events_size#137 ) + (byte) keyboard_modifiers#114 ← phi( gfx_mode::@17/(byte) keyboard_modifiers#115 gfx_mode::@5/(byte) keyboard_modifiers#116 ) + (byte) keyboard_events_size#133 ← phi( gfx_mode::@17/(byte) keyboard_events_size#134 gfx_mode::@5/(byte) keyboard_events_size#135 ) (byte) gfx_mode::dtv_control#12 ← phi( gfx_mode::@17/(byte) gfx_mode::dtv_control#6 gfx_mode::@5/(byte) gfx_mode::dtv_control#18 ) *((const byte*) DTV_CONTROL) ← (byte) gfx_mode::dtv_control#12 (byte) gfx_mode::vic_control#0 ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3 - (bool~) gfx_mode::$12 ← *((byte*) form_ctrl_ecm) != (number) 0 + (bool~) gfx_mode::$12 ← *((const byte*) form_ctrl_ecm) != (number) 0 (bool~) gfx_mode::$13 ← ! (bool~) gfx_mode::$12 if((bool~) gfx_mode::$13) goto gfx_mode::@7 to:gfx_mode::@18 gfx_mode::@17: scope:[gfx_mode] from gfx_mode::@5 - (byte) keyboard_modifiers#117 ← phi( gfx_mode::@5/(byte) keyboard_modifiers#118 ) - (byte) keyboard_events_size#136 ← phi( gfx_mode::@5/(byte) keyboard_events_size#137 ) + (byte) keyboard_modifiers#115 ← phi( gfx_mode::@5/(byte) keyboard_modifiers#116 ) + (byte) keyboard_events_size#134 ← phi( gfx_mode::@5/(byte) keyboard_events_size#135 ) (byte) gfx_mode::dtv_control#13 ← phi( gfx_mode::@5/(byte) gfx_mode::dtv_control#18 ) (byte~) gfx_mode::$76 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY (byte) gfx_mode::dtv_control#6 ← (byte~) gfx_mode::$76 to:gfx_mode::@6 gfx_mode::@7: scope:[gfx_mode] from gfx_mode::@18 gfx_mode::@6 - (byte) keyboard_modifiers#114 ← phi( gfx_mode::@18/(byte) keyboard_modifiers#115 gfx_mode::@6/(byte) keyboard_modifiers#116 ) - (byte) keyboard_events_size#133 ← phi( gfx_mode::@18/(byte) keyboard_events_size#134 gfx_mode::@6/(byte) keyboard_events_size#135 ) + (byte) keyboard_modifiers#112 ← phi( gfx_mode::@18/(byte) keyboard_modifiers#113 gfx_mode::@6/(byte) keyboard_modifiers#114 ) + (byte) keyboard_events_size#131 ← phi( gfx_mode::@18/(byte) keyboard_events_size#132 gfx_mode::@6/(byte) keyboard_events_size#133 ) (byte) gfx_mode::vic_control#6 ← phi( gfx_mode::@18/(byte) gfx_mode::vic_control#1 gfx_mode::@6/(byte) gfx_mode::vic_control#0 ) - (bool~) gfx_mode::$14 ← *((byte*) form_ctrl_bmm) != (number) 0 + (bool~) gfx_mode::$14 ← *((const byte*) form_ctrl_bmm) != (number) 0 (bool~) gfx_mode::$15 ← ! (bool~) gfx_mode::$14 if((bool~) gfx_mode::$15) goto gfx_mode::@8 to:gfx_mode::@19 gfx_mode::@18: scope:[gfx_mode] from gfx_mode::@6 - (byte) keyboard_modifiers#115 ← phi( gfx_mode::@6/(byte) keyboard_modifiers#116 ) - (byte) keyboard_events_size#134 ← phi( gfx_mode::@6/(byte) keyboard_events_size#135 ) + (byte) keyboard_modifiers#113 ← phi( gfx_mode::@6/(byte) keyboard_modifiers#114 ) + (byte) keyboard_events_size#132 ← phi( gfx_mode::@6/(byte) keyboard_events_size#133 ) (byte) gfx_mode::vic_control#3 ← phi( gfx_mode::@6/(byte) gfx_mode::vic_control#0 ) (byte~) gfx_mode::$77 ← (byte) gfx_mode::vic_control#3 | (const byte) VIC_ECM (byte) gfx_mode::vic_control#1 ← (byte~) gfx_mode::$77 to:gfx_mode::@7 gfx_mode::@8: scope:[gfx_mode] from gfx_mode::@19 gfx_mode::@7 - (byte) keyboard_modifiers#112 ← phi( gfx_mode::@19/(byte) keyboard_modifiers#113 gfx_mode::@7/(byte) keyboard_modifiers#114 ) - (byte) keyboard_events_size#131 ← phi( gfx_mode::@19/(byte) keyboard_events_size#132 gfx_mode::@7/(byte) keyboard_events_size#133 ) + (byte) keyboard_modifiers#110 ← phi( gfx_mode::@19/(byte) keyboard_modifiers#111 gfx_mode::@7/(byte) keyboard_modifiers#112 ) + (byte) keyboard_events_size#129 ← phi( gfx_mode::@19/(byte) keyboard_events_size#130 gfx_mode::@7/(byte) keyboard_events_size#131 ) (byte) gfx_mode::vic_control#4 ← phi( gfx_mode::@19/(byte) gfx_mode::vic_control#2 gfx_mode::@7/(byte) gfx_mode::vic_control#6 ) *((const byte*) VIC_CONTROL) ← (byte) gfx_mode::vic_control#4 (byte) gfx_mode::vic_control2#0 ← (const byte) VIC_CSEL - (bool~) gfx_mode::$16 ← *((byte*) form_ctrl_mcm) != (number) 0 + (bool~) gfx_mode::$16 ← *((const byte*) form_ctrl_mcm) != (number) 0 (bool~) gfx_mode::$17 ← ! (bool~) gfx_mode::$16 if((bool~) gfx_mode::$17) goto gfx_mode::@9 to:gfx_mode::@20 gfx_mode::@19: scope:[gfx_mode] from gfx_mode::@7 - (byte) keyboard_modifiers#113 ← phi( gfx_mode::@7/(byte) keyboard_modifiers#114 ) - (byte) keyboard_events_size#132 ← phi( gfx_mode::@7/(byte) keyboard_events_size#133 ) + (byte) keyboard_modifiers#111 ← phi( gfx_mode::@7/(byte) keyboard_modifiers#112 ) + (byte) keyboard_events_size#130 ← phi( gfx_mode::@7/(byte) keyboard_events_size#131 ) (byte) gfx_mode::vic_control#5 ← phi( gfx_mode::@7/(byte) gfx_mode::vic_control#6 ) (byte~) gfx_mode::$78 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM (byte) gfx_mode::vic_control#2 ← (byte~) gfx_mode::$78 to:gfx_mode::@8 gfx_mode::@9: scope:[gfx_mode] from gfx_mode::@20 gfx_mode::@8 - (byte) keyboard_modifiers#109 ← phi( gfx_mode::@20/(byte) keyboard_modifiers#111 gfx_mode::@8/(byte) keyboard_modifiers#112 ) - (byte) keyboard_events_size#128 ← phi( gfx_mode::@20/(byte) keyboard_events_size#130 gfx_mode::@8/(byte) keyboard_events_size#131 ) + (byte) keyboard_modifiers#107 ← phi( gfx_mode::@20/(byte) keyboard_modifiers#109 gfx_mode::@8/(byte) keyboard_modifiers#110 ) + (byte) keyboard_events_size#126 ← phi( gfx_mode::@20/(byte) keyboard_events_size#128 gfx_mode::@8/(byte) keyboard_events_size#129 ) (byte) gfx_mode::vic_control2#2 ← phi( gfx_mode::@20/(byte) gfx_mode::vic_control2#1 gfx_mode::@8/(byte) gfx_mode::vic_control2#0 ) *((const byte*) VIC_CONTROL2) ← (byte) gfx_mode::vic_control2#2 - (number~) gfx_mode::$18 ← *((byte*) form_a_start_hi) * (number) $10 - (number~) gfx_mode::$19 ← (number~) gfx_mode::$18 | *((byte*) form_a_start_lo) + (number~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) * (number) $10 + (number~) gfx_mode::$19 ← (number~) gfx_mode::$18 | *((const byte*) form_a_start_lo) (byte) gfx_mode::plane_a_offs#0 ← (number~) gfx_mode::$19 - (byte) get_plane::idx#0 ← *((byte*) form_a_pattern) + (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern) call get_plane (dword) get_plane::return#16 ← (dword) get_plane::return#14 to:gfx_mode::@46 gfx_mode::@46: scope:[gfx_mode] from gfx_mode::@9 - (byte) keyboard_modifiers#107 ← phi( gfx_mode::@9/(byte) keyboard_modifiers#109 ) - (byte) keyboard_events_size#126 ← phi( gfx_mode::@9/(byte) keyboard_events_size#128 ) + (byte) keyboard_modifiers#105 ← phi( gfx_mode::@9/(byte) keyboard_modifiers#107 ) + (byte) keyboard_events_size#124 ← phi( gfx_mode::@9/(byte) keyboard_events_size#126 ) (byte) gfx_mode::plane_a_offs#1 ← phi( gfx_mode::@9/(byte) gfx_mode::plane_a_offs#0 ) (dword) get_plane::return#19 ← phi( gfx_mode::@9/(dword) get_plane::return#16 ) (dword~) gfx_mode::$20 ← (dword) get_plane::return#19 @@ -2173,23 +2066,23 @@ gfx_mode::@46: scope:[gfx_mode] from gfx_mode::@9 (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 *((const byte*) DTV_PLANEA_START_HI) ← (byte~) gfx_mode::$27 - (number~) gfx_mode::$28 ← *((byte*) form_a_step_hi) * (number) $10 - (number~) gfx_mode::$29 ← (number~) gfx_mode::$28 | *((byte*) form_a_step_lo) + (number~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) * (number) $10 + (number~) gfx_mode::$29 ← (number~) gfx_mode::$28 | *((const byte*) form_a_step_lo) *((const byte*) DTV_PLANEA_STEP) ← (number~) gfx_mode::$29 - (number~) gfx_mode::$30 ← *((byte*) form_a_mod_hi) * (number) $10 - (number~) gfx_mode::$31 ← (number~) gfx_mode::$30 | *((byte*) form_a_mod_lo) + (number~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) * (number) $10 + (number~) gfx_mode::$31 ← (number~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) *((const byte*) DTV_PLANEA_MODULO_LO) ← (number~) gfx_mode::$31 *((const byte*) DTV_PLANEA_MODULO_HI) ← (number) 0 - (number~) gfx_mode::$32 ← *((byte*) form_b_start_hi) * (number) $10 - (number~) gfx_mode::$33 ← (number~) gfx_mode::$32 | *((byte*) form_b_start_lo) + (number~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) * (number) $10 + (number~) gfx_mode::$33 ← (number~) gfx_mode::$32 | *((const byte*) form_b_start_lo) (byte) gfx_mode::plane_b_offs#0 ← (number~) gfx_mode::$33 - (byte) get_plane::idx#1 ← *((byte*) form_b_pattern) + (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern) call get_plane (dword) get_plane::return#17 ← (dword) get_plane::return#14 to:gfx_mode::@47 gfx_mode::@47: scope:[gfx_mode] from gfx_mode::@46 - (byte) keyboard_modifiers#105 ← phi( gfx_mode::@46/(byte) keyboard_modifiers#107 ) - (byte) keyboard_events_size#124 ← phi( gfx_mode::@46/(byte) keyboard_events_size#126 ) + (byte) keyboard_modifiers#103 ← phi( gfx_mode::@46/(byte) keyboard_modifiers#105 ) + (byte) keyboard_events_size#122 ← phi( gfx_mode::@46/(byte) keyboard_events_size#124 ) (byte) gfx_mode::plane_b_offs#1 ← phi( gfx_mode::@46/(byte) gfx_mode::plane_b_offs#0 ) (dword) get_plane::return#20 ← phi( gfx_mode::@46/(dword) get_plane::return#17 ) (dword~) gfx_mode::$34 ← (dword) get_plane::return#20 @@ -2204,11 +2097,11 @@ gfx_mode::@47: scope:[gfx_mode] from gfx_mode::@46 (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 *((const byte*) DTV_PLANEB_START_HI) ← (byte~) gfx_mode::$41 - (number~) gfx_mode::$42 ← *((byte*) form_b_step_hi) * (number) $10 - (number~) gfx_mode::$43 ← (number~) gfx_mode::$42 | *((byte*) form_b_step_lo) + (number~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) * (number) $10 + (number~) gfx_mode::$43 ← (number~) gfx_mode::$42 | *((const byte*) form_b_step_lo) *((const byte*) DTV_PLANEB_STEP) ← (number~) gfx_mode::$43 - (number~) gfx_mode::$44 ← *((byte*) form_b_mod_hi) * (number) $10 - (number~) gfx_mode::$45 ← (number~) gfx_mode::$44 | *((byte*) form_b_mod_lo) + (number~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) * (number) $10 + (number~) gfx_mode::$45 ← (number~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) *((const byte*) DTV_PLANEB_MODULO_LO) ← (number~) gfx_mode::$45 *((const byte*) DTV_PLANEB_MODULO_HI) ← (number) 0 *((const byte*) CIA2_PORT_A_DDR) ← (number) 3 @@ -2217,26 +2110,26 @@ gfx_mode::@47: scope:[gfx_mode] from gfx_mode::@46 (byte~) gfx_mode::$48 ← ((byte)) (number~) gfx_mode::$47 (number~) gfx_mode::$49 ← (number) 3 ^ (byte~) gfx_mode::$48 *((const byte*) CIA2_PORT_A) ← (number~) gfx_mode::$49 - (byte) get_vic_screen::idx#0 ← *((byte*) form_vic_screen) + (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen) call get_vic_screen (byte*) get_vic_screen::return#7 ← (byte*) get_vic_screen::return#5 to:gfx_mode::@48 gfx_mode::@48: scope:[gfx_mode] from gfx_mode::@47 - (byte) keyboard_modifiers#103 ← phi( gfx_mode::@47/(byte) keyboard_modifiers#105 ) - (byte) keyboard_events_size#122 ← phi( gfx_mode::@47/(byte) keyboard_events_size#124 ) + (byte) keyboard_modifiers#101 ← phi( gfx_mode::@47/(byte) keyboard_modifiers#103 ) + (byte) keyboard_events_size#120 ← phi( gfx_mode::@47/(byte) keyboard_events_size#122 ) (byte*) get_vic_screen::return#10 ← phi( gfx_mode::@47/(byte*) get_vic_screen::return#7 ) (byte*~) gfx_mode::$50 ← (byte*) get_vic_screen::return#10 (word~) gfx_mode::$51 ← ((word)) (byte*~) gfx_mode::$50 (number~) gfx_mode::$52 ← (word~) gfx_mode::$51 & (number) $3fff (number~) gfx_mode::$53 ← (number~) gfx_mode::$52 / (number) $40 (byte~) gfx_mode::$54 ← ((byte)) (number~) gfx_mode::$53 - (byte) get_vic_charset::idx#0 ← *((byte*) form_vic_gfx) + (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx) call get_vic_charset (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 to:gfx_mode::@49 gfx_mode::@49: scope:[gfx_mode] from gfx_mode::@48 - (byte) keyboard_modifiers#101 ← phi( gfx_mode::@48/(byte) keyboard_modifiers#103 ) - (byte) keyboard_events_size#120 ← phi( gfx_mode::@48/(byte) keyboard_events_size#122 ) + (byte) keyboard_modifiers#99 ← phi( gfx_mode::@48/(byte) keyboard_modifiers#101 ) + (byte) keyboard_events_size#118 ← phi( gfx_mode::@48/(byte) keyboard_events_size#120 ) (byte*) get_vic_charset::return#6 ← phi( gfx_mode::@48/(byte*) get_vic_charset::return#4 ) (byte*~) gfx_mode::$55 ← (byte*) get_vic_charset::return#6 (word~) gfx_mode::$56 ← ((word)) (byte*~) gfx_mode::$55 @@ -2245,13 +2138,13 @@ gfx_mode::@49: scope:[gfx_mode] from gfx_mode::@48 (number~) gfx_mode::$59 ← (number~) gfx_mode::$58 / (number) 4 (number~) gfx_mode::$60 ← (byte~) gfx_mode::$54 | (number~) gfx_mode::$59 *((const byte*) VIC_MEMORY) ← (number~) gfx_mode::$60 - (byte) get_vic_screen::idx#1 ← *((byte*) form_vic_cols) + (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols) call get_vic_screen (byte*) get_vic_screen::return#8 ← (byte*) get_vic_screen::return#5 to:gfx_mode::@50 gfx_mode::@50: scope:[gfx_mode] from gfx_mode::@49 - (byte) keyboard_modifiers#99 ← phi( gfx_mode::@49/(byte) keyboard_modifiers#101 ) - (byte) keyboard_events_size#118 ← phi( gfx_mode::@49/(byte) keyboard_events_size#120 ) + (byte) keyboard_modifiers#97 ← phi( gfx_mode::@49/(byte) keyboard_modifiers#99 ) + (byte) keyboard_events_size#116 ← phi( gfx_mode::@49/(byte) keyboard_events_size#118 ) (byte*) get_vic_screen::return#11 ← phi( gfx_mode::@49/(byte*) get_vic_screen::return#8 ) (byte*~) gfx_mode::$61 ← (byte*) get_vic_screen::return#11 (byte*) gfx_mode::vic_colors#0 ← (byte*~) gfx_mode::$61 @@ -2259,23 +2152,23 @@ gfx_mode::@50: scope:[gfx_mode] from gfx_mode::@49 (byte) gfx_mode::cy#0 ← (byte) 0 to:gfx_mode::@21 gfx_mode::@20: scope:[gfx_mode] from gfx_mode::@8 - (byte) keyboard_modifiers#111 ← phi( gfx_mode::@8/(byte) keyboard_modifiers#112 ) - (byte) keyboard_events_size#130 ← phi( gfx_mode::@8/(byte) keyboard_events_size#131 ) + (byte) keyboard_modifiers#109 ← phi( gfx_mode::@8/(byte) keyboard_modifiers#110 ) + (byte) keyboard_events_size#128 ← phi( gfx_mode::@8/(byte) keyboard_events_size#129 ) (byte) gfx_mode::vic_control2#3 ← phi( gfx_mode::@8/(byte) gfx_mode::vic_control2#0 ) (byte~) gfx_mode::$79 ← (byte) gfx_mode::vic_control2#3 | (const byte) VIC_MCM (byte) gfx_mode::vic_control2#1 ← (byte~) gfx_mode::$79 to:gfx_mode::@9 gfx_mode::@21: scope:[gfx_mode] from gfx_mode::@23 gfx_mode::@50 - (byte) keyboard_modifiers#97 ← phi( gfx_mode::@23/(byte) keyboard_modifiers#91 gfx_mode::@50/(byte) keyboard_modifiers#99 ) - (byte) keyboard_events_size#115 ← phi( gfx_mode::@23/(byte) keyboard_events_size#104 gfx_mode::@50/(byte) keyboard_events_size#118 ) + (byte) keyboard_modifiers#95 ← phi( gfx_mode::@23/(byte) keyboard_modifiers#89 gfx_mode::@50/(byte) keyboard_modifiers#97 ) + (byte) keyboard_events_size#113 ← phi( gfx_mode::@23/(byte) keyboard_events_size#102 gfx_mode::@50/(byte) keyboard_events_size#116 ) (byte) gfx_mode::cy#4 ← phi( gfx_mode::@23/(byte) gfx_mode::cy#1 gfx_mode::@50/(byte) gfx_mode::cy#0 ) (byte*) gfx_mode::col#3 ← phi( gfx_mode::@23/(byte*) gfx_mode::col#4 gfx_mode::@50/(byte*) gfx_mode::col#0 ) (byte*) gfx_mode::vic_colors#3 ← phi( gfx_mode::@23/(byte*) gfx_mode::vic_colors#4 gfx_mode::@50/(byte*) gfx_mode::vic_colors#0 ) (byte) gfx_mode::cx#0 ← (byte) 0 to:gfx_mode::@22 gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 gfx_mode::@22 - (byte) keyboard_modifiers#95 ← phi( gfx_mode::@21/(byte) keyboard_modifiers#97 gfx_mode::@22/(byte) keyboard_modifiers#95 ) - (byte) keyboard_events_size#111 ← phi( gfx_mode::@21/(byte) keyboard_events_size#115 gfx_mode::@22/(byte) keyboard_events_size#111 ) + (byte) keyboard_modifiers#93 ← phi( gfx_mode::@21/(byte) keyboard_modifiers#95 gfx_mode::@22/(byte) keyboard_modifiers#93 ) + (byte) keyboard_events_size#109 ← phi( gfx_mode::@21/(byte) keyboard_events_size#113 gfx_mode::@22/(byte) keyboard_events_size#109 ) (byte) gfx_mode::cy#3 ← phi( gfx_mode::@21/(byte) gfx_mode::cy#4 gfx_mode::@22/(byte) gfx_mode::cy#3 ) (byte) gfx_mode::cx#2 ← phi( gfx_mode::@21/(byte) gfx_mode::cx#0 gfx_mode::@22/(byte) gfx_mode::cx#1 ) (byte*) gfx_mode::col#2 ← phi( gfx_mode::@21/(byte*) gfx_mode::col#3 gfx_mode::@22/(byte*) gfx_mode::col#1 ) @@ -2288,8 +2181,8 @@ gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 gfx_mode::@22 if((bool~) gfx_mode::$80) goto gfx_mode::@22 to:gfx_mode::@23 gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 - (byte) keyboard_modifiers#91 ← phi( gfx_mode::@22/(byte) keyboard_modifiers#95 ) - (byte) keyboard_events_size#104 ← phi( gfx_mode::@22/(byte) keyboard_events_size#111 ) + (byte) keyboard_modifiers#89 ← phi( gfx_mode::@22/(byte) keyboard_modifiers#93 ) + (byte) keyboard_events_size#102 ← phi( gfx_mode::@22/(byte) keyboard_events_size#109 ) (byte*) gfx_mode::col#4 ← phi( gfx_mode::@22/(byte*) gfx_mode::col#1 ) (byte*) gfx_mode::vic_colors#4 ← phi( gfx_mode::@22/(byte*) gfx_mode::vic_colors#1 ) (byte) gfx_mode::cy#2 ← phi( gfx_mode::@22/(byte) gfx_mode::cy#3 ) @@ -2298,32 +2191,32 @@ gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 if((bool~) gfx_mode::$81) goto gfx_mode::@21 to:gfx_mode::@24 gfx_mode::@24: scope:[gfx_mode] from gfx_mode::@23 - (byte) keyboard_modifiers#85 ← phi( gfx_mode::@23/(byte) keyboard_modifiers#91 ) - (byte) keyboard_events_size#94 ← phi( gfx_mode::@23/(byte) keyboard_events_size#104 ) + (byte) keyboard_modifiers#84 ← phi( gfx_mode::@23/(byte) keyboard_modifiers#89 ) + (byte) keyboard_events_size#93 ← phi( gfx_mode::@23/(byte) keyboard_events_size#102 ) *((const byte*) BORDERCOL) ← (number) 0 - (number~) gfx_mode::$62 ← *((byte*) form_vic_bg0_hi) * (number) $10 - (number~) gfx_mode::$63 ← (number~) gfx_mode::$62 | *((byte*) form_vic_bg0_lo) + (number~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) * (number) $10 + (number~) gfx_mode::$63 ← (number~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) *((const byte*) BGCOL1) ← (number~) gfx_mode::$63 - (number~) gfx_mode::$64 ← *((byte*) form_vic_bg1_hi) * (number) $10 - (number~) gfx_mode::$65 ← (number~) gfx_mode::$64 | *((byte*) form_vic_bg1_lo) + (number~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) * (number) $10 + (number~) gfx_mode::$65 ← (number~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) *((const byte*) BGCOL2) ← (number~) gfx_mode::$65 - (number~) gfx_mode::$66 ← *((byte*) form_vic_bg2_hi) * (number) $10 - (number~) gfx_mode::$67 ← (number~) gfx_mode::$66 | *((byte*) form_vic_bg2_lo) + (number~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) * (number) $10 + (number~) gfx_mode::$67 ← (number~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) *((const byte*) BGCOL3) ← (number~) gfx_mode::$67 - (number~) gfx_mode::$68 ← *((byte*) form_vic_bg3_hi) * (number) $10 - (number~) gfx_mode::$69 ← (number~) gfx_mode::$68 | *((byte*) form_vic_bg3_lo) + (number~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) * (number) $10 + (number~) gfx_mode::$69 ← (number~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) *((const byte*) BGCOL4) ← (number~) gfx_mode::$69 - (bool~) gfx_mode::$70 ← *((byte*) form_dtv_palet) == (number) 0 + (bool~) gfx_mode::$70 ← *((const byte*) form_dtv_palet) == (number) 0 if((bool~) gfx_mode::$70) goto gfx_mode::@10 to:gfx_mode::@25 gfx_mode::@10: scope:[gfx_mode] from gfx_mode::@24 - (byte) keyboard_modifiers#78 ← phi( gfx_mode::@24/(byte) keyboard_modifiers#85 ) - (byte) keyboard_events_size#82 ← phi( gfx_mode::@24/(byte) keyboard_events_size#94 ) + (byte) keyboard_modifiers#78 ← phi( gfx_mode::@24/(byte) keyboard_modifiers#84 ) + (byte) keyboard_events_size#82 ← phi( gfx_mode::@24/(byte) keyboard_events_size#93 ) (byte) gfx_mode::i#0 ← (byte) 0 to:gfx_mode::@29 gfx_mode::@25: scope:[gfx_mode] from gfx_mode::@24 - (byte) keyboard_modifiers#77 ← phi( gfx_mode::@24/(byte) keyboard_modifiers#85 ) - (byte) keyboard_events_size#81 ← phi( gfx_mode::@24/(byte) keyboard_events_size#94 ) + (byte) keyboard_modifiers#77 ← phi( gfx_mode::@24/(byte) keyboard_modifiers#84 ) + (byte) keyboard_events_size#81 ← phi( gfx_mode::@24/(byte) keyboard_events_size#93 ) (byte) gfx_mode::j#0 ← (byte) 0 to:gfx_mode::@26 gfx_mode::@26: scope:[gfx_mode] from gfx_mode::@25 gfx_mode::@26 @@ -2339,7 +2232,7 @@ gfx_mode::@29: scope:[gfx_mode] from gfx_mode::@10 gfx_mode::@29 (byte) keyboard_modifiers#58 ← phi( gfx_mode::@10/(byte) keyboard_modifiers#78 gfx_mode::@29/(byte) keyboard_modifiers#58 ) (byte) keyboard_events_size#59 ← phi( gfx_mode::@10/(byte) keyboard_events_size#82 gfx_mode::@29/(byte) keyboard_events_size#59 ) (byte) gfx_mode::i#2 ← phi( gfx_mode::@10/(byte) gfx_mode::i#0 gfx_mode::@29/(byte) gfx_mode::i#1 ) - *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) + *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) (byte) gfx_mode::i#1 ← (byte) gfx_mode::i#2 + rangenext(0,$f) (bool~) gfx_mode::$83 ← (byte) gfx_mode::i#1 != rangelast(0,$f) if((bool~) gfx_mode::$83) goto gfx_mode::@29 @@ -2660,8 +2553,6 @@ gfx_init_vic_bitmap::@7: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap call bitmap_clear to:gfx_init_vic_bitmap::@8 gfx_init_vic_bitmap::@8: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@7 - (byte[]) gfx_init_vic_bitmap::lines_x ← { (number) 0, (number) $ff, (number) $ff, (number) 0, (number) 0, (number) $80, (number) $ff, (number) $80, (number) 0, (number) $80 } - (byte[]) gfx_init_vic_bitmap::lines_y ← { (number) 0, (number) 0, (number) $c7, (number) $c7, (number) 0, (number) 0, (number) $64, (number) $c7, (number) $64, (number) 0 } (byte) gfx_init_vic_bitmap::l#0 ← (number) 0 to:gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@1: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@8 gfx_init_vic_bitmap::@9 @@ -2673,10 +2564,10 @@ gfx_init_vic_bitmap::@2: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap:: (byte) gfx_init_vic_bitmap::l#3 ← phi( gfx_init_vic_bitmap::@1/(byte) gfx_init_vic_bitmap::l#2 ) (number~) gfx_init_vic_bitmap::$3 ← (byte) gfx_init_vic_bitmap::l#3 + (number) 1 (number~) gfx_init_vic_bitmap::$4 ← (byte) gfx_init_vic_bitmap::l#3 + (number) 1 - (byte) bitmap_line::x0#0 ← *((byte[]) gfx_init_vic_bitmap::lines_x + (byte) gfx_init_vic_bitmap::l#3) - (byte) bitmap_line::x1#0 ← *((byte[]) gfx_init_vic_bitmap::lines_x + (number~) gfx_init_vic_bitmap::$3) - (byte) bitmap_line::y0#0 ← *((byte[]) gfx_init_vic_bitmap::lines_y + (byte) gfx_init_vic_bitmap::l#3) - (byte) bitmap_line::y1#0 ← *((byte[]) gfx_init_vic_bitmap::lines_y + (number~) gfx_init_vic_bitmap::$4) + (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x + (byte) gfx_init_vic_bitmap::l#3) + (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x + (number~) gfx_init_vic_bitmap::$3) + (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y + (byte) gfx_init_vic_bitmap::l#3) + (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y + (number~) gfx_init_vic_bitmap::$4) call bitmap_line to:gfx_init_vic_bitmap::@9 gfx_init_vic_bitmap::@9: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@2 @@ -2839,7 +2730,6 @@ gfx_init_plane_horisontal2::@5: scope:[gfx_init_plane_horisontal2] from gfx_ini (byte) gfx_init_plane_horisontal2::gfxbCpuBank#2 ← phi( gfx_init_plane_horisontal2/(byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 ) (byte) gfx_init_plane_horisontal2::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_horisontal2::gfxbCpuBank#2 (byte*) gfx_init_plane_horisontal2::gfxa#0 ← ((byte*)) (number) $4000+(const dword) PLANE_HORISONTAL2&(number) $3fff - (byte[]) gfx_init_plane_horisontal2::row_bitmask ← { (number) 0, (number) $55, (number) $aa, (number) $ff } (byte) gfx_init_plane_horisontal2::ay#0 ← (byte) 0 to:gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@1: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@5 @@ -2854,7 +2744,7 @@ gfx_init_plane_horisontal2::@2: scope:[gfx_init_plane_horisontal2] from gfx_ini (number~) gfx_init_plane_horisontal2::$4 ← (byte) gfx_init_plane_horisontal2::ay#2 / (number) 2 (number~) gfx_init_plane_horisontal2::$5 ← (number~) gfx_init_plane_horisontal2::$4 & (number) 3 (byte) gfx_init_plane_horisontal2::row#0 ← (number~) gfx_init_plane_horisontal2::$5 - *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((byte[]) gfx_init_plane_horisontal2::row_bitmask + (byte) gfx_init_plane_horisontal2::row#0) + *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask + (byte) gfx_init_plane_horisontal2::row#0) (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 (byte) gfx_init_plane_horisontal2::ax#1 ← (byte) gfx_init_plane_horisontal2::ax#2 + rangenext(0,$27) (bool~) gfx_init_plane_horisontal2::$6 ← (byte) gfx_init_plane_horisontal2::ax#1 != rangelast(0,$27) @@ -3127,8 +3017,8 @@ gfx_init_plane_fill::@return: scope:[gfx_init_plane_fill] from gfx_init_plane_f (void()) form_mode() form_mode: scope:[form_mode] from main::@2 (byte) form_field_idx#66 ← phi( main::@2/(byte) form_field_idx#25 ) - (byte) keyboard_modifiers#110 ← phi( main::@2/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#129 ← phi( main::@2/(byte) keyboard_events_size#42 ) + (byte) keyboard_modifiers#108 ← phi( main::@2/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#127 ← phi( main::@2/(byte) keyboard_events_size#42 ) (signed byte) form_cursor_count#60 ← phi( main::@2/(signed byte) form_cursor_count#18 ) (byte*) print_char_cursor#43 ← phi( main::@2/(byte*) print_char_cursor#41 ) (byte*) print_line_cursor#41 ← phi( main::@2/(byte*) print_line_cursor#39 ) @@ -3138,8 +3028,8 @@ form_mode: scope:[form_mode] from main::@2 to:form_mode::@21 form_mode::@21: scope:[form_mode] from form_mode (byte) form_field_idx#65 ← phi( form_mode/(byte) form_field_idx#66 ) - (byte) keyboard_modifiers#108 ← phi( form_mode/(byte) keyboard_modifiers#110 ) - (byte) keyboard_events_size#127 ← phi( form_mode/(byte) keyboard_events_size#129 ) + (byte) keyboard_modifiers#106 ← phi( form_mode/(byte) keyboard_modifiers#108 ) + (byte) keyboard_events_size#125 ← phi( form_mode/(byte) keyboard_events_size#127 ) (signed byte) form_cursor_count#59 ← phi( form_mode/(signed byte) form_cursor_count#60 ) (byte*) print_char_cursor#29 ← phi( form_mode/(byte*) print_char_cursor#9 ) (byte*) print_line_cursor#28 ← phi( form_mode/(byte*) print_line_cursor#8 ) @@ -3151,8 +3041,8 @@ form_mode::@21: scope:[form_mode] from form_mode to:form_mode::@22 form_mode::@22: scope:[form_mode] from form_mode::@21 (byte) form_field_idx#64 ← phi( form_mode::@21/(byte) form_field_idx#65 ) - (byte) keyboard_modifiers#106 ← phi( form_mode::@21/(byte) keyboard_modifiers#108 ) - (byte) keyboard_events_size#125 ← phi( form_mode::@21/(byte) keyboard_events_size#127 ) + (byte) keyboard_modifiers#104 ← phi( form_mode::@21/(byte) keyboard_modifiers#106 ) + (byte) keyboard_events_size#123 ← phi( form_mode::@21/(byte) keyboard_events_size#125 ) (signed byte) form_cursor_count#58 ← phi( form_mode::@21/(signed byte) form_cursor_count#59 ) (byte*) print_screen#27 ← phi( form_mode::@21/(byte*) print_screen#5 ) (byte*) print_char_cursor#30 ← phi( form_mode::@21/(byte*) print_char_cursor#7 ) @@ -3164,8 +3054,8 @@ form_mode::@22: scope:[form_mode] from form_mode::@21 to:form_mode::@23 form_mode::@23: scope:[form_mode] from form_mode::@22 (byte) form_field_idx#63 ← phi( form_mode::@22/(byte) form_field_idx#64 ) - (byte) keyboard_modifiers#104 ← phi( form_mode::@22/(byte) keyboard_modifiers#106 ) - (byte) keyboard_events_size#123 ← phi( form_mode::@22/(byte) keyboard_events_size#125 ) + (byte) keyboard_modifiers#102 ← phi( form_mode::@22/(byte) keyboard_modifiers#104 ) + (byte) keyboard_events_size#121 ← phi( form_mode::@22/(byte) keyboard_events_size#123 ) (signed byte) form_cursor_count#57 ← phi( form_mode::@22/(signed byte) form_cursor_count#58 ) (byte*) print_screen#21 ← phi( form_mode::@22/(byte*) print_screen#27 ) (byte*) print_line_cursor#30 ← phi( form_mode::@22/(byte*) print_line_cursor#2 ) @@ -3177,8 +3067,8 @@ form_mode::@23: scope:[form_mode] from form_mode::@22 to:form_mode::@24 form_mode::@24: scope:[form_mode] from form_mode::@23 (byte) form_field_idx#62 ← phi( form_mode::@23/(byte) form_field_idx#63 ) - (byte) keyboard_modifiers#102 ← phi( form_mode::@23/(byte) keyboard_modifiers#104 ) - (byte) keyboard_events_size#121 ← phi( form_mode::@23/(byte) keyboard_events_size#123 ) + (byte) keyboard_modifiers#100 ← phi( form_mode::@23/(byte) keyboard_modifiers#102 ) + (byte) keyboard_events_size#119 ← phi( form_mode::@23/(byte) keyboard_events_size#121 ) (signed byte) form_cursor_count#56 ← phi( form_mode::@23/(signed byte) form_cursor_count#57 ) (byte*) print_char_cursor#32 ← phi( form_mode::@23/(byte*) print_char_cursor#9 ) (byte*) print_line_cursor#31 ← phi( form_mode::@23/(byte*) print_line_cursor#8 ) @@ -3190,10 +3080,10 @@ form_mode::@24: scope:[form_mode] from form_mode::@23 to:form_mode::@25 form_mode::@25: scope:[form_mode] from form_mode::@24 (byte) form_field_idx#61 ← phi( form_mode::@24/(byte) form_field_idx#62 ) - (byte) keyboard_modifiers#100 ← phi( form_mode::@24/(byte) keyboard_modifiers#102 ) - (byte) keyboard_events_size#119 ← phi( form_mode::@24/(byte) keyboard_events_size#121 ) + (byte) keyboard_modifiers#98 ← phi( form_mode::@24/(byte) keyboard_modifiers#100 ) + (byte) keyboard_events_size#117 ← phi( form_mode::@24/(byte) keyboard_events_size#119 ) (signed byte) form_cursor_count#55 ← phi( form_mode::@24/(signed byte) form_cursor_count#56 ) - (byte*) print_screen#49 ← phi( form_mode::@24/(byte*) print_screen#6 ) + (byte*) print_screen#46 ← phi( form_mode::@24/(byte*) print_screen#6 ) (byte*) print_char_cursor#33 ← phi( form_mode::@24/(byte*) print_char_cursor#7 ) (byte*) print_line_cursor#32 ← phi( form_mode::@24/(byte*) print_line_cursor#6 ) (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#32 @@ -3203,10 +3093,10 @@ form_mode::@25: scope:[form_mode] from form_mode::@24 to:form_mode::@26 form_mode::@26: scope:[form_mode] from form_mode::@25 (byte) form_field_idx#58 ← phi( form_mode::@25/(byte) form_field_idx#61 ) - (byte) keyboard_modifiers#98 ← phi( form_mode::@25/(byte) keyboard_modifiers#100 ) - (byte) keyboard_events_size#116 ← phi( form_mode::@25/(byte) keyboard_events_size#119 ) + (byte) keyboard_modifiers#96 ← phi( form_mode::@25/(byte) keyboard_modifiers#98 ) + (byte) keyboard_events_size#114 ← phi( form_mode::@25/(byte) keyboard_events_size#117 ) (signed byte) form_cursor_count#52 ← phi( form_mode::@25/(signed byte) form_cursor_count#55 ) - (byte*) print_screen#48 ← phi( form_mode::@25/(byte*) print_screen#49 ) + (byte*) print_screen#45 ← phi( form_mode::@25/(byte*) print_screen#46 ) (byte*) print_line_cursor#33 ← phi( form_mode::@25/(byte*) print_line_cursor#2 ) (byte*) print_char_cursor#34 ← phi( form_mode::@25/(byte*) print_char_cursor#3 ) (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#34 @@ -3216,33 +3106,33 @@ form_mode::@26: scope:[form_mode] from form_mode::@25 to:form_mode::@27 form_mode::@27: scope:[form_mode] from form_mode::@26 (byte) form_field_idx#56 ← phi( form_mode::@26/(byte) form_field_idx#58 ) - (byte) keyboard_modifiers#96 ← phi( form_mode::@26/(byte) keyboard_modifiers#98 ) - (byte) keyboard_events_size#112 ← phi( form_mode::@26/(byte) keyboard_events_size#116 ) + (byte) keyboard_modifiers#94 ← phi( form_mode::@26/(byte) keyboard_modifiers#96 ) + (byte) keyboard_events_size#110 ← phi( form_mode::@26/(byte) keyboard_events_size#114 ) (signed byte) form_cursor_count#50 ← phi( form_mode::@26/(signed byte) form_cursor_count#52 ) - (byte*) print_char_cursor#69 ← phi( form_mode::@26/(byte*) print_char_cursor#17 ) - (byte*) print_line_cursor#69 ← phi( form_mode::@26/(byte*) print_line_cursor#16 ) - (byte*) print_screen#46 ← phi( form_mode::@26/(byte*) print_screen#48 ) + (byte*) print_char_cursor#67 ← phi( form_mode::@26/(byte*) print_char_cursor#17 ) + (byte*) print_line_cursor#67 ← phi( form_mode::@26/(byte*) print_line_cursor#16 ) + (byte*) print_screen#44 ← phi( form_mode::@26/(byte*) print_screen#45 ) call form_render_values to:form_mode::@28 form_mode::@28: scope:[form_mode] from form_mode::@27 (byte) form_field_idx#52 ← phi( form_mode::@27/(byte) form_field_idx#56 ) - (byte) keyboard_modifiers#92 ← phi( form_mode::@27/(byte) keyboard_modifiers#96 ) - (byte) keyboard_events_size#105 ← phi( form_mode::@27/(byte) keyboard_events_size#112 ) + (byte) keyboard_modifiers#90 ← phi( form_mode::@27/(byte) keyboard_modifiers#94 ) + (byte) keyboard_events_size#103 ← phi( form_mode::@27/(byte) keyboard_events_size#110 ) (signed byte) form_cursor_count#47 ← phi( form_mode::@27/(signed byte) form_cursor_count#50 ) - (byte*) print_char_cursor#66 ← phi( form_mode::@27/(byte*) print_char_cursor#69 ) - (byte*) print_line_cursor#66 ← phi( form_mode::@27/(byte*) print_line_cursor#69 ) - (byte*) print_screen#43 ← phi( form_mode::@27/(byte*) print_screen#46 ) - (byte) render_preset_name::idx#0 ← *((byte*) form_preset) + (byte*) print_char_cursor#65 ← phi( form_mode::@27/(byte*) print_char_cursor#67 ) + (byte*) print_line_cursor#65 ← phi( form_mode::@27/(byte*) print_line_cursor#67 ) + (byte*) print_screen#42 ← phi( form_mode::@27/(byte*) print_screen#44 ) + (byte) render_preset_name::idx#0 ← *((const byte*) form_preset) call render_preset_name to:form_mode::@29 form_mode::@29: scope:[form_mode] from form_mode::@28 (byte) form_field_idx#49 ← phi( form_mode::@28/(byte) form_field_idx#52 ) - (byte) keyboard_modifiers#86 ← phi( form_mode::@28/(byte) keyboard_modifiers#92 ) - (byte) keyboard_events_size#95 ← phi( form_mode::@28/(byte) keyboard_events_size#105 ) + (byte) keyboard_modifiers#85 ← phi( form_mode::@28/(byte) keyboard_modifiers#90 ) + (byte) keyboard_events_size#94 ← phi( form_mode::@28/(byte) keyboard_events_size#103 ) (signed byte) form_cursor_count#44 ← phi( form_mode::@28/(signed byte) form_cursor_count#47 ) - (byte*) print_char_cursor#63 ← phi( form_mode::@28/(byte*) print_char_cursor#66 ) - (byte*) print_line_cursor#63 ← phi( form_mode::@28/(byte*) print_line_cursor#66 ) - (byte*) print_screen#40 ← phi( form_mode::@28/(byte*) print_screen#43 ) + (byte*) print_char_cursor#63 ← phi( form_mode::@28/(byte*) print_char_cursor#65 ) + (byte*) print_line_cursor#63 ← phi( form_mode::@28/(byte*) print_line_cursor#65 ) + (byte*) print_screen#40 ← phi( form_mode::@28/(byte*) print_screen#42 ) (dword~) form_mode::$9 ← ((dword)) (const byte*) FORM_CHARSET (number~) form_mode::$10 ← (dword~) form_mode::$9 / (number) $10000 (byte~) form_mode::$11 ← ((byte)) (number~) form_mode::$10 @@ -3278,14 +3168,14 @@ form_mode::@29: scope:[form_mode] from form_mode::@28 to:form_mode::@1 form_mode::@1: scope:[form_mode] from form_mode::@1 form_mode::@29 (byte) form_field_idx#45 ← phi( form_mode::@1/(byte) form_field_idx#45 form_mode::@29/(byte) form_field_idx#49 ) - (byte) keyboard_modifiers#79 ← phi( form_mode::@1/(byte) keyboard_modifiers#79 form_mode::@29/(byte) keyboard_modifiers#86 ) - (byte) keyboard_events_size#83 ← phi( form_mode::@1/(byte) keyboard_events_size#83 form_mode::@29/(byte) keyboard_events_size#95 ) + (byte) keyboard_modifiers#79 ← phi( form_mode::@1/(byte) keyboard_modifiers#79 form_mode::@29/(byte) keyboard_modifiers#85 ) + (byte) keyboard_events_size#83 ← phi( form_mode::@1/(byte) keyboard_events_size#83 form_mode::@29/(byte) keyboard_events_size#94 ) (signed byte) form_cursor_count#39 ← phi( form_mode::@1/(signed byte) form_cursor_count#39 form_mode::@29/(signed byte) form_cursor_count#44 ) (byte*) print_char_cursor#57 ← phi( form_mode::@1/(byte*) print_char_cursor#57 form_mode::@29/(byte*) print_char_cursor#63 ) (byte*) print_line_cursor#57 ← phi( form_mode::@1/(byte*) print_line_cursor#57 form_mode::@29/(byte*) print_line_cursor#63 ) (byte*) print_screen#34 ← phi( form_mode::@1/(byte*) print_screen#34 form_mode::@29/(byte*) print_screen#40 ) (byte) form_mode::i#2 ← phi( form_mode::@1/(byte) form_mode::i#1 form_mode::@29/(byte) form_mode::i#0 ) - *((const byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) + *((const byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) (byte) form_mode::i#1 ← (byte) form_mode::i#2 + rangenext(0,$f) (bool~) form_mode::$28 ← (byte) form_mode::i#1 != rangelast(0,$f) if((bool~) form_mode::$28) goto form_mode::@1 @@ -3300,7 +3190,7 @@ form_mode::@2: scope:[form_mode] from form_mode::@1 (byte*) print_screen#29 ← phi( form_mode::@1/(byte*) print_screen#34 ) *((const byte*) BGCOL) ← (number) 0 *((const byte*) BORDERCOL) ← (number) 0 - (byte) form_mode::preset_current#0 ← *((byte*) form_preset) + (byte) form_mode::preset_current#0 ← *((const byte*) form_preset) to:form_mode::@3 form_mode::@3: scope:[form_mode] from form_mode::@14 form_mode::@2 form_mode::@33 (byte) form_mode::preset_current#6 ← phi( form_mode::@14/(byte) form_mode::preset_current#2 form_mode::@2/(byte) form_mode::preset_current#0 form_mode::@33/(byte) form_mode::preset_current#7 ) @@ -3365,7 +3255,7 @@ form_mode::@14: scope:[form_mode] from form_mode::@30 (byte*) print_line_cursor#49 ← phi( form_mode::@30/(byte*) print_line_cursor#43 ) (byte*) print_screen#28 ← phi( form_mode::@30/(byte*) print_screen#23 ) (byte) form_mode::preset_current#2 ← phi( form_mode::@30/(byte) form_mode::preset_current#3 ) - (bool~) form_mode::$33 ← (byte) form_mode::preset_current#2 != *((byte*) form_preset) + (bool~) form_mode::$33 ← (byte) form_mode::preset_current#2 != *((const byte*) form_preset) (bool~) form_mode::$34 ← ! (bool~) form_mode::$33 if((bool~) form_mode::$34) goto form_mode::@3 to:form_mode::@18 @@ -3388,36 +3278,36 @@ form_mode::@return: scope:[form_mode] from form_mode::@3 form_mode::@30 to:@return form_mode::@18: scope:[form_mode] from form_mode::@14 (byte) form_field_idx#53 ← phi( form_mode::@14/(byte) form_field_idx#37 ) - (byte) keyboard_modifiers#93 ← phi( form_mode::@14/(byte) keyboard_modifiers#60 ) - (byte) keyboard_events_size#106 ← phi( form_mode::@14/(byte) keyboard_events_size#61 ) + (byte) keyboard_modifiers#91 ← phi( form_mode::@14/(byte) keyboard_modifiers#60 ) + (byte) keyboard_events_size#104 ← phi( form_mode::@14/(byte) keyboard_events_size#61 ) (signed byte) form_cursor_count#48 ← phi( form_mode::@14/(signed byte) form_cursor_count#29 ) - (byte*) print_char_cursor#67 ← phi( form_mode::@14/(byte*) print_char_cursor#51 ) - (byte*) print_line_cursor#67 ← phi( form_mode::@14/(byte*) print_line_cursor#49 ) - (byte*) print_screen#44 ← phi( form_mode::@14/(byte*) print_screen#28 ) - (byte) apply_preset::idx#0 ← *((byte*) form_preset) + (byte*) print_char_cursor#66 ← phi( form_mode::@14/(byte*) print_char_cursor#51 ) + (byte*) print_line_cursor#66 ← phi( form_mode::@14/(byte*) print_line_cursor#49 ) + (byte*) print_screen#43 ← phi( form_mode::@14/(byte*) print_screen#28 ) + (byte) apply_preset::idx#0 ← *((const byte*) form_preset) call apply_preset to:form_mode::@31 form_mode::@31: scope:[form_mode] from form_mode::@18 (byte) form_field_idx#50 ← phi( form_mode::@18/(byte) form_field_idx#53 ) - (byte) keyboard_modifiers#87 ← phi( form_mode::@18/(byte) keyboard_modifiers#93 ) - (byte) keyboard_events_size#96 ← phi( form_mode::@18/(byte) keyboard_events_size#106 ) + (byte) keyboard_modifiers#86 ← phi( form_mode::@18/(byte) keyboard_modifiers#91 ) + (byte) keyboard_events_size#95 ← phi( form_mode::@18/(byte) keyboard_events_size#104 ) (signed byte) form_cursor_count#45 ← phi( form_mode::@18/(signed byte) form_cursor_count#48 ) - (byte*) print_char_cursor#64 ← phi( form_mode::@18/(byte*) print_char_cursor#67 ) - (byte*) print_line_cursor#64 ← phi( form_mode::@18/(byte*) print_line_cursor#67 ) - (byte*) print_screen#41 ← phi( form_mode::@18/(byte*) print_screen#44 ) - (byte) form_mode::preset_current#1 ← *((byte*) form_preset) + (byte*) print_char_cursor#64 ← phi( form_mode::@18/(byte*) print_char_cursor#66 ) + (byte*) print_line_cursor#64 ← phi( form_mode::@18/(byte*) print_line_cursor#66 ) + (byte*) print_screen#41 ← phi( form_mode::@18/(byte*) print_screen#43 ) + (byte) form_mode::preset_current#1 ← *((const byte*) form_preset) call form_render_values to:form_mode::@32 form_mode::@32: scope:[form_mode] from form_mode::@31 (byte) form_mode::preset_current#8 ← phi( form_mode::@31/(byte) form_mode::preset_current#1 ) (byte) form_field_idx#46 ← phi( form_mode::@31/(byte) form_field_idx#50 ) - (byte) keyboard_modifiers#80 ← phi( form_mode::@31/(byte) keyboard_modifiers#87 ) - (byte) keyboard_events_size#84 ← phi( form_mode::@31/(byte) keyboard_events_size#96 ) + (byte) keyboard_modifiers#80 ← phi( form_mode::@31/(byte) keyboard_modifiers#86 ) + (byte) keyboard_events_size#84 ← phi( form_mode::@31/(byte) keyboard_events_size#95 ) (signed byte) form_cursor_count#40 ← phi( form_mode::@31/(signed byte) form_cursor_count#45 ) (byte*) print_char_cursor#59 ← phi( form_mode::@31/(byte*) print_char_cursor#64 ) (byte*) print_line_cursor#59 ← phi( form_mode::@31/(byte*) print_line_cursor#64 ) (byte*) print_screen#36 ← phi( form_mode::@31/(byte*) print_screen#41 ) - (byte) render_preset_name::idx#1 ← *((byte*) form_preset) + (byte) render_preset_name::idx#1 ← *((const byte*) form_preset) call render_preset_name to:form_mode::@33 form_mode::@33: scope:[form_mode] from form_mode::@32 @@ -3430,12 +3320,12 @@ form_mode::@33: scope:[form_mode] from form_mode::@32 (byte*) print_line_cursor#51 ← phi( form_mode::@32/(byte*) print_line_cursor#59 ) (byte*) print_screen#30 ← phi( form_mode::@32/(byte*) print_screen#36 ) to:form_mode::@3 -@81: scope:[] from @62 - (byte) keyboard_modifiers#75 ← phi( @62/(byte) keyboard_modifiers#81 ) - (byte) keyboard_events_size#76 ← phi( @62/(byte) keyboard_events_size#85 ) - (byte*) print_char_cursor#55 ← phi( @62/(byte*) print_char_cursor#60 ) - (byte*) print_line_cursor#53 ← phi( @62/(byte*) print_line_cursor#60 ) - (byte*) print_screen#32 ← phi( @62/(byte*) print_screen#37 ) +@81: scope:[] from @48 + (byte) keyboard_modifiers#75 ← phi( @48/(byte) keyboard_modifiers#81 ) + (byte) keyboard_events_size#76 ← phi( @48/(byte) keyboard_events_size#85 ) + (byte*) print_char_cursor#55 ← phi( @48/(byte*) print_char_cursor#60 ) + (byte*) print_line_cursor#53 ← phi( @48/(byte*) print_line_cursor#60 ) + (byte*) print_screen#32 ← phi( @48/(byte*) print_screen#37 ) (byte[$19]) form_line_lo ← { fill( $19, 0) } (byte[$19]) form_line_hi ← { fill( $19, 0) } (byte) form_field_idx#4 ← (number) 0 @@ -3468,10 +3358,10 @@ form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@1 (byte*()) form_field_ptr((byte) form_field_ptr::field_idx) form_field_ptr: scope:[form_field_ptr] from form_control form_render_values::@2 (byte) form_field_ptr::field_idx#2 ← phi( form_control/(byte) form_field_ptr::field_idx#1 form_render_values::@2/(byte) form_field_ptr::field_idx#0 ) - (byte) form_field_ptr::y#0 ← *((byte[]) form_fields_y + (byte) form_field_ptr::field_idx#2) + (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y + (byte) form_field_ptr::field_idx#2) (byte*~) form_field_ptr::$0 ← ((byte*)) { *((byte[$19]) form_line_hi + (byte) form_field_ptr::y#0), *((byte[$19]) form_line_lo + (byte) form_field_ptr::y#0) } (byte*) form_field_ptr::line#0 ← (byte*~) form_field_ptr::$0 - (byte) form_field_ptr::x#0 ← *((byte[]) form_fields_x + (byte) form_field_ptr::field_idx#2) + (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x + (byte) form_field_ptr::field_idx#2) (byte*~) form_field_ptr::$1 ← (byte*) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 (byte*) form_field_ptr::field#0 ← (byte*~) form_field_ptr::$1 (byte*) form_field_ptr::return#0 ← (byte*) form_field_ptr::field#0 @@ -3502,7 +3392,7 @@ form_render_values::@7: scope:[form_render_values] from form_render_values::@2 (byte*) form_field_ptr::return#5 ← phi( form_render_values::@2/(byte*) form_field_ptr::return#2 ) (byte*~) form_render_values::$1 ← (byte*) form_field_ptr::return#5 (byte*) form_render_values::field#0 ← (byte*~) form_render_values::$1 - *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab + *((byte[]) form_fields_val + (byte) form_render_values::idx#4)) + *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab + *((const byte[]) form_fields_val + (byte) form_render_values::idx#4)) (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#4 to:form_render_values::@1 form_render_values::@return: scope:[form_render_values] from form_render_values::@1 @@ -3511,8 +3401,8 @@ form_render_values::@return: scope:[form_render_values] from form_render_values (byte()) form_control() form_control: scope:[form_control] from form_mode::@8 - (byte) keyboard_modifiers#94 ← phi( form_mode::@8/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#107 ← phi( form_mode::@8/(byte) keyboard_events_size#46 ) + (byte) keyboard_modifiers#92 ← phi( form_mode::@8/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#105 ← phi( form_mode::@8/(byte) keyboard_events_size#46 ) (signed byte) form_cursor_count#22 ← phi( form_mode::@8/(signed byte) form_cursor_count#20 ) (byte) form_field_idx#15 ← phi( form_mode::@8/(byte) form_field_idx#27 ) (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#15 @@ -3521,8 +3411,8 @@ form_control: scope:[form_control] from form_mode::@8 to:form_control::@33 form_control::@33: scope:[form_control] from form_control (byte) form_field_idx#59 ← phi( form_control/(byte) form_field_idx#15 ) - (byte) keyboard_modifiers#88 ← phi( form_control/(byte) keyboard_modifiers#94 ) - (byte) keyboard_events_size#97 ← phi( form_control/(byte) keyboard_events_size#107 ) + (byte) keyboard_modifiers#87 ← phi( form_control/(byte) keyboard_modifiers#92 ) + (byte) keyboard_events_size#96 ← phi( form_control/(byte) keyboard_events_size#105 ) (signed byte) form_cursor_count#14 ← phi( form_control/(signed byte) form_cursor_count#22 ) (byte*) form_field_ptr::return#6 ← phi( form_control/(byte*) form_field_ptr::return#3 ) (byte*~) form_control::$0 ← (byte*) form_field_ptr::return#6 @@ -3534,8 +3424,8 @@ form_control::@33: scope:[form_control] from form_control to:form_control::@7 form_control::@1: scope:[form_control] from form_control::@33 form_control::@7 (byte) form_field_idx#57 ← phi( form_control::@33/(byte) form_field_idx#59 form_control::@7/(byte) form_field_idx#60 ) - (byte) keyboard_modifiers#82 ← phi( form_control::@33/(byte) keyboard_modifiers#88 form_control::@7/(byte) keyboard_modifiers#89 ) - (byte) keyboard_events_size#86 ← phi( form_control::@33/(byte) keyboard_events_size#97 form_control::@7/(byte) keyboard_events_size#98 ) + (byte) keyboard_modifiers#82 ← phi( form_control::@33/(byte) keyboard_modifiers#87 form_control::@7/(byte) keyboard_modifiers#88 ) + (byte) keyboard_events_size#86 ← phi( form_control::@33/(byte) keyboard_events_size#96 form_control::@7/(byte) keyboard_events_size#97 ) (byte*) form_control::field#5 ← phi( form_control::@33/(byte*) form_control::field#0 form_control::@7/(byte*) form_control::field#11 ) (signed byte) form_cursor_count#15 ← phi( form_control::@33/(signed byte) form_cursor_count#5 form_control::@7/(signed byte) form_cursor_count#6 ) (bool~) form_control::$3 ← (signed byte) form_cursor_count#15 < (const signed byte) FORM_CURSOR_BLINK/(number) 2 @@ -3543,8 +3433,8 @@ form_control::@1: scope:[form_control] from form_control::@33 form_control::@7 to:form_control::@8 form_control::@7: scope:[form_control] from form_control::@33 (byte) form_field_idx#60 ← phi( form_control::@33/(byte) form_field_idx#59 ) - (byte) keyboard_modifiers#89 ← phi( form_control::@33/(byte) keyboard_modifiers#88 ) - (byte) keyboard_events_size#98 ← phi( form_control::@33/(byte) keyboard_events_size#97 ) + (byte) keyboard_modifiers#88 ← phi( form_control::@33/(byte) keyboard_modifiers#87 ) + (byte) keyboard_events_size#97 ← phi( form_control::@33/(byte) keyboard_events_size#96 ) (byte*) form_control::field#11 ← phi( form_control::@33/(byte*) form_control::field#0 ) (signed byte) form_cursor_count#6 ← (const signed byte) FORM_CURSOR_BLINK to:form_control::@1 @@ -3696,8 +3586,8 @@ form_control::@26: scope:[form_control] from form_control::@13 (signed byte) form_cursor_count#35 ← phi( form_control::@13/(signed byte) form_cursor_count#42 ) (byte*) form_control::field#9 ← phi( form_control::@13/(byte*) form_control::field#13 ) (byte) form_field_idx#19 ← phi( form_control::@13/(byte) form_field_idx#33 ) - *((byte[]) form_fields_val + (byte) form_field_idx#19) ← ++ *((byte[]) form_fields_val + (byte) form_field_idx#19) - (bool~) form_control::$26 ← *((byte[]) form_fields_val + (byte) form_field_idx#19) > *((byte[]) form_fields_max + (byte) form_field_idx#19) + *((const byte[]) form_fields_val + (byte) form_field_idx#19) ← ++ *((const byte[]) form_fields_val + (byte) form_field_idx#19) + (bool~) form_control::$26 ← *((const byte[]) form_fields_val + (byte) form_field_idx#19) > *((const byte[]) form_fields_max + (byte) form_field_idx#19) (bool~) form_control::$27 ← ! (bool~) form_control::$26 if((bool~) form_control::$27) goto form_control::@29 to:form_control::@31 @@ -3707,8 +3597,8 @@ form_control::@14: scope:[form_control] from form_control::@13 (signed byte) form_cursor_count#33 ← phi( form_control::@13/(signed byte) form_cursor_count#42 ) (byte*) form_control::field#7 ← phi( form_control::@13/(byte*) form_control::field#13 ) (byte) form_field_idx#20 ← phi( form_control::@13/(byte) form_field_idx#33 ) - *((byte[]) form_fields_val + (byte) form_field_idx#20) ← -- *((byte[]) form_fields_val + (byte) form_field_idx#20) - (bool~) form_control::$24 ← *((byte[]) form_fields_val + (byte) form_field_idx#20) == (number) $ff + *((const byte[]) form_fields_val + (byte) form_field_idx#20) ← -- *((const byte[]) form_fields_val + (byte) form_field_idx#20) + (bool~) form_control::$24 ← *((const byte[]) form_fields_val + (byte) form_field_idx#20) == (number) $ff (bool~) form_control::$25 ← ! (bool~) form_control::$24 if((bool~) form_control::$25) goto form_control::@29 to:form_control::@15 @@ -3718,7 +3608,7 @@ form_control::@15: scope:[form_control] from form_control::@14 (signed byte) form_cursor_count#34 ← phi( form_control::@14/(signed byte) form_cursor_count#33 ) (byte*) form_control::field#8 ← phi( form_control::@14/(byte*) form_control::field#7 ) (byte) form_field_idx#21 ← phi( form_control::@14/(byte) form_field_idx#20 ) - *((byte[]) form_fields_val + (byte) form_field_idx#21) ← *((byte[]) form_fields_max + (byte) form_field_idx#21) + *((const byte[]) form_fields_val + (byte) form_field_idx#21) ← *((const byte[]) form_fields_max + (byte) form_field_idx#21) to:form_control::@29 form_control::@29: scope:[form_control] from form_control::@14 form_control::@15 form_control::@26 form_control::@31 (byte) keyboard_modifiers#49 ← phi( form_control::@14/(byte) keyboard_modifiers#70 form_control::@15/(byte) keyboard_modifiers#71 form_control::@26/(byte) keyboard_modifiers#72 form_control::@31/(byte) keyboard_modifiers#73 ) @@ -3726,7 +3616,7 @@ form_control::@29: scope:[form_control] from form_control::@14 form_control::@1 (signed byte) form_cursor_count#24 ← phi( form_control::@14/(signed byte) form_cursor_count#33 form_control::@15/(signed byte) form_cursor_count#34 form_control::@26/(signed byte) form_cursor_count#35 form_control::@31/(signed byte) form_cursor_count#36 ) (byte*) form_control::field#4 ← phi( form_control::@14/(byte*) form_control::field#7 form_control::@15/(byte*) form_control::field#8 form_control::@26/(byte*) form_control::field#9 form_control::@31/(byte*) form_control::field#10 ) (byte) form_field_idx#22 ← phi( form_control::@14/(byte) form_field_idx#20 form_control::@15/(byte) form_field_idx#21 form_control::@26/(byte) form_field_idx#19 form_control::@31/(byte) form_field_idx#23 ) - *((byte*) form_control::field#4) ← *((const byte[]) print_hextab + *((byte[]) form_fields_val + (byte) form_field_idx#22)) + *((byte*) form_control::field#4) ← *((const byte[]) print_hextab + *((const byte[]) form_fields_val + (byte) form_field_idx#22)) (byte) form_control::return#3 ← (number) 0 to:form_control::@return form_control::@31: scope:[form_control] from form_control::@26 @@ -3735,7 +3625,7 @@ form_control::@31: scope:[form_control] from form_control::@26 (signed byte) form_cursor_count#36 ← phi( form_control::@26/(signed byte) form_cursor_count#35 ) (byte*) form_control::field#10 ← phi( form_control::@26/(byte*) form_control::field#9 ) (byte) form_field_idx#23 ← phi( form_control::@26/(byte) form_field_idx#19 ) - *((byte[]) form_fields_val + (byte) form_field_idx#23) ← (number) 0 + *((const byte[]) form_fields_val + (byte) form_field_idx#23) ← (number) 0 to:form_control::@29 form_control::@6: scope:[form_control] from form_control::@5 (byte) form_field_idx#32 ← phi( form_control::@5/(byte) form_field_idx#43 ) @@ -3780,49 +3670,9 @@ form_control::@16: scope:[form_control] from form_control::@5 @end: scope:[] from @86 SYMBOL TABLE SSA -(byte*~) $0 -(byte*~) $1 -(byte*~) $10 -(byte*~) $11 -(byte*~) $12 -(byte*~) $13 -(byte*~) $14 -(byte*~) $15 -(byte*~) $16 -(byte*~) $17 -(byte*~) $18 -(byte*~) $19 -(byte*~) $2 -(byte*~) $20 -(byte*~) $21 -(byte*~) $22 -(byte*~) $23 -(byte*~) $24 -(byte*~) $25 -(byte*~) $26 -(byte*~) $27 -(byte*~) $28 -(byte*~) $29 -(byte*~) $3 -(byte*~) $30 -(byte*~) $31 -(byte*~) $32 -(byte*~) $33 -(byte*~) $34 -(byte*~) $35 -(byte*~) $4 -(byte*~) $5 -(byte*~) $6 -(byte*~) $7 -(byte*~) $8 -(byte*~) $9 (label) @17 -(label) @4 -(label) @41 (label) @45 (label) @48 -(label) @60 -(label) @62 (label) @81 (label) @85 (label) @86 @@ -3856,7 +3706,7 @@ SYMBOL TABLE SSA (const byte) DTV_LINEAR = (number) 1 (const byte) DTV_OVERSCAN = (number) 8 (const byte*) DTV_PALETTE = (byte*)(number) $d200 -(byte[$10]) DTV_PALETTE_DEFAULT +(const byte[$10]) DTV_PALETTE_DEFAULT = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a } (const byte*) DTV_PLANEA_MODULO_HI = (byte*)(number) $d039 (const byte*) DTV_PLANEA_MODULO_LO = (byte*)(number) $d038 (const byte*) DTV_PLANEA_START_HI = (byte*)(number) $d045 @@ -4497,20 +4347,20 @@ SYMBOL TABLE SSA (byte) dtvSetCpuBankSegment1::cpuBankIdx#7 (byte) dtvSetCpuBankSegment1::cpuBankIdx#8 (byte) dtvSetCpuBankSegment1::cpuBankIdx#9 -(byte*) form_a_mod_hi -(byte*) form_a_mod_lo -(byte*) form_a_pattern -(byte*) form_a_start_hi -(byte*) form_a_start_lo -(byte*) form_a_step_hi -(byte*) form_a_step_lo -(byte*) form_b_mod_hi -(byte*) form_b_mod_lo -(byte*) form_b_pattern -(byte*) form_b_start_hi -(byte*) form_b_start_lo -(byte*) form_b_step_hi -(byte*) form_b_step_lo +(const byte*) form_a_mod_hi = (const byte[]) form_fields_val+(number) $f +(const byte*) form_a_mod_lo = (const byte[]) form_fields_val+(number) $10 +(const byte*) form_a_pattern = (const byte[]) form_fields_val+(number) $a +(const byte*) form_a_start_hi = (const byte[]) form_fields_val+(number) $b +(const byte*) form_a_start_lo = (const byte[]) form_fields_val+(number) $c +(const byte*) form_a_step_hi = (const byte[]) form_fields_val+(number) $d +(const byte*) form_a_step_lo = (const byte[]) form_fields_val+(number) $e +(const byte*) form_b_mod_hi = (const byte[]) form_fields_val+(number) $16 +(const byte*) form_b_mod_lo = (const byte[]) form_fields_val+(number) $17 +(const byte*) form_b_pattern = (const byte[]) form_fields_val+(number) $11 +(const byte*) form_b_start_hi = (const byte[]) form_fields_val+(number) $12 +(const byte*) form_b_start_lo = (const byte[]) form_fields_val+(number) $13 +(const byte*) form_b_step_hi = (const byte[]) form_fields_val+(number) $14 +(const byte*) form_b_step_lo = (const byte[]) form_fields_val+(number) $15 (byte()) form_control() (byte*~) form_control::$0 (bool~) form_control::$1 @@ -4594,15 +4444,15 @@ SYMBOL TABLE SSA (byte) form_control::return#5 (byte) form_control::return#6 (byte) form_control::return#7 -(byte*) form_ctrl_bmm -(byte*) form_ctrl_borof -(byte*) form_ctrl_chunk -(byte*) form_ctrl_colof -(byte*) form_ctrl_ecm -(byte*) form_ctrl_hicol -(byte*) form_ctrl_line -(byte*) form_ctrl_mcm -(byte*) form_ctrl_overs +(const byte*) form_ctrl_bmm = (const byte[]) form_fields_val+(number) 1 +(const byte*) form_ctrl_borof = (const byte[]) form_fields_val+(number) 8 +(const byte*) form_ctrl_chunk = (const byte[]) form_fields_val+(number) 7 +(const byte*) form_ctrl_colof = (const byte[]) form_fields_val+(number) 6 +(const byte*) form_ctrl_ecm = (const byte[]) form_fields_val+(number) 3 +(const byte*) form_ctrl_hicol = (const byte[]) form_fields_val+(number) 4 +(const byte*) form_ctrl_line = (const byte[]) form_fields_val+(number) 5 +(const byte*) form_ctrl_mcm = (const byte[]) form_fields_val+(number) 2 +(const byte*) form_ctrl_overs = (const byte[]) form_fields_val+(number) 9 (signed byte) form_cursor_count (signed byte) form_cursor_count#0 (signed byte) form_cursor_count#1 @@ -4665,7 +4515,7 @@ SYMBOL TABLE SSA (signed byte) form_cursor_count#7 (signed byte) form_cursor_count#8 (signed byte) form_cursor_count#9 -(byte*) form_dtv_palet +(const byte*) form_dtv_palet = (const byte[]) form_fields_val+(number) $1b (byte) form_field_idx (byte) form_field_idx#0 (byte) form_field_idx#1 @@ -4759,10 +4609,10 @@ SYMBOL TABLE SSA (byte) form_field_ptr::y (byte) form_field_ptr::y#0 (const byte) form_fields_cnt = (byte) $24 -(byte[]) form_fields_max -(byte[]) form_fields_val -(byte[]) form_fields_x -(byte[]) form_fields_y +(const byte[]) form_fields_max = { (byte)(number) $a, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) 3, (byte)(number) 1, (byte)(number) 4, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f } +(const byte[]) form_fields_val = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) form_fields_x = { (byte)(number) 8, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25 } +(const byte[]) form_fields_y = { (byte)(number) 2, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) 5, (byte)(number) 6, (byte)(number) 6, (byte)(number) 7, (byte)(number) 7, (byte)(number) 8, (byte)(number) 8, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) $a, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e } (byte[$19]) form_line_hi (byte[$19]) form_line_lo (void()) form_mode() @@ -4827,7 +4677,7 @@ SYMBOL TABLE SSA (byte) form_mode::preset_current#6 (byte) form_mode::preset_current#7 (byte) form_mode::preset_current#8 -(byte*) form_preset +(const byte*) form_preset = (const byte[]) form_fields_val+(number) 0 (void()) form_render_values() (bool~) form_render_values::$0 (byte*~) form_render_values::$1 @@ -4861,17 +4711,17 @@ SYMBOL TABLE SSA (byte) form_set_screen::y#0 (byte) form_set_screen::y#1 (byte) form_set_screen::y#2 -(byte*) form_vic_bg0_hi -(byte*) form_vic_bg0_lo -(byte*) form_vic_bg1_hi -(byte*) form_vic_bg1_lo -(byte*) form_vic_bg2_hi -(byte*) form_vic_bg2_lo -(byte*) form_vic_bg3_hi -(byte*) form_vic_bg3_lo -(byte*) form_vic_cols -(byte*) form_vic_gfx -(byte*) form_vic_screen +(const byte*) form_vic_bg0_hi = (const byte[]) form_fields_val+(number) $1c +(const byte*) form_vic_bg0_lo = (const byte[]) form_fields_val+(number) $1d +(const byte*) form_vic_bg1_hi = (const byte[]) form_fields_val+(number) $1e +(const byte*) form_vic_bg1_lo = (const byte[]) form_fields_val+(number) $1f +(const byte*) form_vic_bg2_hi = (const byte[]) form_fields_val+(number) $20 +(const byte*) form_vic_bg2_lo = (const byte[]) form_fields_val+(number) $21 +(const byte*) form_vic_bg3_hi = (const byte[]) form_fields_val+(number) $22 +(const byte*) form_vic_bg3_lo = (const byte[]) form_fields_val+(number) $23 +(const byte*) form_vic_cols = (const byte[]) form_fields_val+(number) $1a +(const byte*) form_vic_gfx = (const byte[]) form_fields_val+(number) $19 +(const byte*) form_vic_screen = (const byte[]) form_fields_val+(number) $18 (dword()) get_plane((byte) get_plane::idx) (bool~) get_plane::$0 (bool~) get_plane::$1 @@ -5364,7 +5214,7 @@ SYMBOL TABLE SSA (byte) gfx_init_plane_horisontal2::gfxbCpuBank#2 (byte) gfx_init_plane_horisontal2::row (byte) gfx_init_plane_horisontal2::row#0 -(byte[]) gfx_init_plane_horisontal2::row_bitmask +(const byte[]) gfx_init_plane_horisontal2::row_bitmask = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff } (void()) gfx_init_plane_vertical() (byte~) gfx_init_plane_vertical::$0 (byte~) gfx_init_plane_vertical::$2 @@ -5551,8 +5401,8 @@ SYMBOL TABLE SSA (byte) gfx_init_vic_bitmap::l#3 (byte) gfx_init_vic_bitmap::l#4 (const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9 -(byte[]) gfx_init_vic_bitmap::lines_x -(byte[]) gfx_init_vic_bitmap::lines_y +(const byte[]) gfx_init_vic_bitmap::lines_x = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 } +(const byte[]) gfx_init_vic_bitmap::lines_y = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 } (void()) gfx_mode() (bool~) gfx_mode::$0 (bool~) gfx_mode::$1 @@ -5956,8 +5806,6 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#143 (byte) keyboard_events_size#144 (byte) keyboard_events_size#145 -(byte) keyboard_events_size#146 -(byte) keyboard_events_size#147 (byte) keyboard_events_size#15 (byte) keyboard_events_size#16 (byte) keyboard_events_size#17 @@ -6053,7 +5901,7 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#99 (void()) keyboard_init() (label) keyboard_init::@return -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -6068,7 +5916,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (byte) keyboard_modifiers (byte) keyboard_modifiers#0 (byte) keyboard_modifiers#1 @@ -6102,8 +5950,6 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#124 (byte) keyboard_modifiers#125 (byte) keyboard_modifiers#126 -(byte) keyboard_modifiers#127 -(byte) keyboard_modifiers#128 (byte) keyboard_modifiers#13 (byte) keyboard_modifiers#14 (byte) keyboard_modifiers#15 @@ -6250,17 +6096,17 @@ SYMBOL TABLE SSA (void*) memset::str#3 (void*) memset::str#4 (void*) memset::str#5 -(byte[]) preset_8bpppixelcell -(byte[]) preset_chunky -(byte[]) preset_ecmchar -(byte[]) preset_hi_ecmchar -(byte[]) preset_hi_stdchar -(byte[]) preset_mcbm -(byte[]) preset_sixsfred -(byte[]) preset_sixsfred2 -(byte[]) preset_stdbm -(byte[]) preset_stdchar -(byte[]) preset_twoplane +(const byte[]) preset_8bpppixelcell = { (byte)(number) $a, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_chunky = { (byte)(number) 7, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 6, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_ecmchar = { (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 0, (byte)(number) 5, (byte)(number) 0, (byte)(number) 6 } +(const byte[]) preset_hi_ecmchar = { (byte)(number) 5, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 8, (byte)(number) 9, (byte)(number) $c, (byte)(number) $c } +(const byte[]) preset_hi_stdchar = { (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_mcbm = { (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_sixsfred = { (byte)(number) 8, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_sixsfred2 = { (byte)(number) 9, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_stdbm = { (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_stdchar = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) preset_twoplane = { (byte)(number) 6, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 7, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 7, (byte)(number) 0, (byte)(number) $d, (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -6327,10 +6173,7 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#65 (byte*) print_char_cursor#66 (byte*) print_char_cursor#67 -(byte*) print_char_cursor#68 -(byte*) print_char_cursor#69 (byte*) print_char_cursor#7 -(byte*) print_char_cursor#70 (byte*) print_char_cursor#8 (byte*) print_char_cursor#9 (void()) print_cls() @@ -6403,10 +6246,7 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#65 (byte*) print_line_cursor#66 (byte*) print_line_cursor#67 -(byte*) print_line_cursor#68 -(byte*) print_line_cursor#69 (byte*) print_line_cursor#7 -(byte*) print_line_cursor#70 (byte*) print_line_cursor#8 (byte*) print_line_cursor#9 (void()) print_ln() @@ -6458,9 +6298,6 @@ SYMBOL TABLE SSA (byte*) print_screen#44 (byte*) print_screen#45 (byte*) print_screen#46 -(byte*) print_screen#47 -(byte*) print_screen#48 -(byte*) print_screen#49 (byte*) print_screen#5 (byte*) print_screen#6 (byte*) print_screen#7 @@ -6600,6 +6437,42 @@ Fixing inline constructor with bitmap_plot::$2 ← (byte)*(bitmap_plot_xhi + bit Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#4) Fixing inline constructor with form_field_ptr::$2 ← (byte)*(form_line_hi + form_field_ptr::y#0) w= (byte)*(form_line_lo + form_field_ptr::y#0) Successful SSA optimization Pass2FixInlineConstructors +Adding number conversion cast (unumber) 0 in +Adding number conversion cast (unumber) 1 in +Adding number conversion cast (unumber) 2 in +Adding number conversion cast (unumber) 3 in +Adding number conversion cast (unumber) 4 in +Adding number conversion cast (unumber) 5 in +Adding number conversion cast (unumber) 6 in +Adding number conversion cast (unumber) 7 in +Adding number conversion cast (unumber) 8 in +Adding number conversion cast (unumber) 9 in +Adding number conversion cast (unumber) $a in +Adding number conversion cast (unumber) $b in +Adding number conversion cast (unumber) $c in +Adding number conversion cast (unumber) $d in +Adding number conversion cast (unumber) $e in +Adding number conversion cast (unumber) $f in +Adding number conversion cast (unumber) $10 in +Adding number conversion cast (unumber) $11 in +Adding number conversion cast (unumber) $12 in +Adding number conversion cast (unumber) $13 in +Adding number conversion cast (unumber) $14 in +Adding number conversion cast (unumber) $15 in +Adding number conversion cast (unumber) $16 in +Adding number conversion cast (unumber) $17 in +Adding number conversion cast (unumber) $18 in +Adding number conversion cast (unumber) $19 in +Adding number conversion cast (unumber) $1a in +Adding number conversion cast (unumber) $1b in +Adding number conversion cast (unumber) $1c in +Adding number conversion cast (unumber) $1d in +Adding number conversion cast (unumber) $1e in +Adding number conversion cast (unumber) $1f in +Adding number conversion cast (unumber) $20 in +Adding number conversion cast (unumber) $21 in +Adding number conversion cast (unumber) $22 in +Adding number conversion cast (unumber) $23 in Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (unumber) 0 in (bool~) print_str_lines::$2 ← (number) 0 != *((byte*) print_str_lines::str#3) Adding number conversion cast (unumber) 0 in (bool~) print_str_lines::$4 ← (number) 0 != (byte) print_str_lines::ch#0 @@ -6703,73 +6576,37 @@ Adding number conversion cast (unumber) 9 in (bool~) render_preset_name::$9 ← Adding number conversion cast (unumber) $a in (bool~) render_preset_name::$10 ← (byte) render_preset_name::idx#12 == (number) $a Adding number conversion cast (unumber) $a in (byte*) print_str_at::at#1 ← (const byte*) FORM_SCREEN+(number) $28*(number) 2+(number) $a Adding number conversion cast (unumber) $28*2 in (byte*) print_str_at::at#1 ← (const byte*) FORM_SCREEN+(number) $28*(number) 2+(unumber)(number) $a -Adding number conversion cast (unumber) 0 in (byte*~) $0 ← (byte[]) form_fields_val + (number) 0 -Adding number conversion cast (unumber) 1 in (byte*~) $1 ← (byte[]) form_fields_val + (number) 1 -Adding number conversion cast (unumber) 2 in (byte*~) $2 ← (byte[]) form_fields_val + (number) 2 -Adding number conversion cast (unumber) 3 in (byte*~) $3 ← (byte[]) form_fields_val + (number) 3 -Adding number conversion cast (unumber) 4 in (byte*~) $4 ← (byte[]) form_fields_val + (number) 4 -Adding number conversion cast (unumber) 5 in (byte*~) $5 ← (byte[]) form_fields_val + (number) 5 -Adding number conversion cast (unumber) 6 in (byte*~) $6 ← (byte[]) form_fields_val + (number) 6 -Adding number conversion cast (unumber) 7 in (byte*~) $7 ← (byte[]) form_fields_val + (number) 7 -Adding number conversion cast (unumber) 8 in (byte*~) $8 ← (byte[]) form_fields_val + (number) 8 -Adding number conversion cast (unumber) 9 in (byte*~) $9 ← (byte[]) form_fields_val + (number) 9 -Adding number conversion cast (unumber) $a in (byte*~) $10 ← (byte[]) form_fields_val + (number) $a -Adding number conversion cast (unumber) $b in (byte*~) $11 ← (byte[]) form_fields_val + (number) $b -Adding number conversion cast (unumber) $c in (byte*~) $12 ← (byte[]) form_fields_val + (number) $c -Adding number conversion cast (unumber) $d in (byte*~) $13 ← (byte[]) form_fields_val + (number) $d -Adding number conversion cast (unumber) $e in (byte*~) $14 ← (byte[]) form_fields_val + (number) $e -Adding number conversion cast (unumber) $f in (byte*~) $15 ← (byte[]) form_fields_val + (number) $f -Adding number conversion cast (unumber) $10 in (byte*~) $16 ← (byte[]) form_fields_val + (number) $10 -Adding number conversion cast (unumber) $11 in (byte*~) $17 ← (byte[]) form_fields_val + (number) $11 -Adding number conversion cast (unumber) $12 in (byte*~) $18 ← (byte[]) form_fields_val + (number) $12 -Adding number conversion cast (unumber) $13 in (byte*~) $19 ← (byte[]) form_fields_val + (number) $13 -Adding number conversion cast (unumber) $14 in (byte*~) $20 ← (byte[]) form_fields_val + (number) $14 -Adding number conversion cast (unumber) $15 in (byte*~) $21 ← (byte[]) form_fields_val + (number) $15 -Adding number conversion cast (unumber) $16 in (byte*~) $22 ← (byte[]) form_fields_val + (number) $16 -Adding number conversion cast (unumber) $17 in (byte*~) $23 ← (byte[]) form_fields_val + (number) $17 -Adding number conversion cast (unumber) $18 in (byte*~) $24 ← (byte[]) form_fields_val + (number) $18 -Adding number conversion cast (unumber) $19 in (byte*~) $25 ← (byte[]) form_fields_val + (number) $19 -Adding number conversion cast (unumber) $1a in (byte*~) $26 ← (byte[]) form_fields_val + (number) $1a -Adding number conversion cast (unumber) $1b in (byte*~) $27 ← (byte[]) form_fields_val + (number) $1b -Adding number conversion cast (unumber) $1c in (byte*~) $28 ← (byte[]) form_fields_val + (number) $1c -Adding number conversion cast (unumber) $1d in (byte*~) $29 ← (byte[]) form_fields_val + (number) $1d -Adding number conversion cast (unumber) $1e in (byte*~) $30 ← (byte[]) form_fields_val + (number) $1e -Adding number conversion cast (unumber) $1f in (byte*~) $31 ← (byte[]) form_fields_val + (number) $1f -Adding number conversion cast (unumber) $20 in (byte*~) $32 ← (byte[]) form_fields_val + (number) $20 -Adding number conversion cast (unumber) $21 in (byte*~) $33 ← (byte[]) form_fields_val + (number) $21 -Adding number conversion cast (unumber) $22 in (byte*~) $34 ← (byte[]) form_fields_val + (number) $22 -Adding number conversion cast (unumber) $23 in (byte*~) $35 ← (byte[]) form_fields_val + (number) $23 Adding number conversion cast (unumber) 0 in (byte) gfx_mode::dtv_control#0 ← (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$0 ← *((byte*) form_ctrl_line) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$2 ← *((byte*) form_ctrl_borof) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$4 ← *((byte*) form_ctrl_hicol) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$6 ← *((byte*) form_ctrl_overs) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$8 ← *((byte*) form_ctrl_colof) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$10 ← *((byte*) form_ctrl_chunk) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$0 ← *((const byte*) form_ctrl_line) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$2 ← *((const byte*) form_ctrl_borof) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$4 ← *((const byte*) form_ctrl_hicol) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$6 ← *((const byte*) form_ctrl_overs) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$8 ← *((const byte*) form_ctrl_colof) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$10 ← *((const byte*) form_ctrl_chunk) != (number) 0 Adding number conversion cast (unumber) VIC_DEN|VIC_RSEL|3 in (byte) gfx_mode::vic_control#0 ← (const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3 Adding number conversion cast (unumber) 3 in (byte) gfx_mode::vic_control#0 ← ((unumber)) (const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$12 ← *((byte*) form_ctrl_ecm) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$14 ← *((byte*) form_ctrl_bmm) != (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$16 ← *((byte*) form_ctrl_mcm) != (number) 0 -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$18 ← *((byte*) form_a_start_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$18 in (number~) gfx_mode::$18 ← *((byte*) form_a_start_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$19 in (number~) gfx_mode::$19 ← (unumber~) gfx_mode::$18 | *((byte*) form_a_start_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$28 ← *((byte*) form_a_step_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$28 in (number~) gfx_mode::$28 ← *((byte*) form_a_step_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$29 in (number~) gfx_mode::$29 ← (unumber~) gfx_mode::$28 | *((byte*) form_a_step_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$30 ← *((byte*) form_a_mod_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$30 in (number~) gfx_mode::$30 ← *((byte*) form_a_mod_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$31 in (number~) gfx_mode::$31 ← (unumber~) gfx_mode::$30 | *((byte*) form_a_mod_lo) +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$12 ← *((const byte*) form_ctrl_ecm) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$14 ← *((const byte*) form_ctrl_bmm) != (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$16 ← *((const byte*) form_ctrl_mcm) != (number) 0 +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$18 in (number~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$19 in (number~) gfx_mode::$19 ← (unumber~) gfx_mode::$18 | *((const byte*) form_a_start_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$28 in (number~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$29 in (number~) gfx_mode::$29 ← (unumber~) gfx_mode::$28 | *((const byte*) form_a_step_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$30 in (number~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$31 in (number~) gfx_mode::$31 ← (unumber~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) Adding number conversion cast (unumber) 0 in *((const byte*) DTV_PLANEA_MODULO_HI) ← (number) 0 -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$32 ← *((byte*) form_b_start_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$32 in (number~) gfx_mode::$32 ← *((byte*) form_b_start_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$33 in (number~) gfx_mode::$33 ← (unumber~) gfx_mode::$32 | *((byte*) form_b_start_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$42 ← *((byte*) form_b_step_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$42 in (number~) gfx_mode::$42 ← *((byte*) form_b_step_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$43 in (number~) gfx_mode::$43 ← (unumber~) gfx_mode::$42 | *((byte*) form_b_step_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$44 ← *((byte*) form_b_mod_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$44 in (number~) gfx_mode::$44 ← *((byte*) form_b_mod_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$45 in (number~) gfx_mode::$45 ← (unumber~) gfx_mode::$44 | *((byte*) form_b_mod_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$32 in (number~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$33 in (number~) gfx_mode::$33 ← (unumber~) gfx_mode::$32 | *((const byte*) form_b_start_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$42 in (number~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$43 in (number~) gfx_mode::$43 ← (unumber~) gfx_mode::$42 | *((const byte*) form_b_step_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$44 in (number~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$45 in (number~) gfx_mode::$45 ← (unumber~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) Adding number conversion cast (unumber) 0 in *((const byte*) DTV_PLANEB_MODULO_HI) ← (number) 0 Adding number conversion cast (unumber) 3 in *((const byte*) CIA2_PORT_A_DDR) ← (number) 3 Adding number conversion cast (unumber) $4000 in (number~) gfx_mode::$47 ← (word~) gfx_mode::$46 / (number) $4000 @@ -6787,19 +6624,19 @@ Adding number conversion cast (unumber) 4 in (number~) gfx_mode::$59 ← (unumbe Adding number conversion cast (unumber) gfx_mode::$59 in (number~) gfx_mode::$59 ← (unumber~) gfx_mode::$58 / (unumber)(number) 4 Adding number conversion cast (unumber) gfx_mode::$60 in (number~) gfx_mode::$60 ← (byte~) gfx_mode::$54 | (unumber~) gfx_mode::$59 Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (number) 0 -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$62 ← *((byte*) form_vic_bg0_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$62 in (number~) gfx_mode::$62 ← *((byte*) form_vic_bg0_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$63 in (number~) gfx_mode::$63 ← (unumber~) gfx_mode::$62 | *((byte*) form_vic_bg0_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$64 ← *((byte*) form_vic_bg1_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$64 in (number~) gfx_mode::$64 ← *((byte*) form_vic_bg1_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$65 in (number~) gfx_mode::$65 ← (unumber~) gfx_mode::$64 | *((byte*) form_vic_bg1_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$66 ← *((byte*) form_vic_bg2_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$66 in (number~) gfx_mode::$66 ← *((byte*) form_vic_bg2_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$67 in (number~) gfx_mode::$67 ← (unumber~) gfx_mode::$66 | *((byte*) form_vic_bg2_lo) -Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$68 ← *((byte*) form_vic_bg3_hi) * (number) $10 -Adding number conversion cast (unumber) gfx_mode::$68 in (number~) gfx_mode::$68 ← *((byte*) form_vic_bg3_hi) * (unumber)(number) $10 -Adding number conversion cast (unumber) gfx_mode::$69 in (number~) gfx_mode::$69 ← (unumber~) gfx_mode::$68 | *((byte*) form_vic_bg3_lo) -Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$70 ← *((byte*) form_dtv_palet) == (number) 0 +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$62 in (number~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$63 in (number~) gfx_mode::$63 ← (unumber~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$64 in (number~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$65 in (number~) gfx_mode::$65 ← (unumber~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$66 in (number~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$67 in (number~) gfx_mode::$67 ← (unumber~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) +Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) * (number) $10 +Adding number conversion cast (unumber) gfx_mode::$68 in (number~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) * (unumber)(number) $10 +Adding number conversion cast (unumber) gfx_mode::$69 in (number~) gfx_mode::$69 ← (unumber~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) +Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$70 ← *((const byte*) form_dtv_palet) == (number) 0 Adding number conversion cast (unumber) $ff in (bool~) gfx_mode::$84 ← *((const byte*) RASTER) != (number) $ff Adding number conversion cast (unumber) $32 in *((const byte*) PROCPORT) ← (number) $32 Adding number conversion cast (unumber) $37 in *((const byte*) PROCPORT) ← (number) $37 @@ -6919,9 +6756,9 @@ Adding number conversion cast (snumber) 2 in (signed byte) form_cursor_count#7 Adding number conversion cast (unumber) 0 in (byte) form_control::return#1 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) form_field_idx#8 ← (number) 0 Adding number conversion cast (unumber) 0 in (bool~) form_control::$23 ← (byte~) form_control::$22 == (number) 0 -Adding number conversion cast (unumber) $ff in (bool~) form_control::$24 ← *((byte[]) form_fields_val + (byte) form_field_idx#20) == (number) $ff +Adding number conversion cast (unumber) $ff in (bool~) form_control::$24 ← *((const byte[]) form_fields_val + (byte) form_field_idx#20) == (number) $ff Adding number conversion cast (unumber) 0 in (byte) form_control::return#3 ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte[]) form_fields_val + (byte) form_field_idx#23) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((const byte[]) form_fields_val + (byte) form_field_idx#23) ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) form_control::return#4 ← (number) 0 Adding number conversion cast (unumber) $ff in (byte) form_control::return#5 ← (number) $ff Successful SSA optimization PassNAddNumberTypeConversions @@ -6930,28 +6767,6 @@ Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_horisont Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_vertical::gfxb#0 ← ((byte*)) (number) $4000+(const dword) PLANE_VERTICAL&(unumber)(number) $3fff Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_charset8::gfxa#0 ← ((byte*)) (number) $4000+(const dword) PLANE_CHARSET8&(unumber)(number) $3fff Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[$10]) DTV_PALETTE_DEFAULT ← (byte[$10]){ (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a } -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Added casts to value list in (byte[]) form_fields_x ← (byte[]){ (byte)(number) 8, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25 } -Added casts to value list in (byte[]) form_fields_y ← (byte[]){ (byte)(number) 2, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) 5, (byte)(number) 6, (byte)(number) 6, (byte)(number) 7, (byte)(number) 7, (byte)(number) 8, (byte)(number) 8, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) $a, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e } -Added casts to value list in (byte[]) form_fields_max ← (byte[]){ (byte)(number) $a, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) 3, (byte)(number) 1, (byte)(number) 4, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f } -Added casts to value list in (byte[]) form_fields_val ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_stdchar ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_ecmchar ← (byte[]){ (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 0, (byte)(number) 5, (byte)(number) 0, (byte)(number) 6 } -Added casts to value list in (byte[]) preset_stdbm ← (byte[]){ (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_mcbm ← (byte[]){ (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_hi_stdchar ← (byte[]){ (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_hi_ecmchar ← (byte[]){ (byte)(number) 5, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 8, (byte)(number) 9, (byte)(number) $c, (byte)(number) $c } -Added casts to value list in (byte[]) preset_twoplane ← (byte[]){ (byte)(number) 6, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 7, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 7, (byte)(number) 0, (byte)(number) $d, (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_chunky ← (byte[]){ (byte)(number) 7, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 6, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_sixsfred ← (byte[]){ (byte)(number) 8, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_sixsfred2 ← (byte[]){ (byte)(number) 9, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) preset_8bpppixelcell ← (byte[]){ (byte)(number) $a, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) gfx_init_vic_bitmap::lines_x ← (byte[]){ (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 } -Added casts to value list in (byte[]) gfx_init_vic_bitmap::lines_y ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 } -Added casts to value list in (byte[]) gfx_init_plane_horisontal2::row_bitmask ← (byte[]){ (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -7048,7 +6863,7 @@ Inlining cast (signed byte) form_cursor_count#7 ← (snumber)(const signed byte) Inlining cast (byte) form_control::return#1 ← (unumber)(number) 0 Inlining cast (byte) form_field_idx#8 ← (unumber)(number) 0 Inlining cast (byte) form_control::return#3 ← (unumber)(number) 0 -Inlining cast *((byte[]) form_fields_val + (byte) form_field_idx#23) ← (unumber)(number) 0 +Inlining cast *((const byte[]) form_fields_val + (byte) form_field_idx#23) ← (unumber)(number) 0 Inlining cast (byte) form_control::return#4 ← (unumber)(number) 0 Inlining cast (byte) form_control::return#5 ← (unumber)(number) $ff Successful SSA optimization Pass2InlineCast @@ -7075,31 +6890,6 @@ Simplifying constant pointer cast (byte*) 56578 Simplifying constant pointer cast (byte*) 53311 Simplifying constant pointer cast (byte*) 53308 Simplifying constant pointer cast (byte*) 53760 -Simplifying constant pointer cast (byte*) 53306 -Simplifying constant pointer cast (byte*) 53307 -Simplifying constant pointer cast (byte*) 53317 -Simplifying constant pointer cast (byte*) 53318 -Simplifying constant pointer cast (byte*) 53304 -Simplifying constant pointer cast (byte*) 53305 -Simplifying constant pointer cast (byte*) 53321 -Simplifying constant pointer cast (byte*) 53322 -Simplifying constant pointer cast (byte*) 53323 -Simplifying constant pointer cast (byte*) 53324 -Simplifying constant pointer cast (byte*) 53319 -Simplifying constant pointer cast (byte*) 53320 -Simplifying constant pointer cast (byte*) 53302 -Simplifying constant pointer cast (byte*) 53303 -Simplifying constant pointer cast (byte*) 53309 -Simplifying constant pointer cast (byte*) 255 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 17408 -Simplifying constant pointer cast (byte*) 18432 -Simplifying constant pointer cast (byte*) 19456 -Simplifying constant pointer cast (byte*) 20480 -Simplifying constant pointer cast (byte*) 22528 -Simplifying constant pointer cast (byte*) 24576 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 6144 Simplifying constant integer cast 0 Simplifying constant integer cast $f Simplifying constant integer cast $36 @@ -7116,14 +6906,22 @@ Simplifying constant integer cast 7 Simplifying constant integer cast $df Simplifying constant integer cast $9a Simplifying constant integer cast $a -Simplifying constant integer cast 0 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $28 -Simplifying constant integer cast $3e8 +Simplifying constant pointer cast (byte*) 53306 +Simplifying constant pointer cast (byte*) 53307 +Simplifying constant pointer cast (byte*) 53317 +Simplifying constant pointer cast (byte*) 53318 +Simplifying constant pointer cast (byte*) 53304 +Simplifying constant pointer cast (byte*) 53305 +Simplifying constant pointer cast (byte*) 53321 +Simplifying constant pointer cast (byte*) 53322 +Simplifying constant pointer cast (byte*) 53323 +Simplifying constant pointer cast (byte*) 53324 +Simplifying constant pointer cast (byte*) 53319 +Simplifying constant pointer cast (byte*) 53320 +Simplifying constant pointer cast (byte*) 53302 +Simplifying constant pointer cast (byte*) 53303 +Simplifying constant pointer cast (byte*) 53309 +Simplifying constant pointer cast (byte*) 255 Simplifying constant integer cast $fe Simplifying constant integer cast $fd Simplifying constant integer cast $fb @@ -7140,6 +6938,623 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 +Simplifying constant pointer cast (byte*) 16384 +Simplifying constant pointer cast (byte*) 17408 +Simplifying constant pointer cast (byte*) 18432 +Simplifying constant pointer cast (byte*) 19456 +Simplifying constant pointer cast (byte*) 20480 +Simplifying constant pointer cast (byte*) 22528 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 6144 +Simplifying constant integer cast 8 +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $19 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $19 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $25 +Simplifying constant integer cast $25 +Simplifying constant integer cast $25 +Simplifying constant integer cast $25 +Simplifying constant integer cast $24 +Simplifying constant integer cast $25 +Simplifying constant integer cast $24 +Simplifying constant integer cast $25 +Simplifying constant integer cast $24 +Simplifying constant integer cast $25 +Simplifying constant integer cast $24 +Simplifying constant integer cast $25 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast 8 +Simplifying constant integer cast 9 +Simplifying constant integer cast $a +Simplifying constant integer cast $b +Simplifying constant integer cast $c +Simplifying constant integer cast $d +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 +Simplifying constant integer cast $b +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $d +Simplifying constant integer cast $d +Simplifying constant integer cast $e +Simplifying constant integer cast $e +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast $a +Simplifying constant integer cast $b +Simplifying constant integer cast $b +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast $d +Simplifying constant integer cast $d +Simplifying constant integer cast $e +Simplifying constant integer cast $e +Simplifying constant integer cast $a +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast $d +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $d +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 4 +Simplifying constant integer cast 1 +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast $f +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 2 +Simplifying constant integer cast 0 +Simplifying constant integer cast 5 +Simplifying constant integer cast 0 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 9 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 4 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 5 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 3 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 8 +Simplifying constant integer cast 9 +Simplifying constant integer cast $c +Simplifying constant integer cast $c +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 7 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 7 +Simplifying constant integer cast 0 +Simplifying constant integer cast $d +Simplifying constant integer cast 4 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 7 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 6 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 9 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $a +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 9 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 9 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $a +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $a +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $b +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 3 +Simplifying constant integer cast 4 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast 8 +Simplifying constant integer cast 9 +Simplifying constant integer cast $a +Simplifying constant integer cast $b +Simplifying constant integer cast $c +Simplifying constant integer cast $d +Simplifying constant integer cast $e +Simplifying constant integer cast $f +Simplifying constant integer cast $10 +Simplifying constant integer cast $11 +Simplifying constant integer cast $12 +Simplifying constant integer cast $13 +Simplifying constant integer cast $14 +Simplifying constant integer cast $15 +Simplifying constant integer cast $16 +Simplifying constant integer cast $17 +Simplifying constant integer cast $18 +Simplifying constant integer cast $19 +Simplifying constant integer cast $1a +Simplifying constant integer cast $1b +Simplifying constant integer cast $1c +Simplifying constant integer cast $1d +Simplifying constant integer cast $1e +Simplifying constant integer cast $1f +Simplifying constant integer cast $20 +Simplifying constant integer cast $21 +Simplifying constant integer cast $22 +Simplifying constant integer cast $23 +Simplifying constant integer cast 0 +Simplifying constant integer cast $ff +Simplifying constant integer cast $ff +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast $ff +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $c7 +Simplifying constant integer cast $c7 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $64 +Simplifying constant integer cast $c7 +Simplifying constant integer cast $64 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $55 +Simplifying constant integer cast $aa +Simplifying constant integer cast $ff +Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $28 +Simplifying constant integer cast $3e8 Simplifying constant integer cast $ff Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -7214,546 +7629,6 @@ Simplifying constant integer cast 3 Simplifying constant integer cast 4 Simplifying constant integer cast 0 Simplifying constant integer cast 1 -Simplifying constant integer cast 8 -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $19 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $19 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $25 -Simplifying constant integer cast $25 -Simplifying constant integer cast $25 -Simplifying constant integer cast $25 -Simplifying constant integer cast $24 -Simplifying constant integer cast $25 -Simplifying constant integer cast $24 -Simplifying constant integer cast $25 -Simplifying constant integer cast $24 -Simplifying constant integer cast $25 -Simplifying constant integer cast $24 -Simplifying constant integer cast $25 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast 8 -Simplifying constant integer cast 9 -Simplifying constant integer cast $a -Simplifying constant integer cast $b -Simplifying constant integer cast $c -Simplifying constant integer cast $d -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast 7 -Simplifying constant integer cast 8 -Simplifying constant integer cast 8 -Simplifying constant integer cast $b -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $d -Simplifying constant integer cast $d -Simplifying constant integer cast $e -Simplifying constant integer cast $e -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast $a -Simplifying constant integer cast $b -Simplifying constant integer cast $b -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast $d -Simplifying constant integer cast $d -Simplifying constant integer cast $e -Simplifying constant integer cast $e -Simplifying constant integer cast $a -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast $d -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $d -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 4 -Simplifying constant integer cast 1 -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast $f -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 2 -Simplifying constant integer cast 0 -Simplifying constant integer cast 5 -Simplifying constant integer cast 0 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 9 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 4 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 5 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 3 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 8 -Simplifying constant integer cast 9 -Simplifying constant integer cast $c -Simplifying constant integer cast $c -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 7 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 8 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 7 -Simplifying constant integer cast 0 -Simplifying constant integer cast $d -Simplifying constant integer cast 4 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 7 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 6 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 8 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 8 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 9 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $a -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 9 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 9 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $a -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $a -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $b -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 2 @@ -7779,42 +7654,6 @@ Simplifying constant integer cast 9 Simplifying constant integer cast $a Simplifying constant integer cast $a Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 3 -Simplifying constant integer cast 4 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast 8 -Simplifying constant integer cast 9 -Simplifying constant integer cast $a -Simplifying constant integer cast $b -Simplifying constant integer cast $c -Simplifying constant integer cast $d -Simplifying constant integer cast $e -Simplifying constant integer cast $f -Simplifying constant integer cast $10 -Simplifying constant integer cast $11 -Simplifying constant integer cast $12 -Simplifying constant integer cast $13 -Simplifying constant integer cast $14 -Simplifying constant integer cast $15 -Simplifying constant integer cast $16 -Simplifying constant integer cast $17 -Simplifying constant integer cast $18 -Simplifying constant integer cast $19 -Simplifying constant integer cast $1a -Simplifying constant integer cast $1b -Simplifying constant integer cast $1c -Simplifying constant integer cast $1d -Simplifying constant integer cast $1e -Simplifying constant integer cast $1f -Simplifying constant integer cast $20 -Simplifying constant integer cast $21 -Simplifying constant integer cast $22 -Simplifying constant integer cast $23 -Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -7862,26 +7701,6 @@ Simplifying constant integer cast $10 Simplifying constant integer cast 3 Simplifying constant integer cast 0 Simplifying constant integer cast 0 -Simplifying constant integer cast $ff -Simplifying constant integer cast $ff -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $80 -Simplifying constant integer cast $ff -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $c7 -Simplifying constant integer cast $c7 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $64 -Simplifying constant integer cast $c7 -Simplifying constant integer cast $64 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast $4000 @@ -7898,10 +7717,6 @@ Simplifying constant integer cast $ff Simplifying constant integer cast $4000 Simplifying constant integer cast $4000 Simplifying constant integer cast $3fff -Simplifying constant integer cast 0 -Simplifying constant integer cast $55 -Simplifying constant integer cast $aa -Simplifying constant integer cast $ff Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast $4000 @@ -7968,6 +7783,42 @@ Simplifying constant integer cast 0 Simplifying constant integer cast $ff Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 2 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 5 +Finalized unsigned number type (byte) 6 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 9 +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) $b +Finalized unsigned number type (byte) $c +Finalized unsigned number type (byte) $d +Finalized unsigned number type (byte) $e +Finalized unsigned number type (byte) $f +Finalized unsigned number type (byte) $10 +Finalized unsigned number type (byte) $11 +Finalized unsigned number type (byte) $12 +Finalized unsigned number type (byte) $13 +Finalized unsigned number type (byte) $14 +Finalized unsigned number type (byte) $15 +Finalized unsigned number type (byte) $16 +Finalized unsigned number type (byte) $17 +Finalized unsigned number type (byte) $18 +Finalized unsigned number type (byte) $19 +Finalized unsigned number type (byte) $1a +Finalized unsigned number type (byte) $1b +Finalized unsigned number type (byte) $1c +Finalized unsigned number type (byte) $1d +Finalized unsigned number type (byte) $1e +Finalized unsigned number type (byte) $1f +Finalized unsigned number type (byte) $20 +Finalized unsigned number type (byte) $21 +Finalized unsigned number type (byte) $22 +Finalized unsigned number type (byte) $23 +Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -8058,42 +7909,6 @@ Finalized unsigned number type (byte) 9 Finalized unsigned number type (byte) $a Finalized unsigned number type (byte) $a Finalized unsigned number type (byte) 0 -Finalized unsigned number type (byte) 1 -Finalized unsigned number type (byte) 2 -Finalized unsigned number type (byte) 3 -Finalized unsigned number type (byte) 4 -Finalized unsigned number type (byte) 5 -Finalized unsigned number type (byte) 6 -Finalized unsigned number type (byte) 7 -Finalized unsigned number type (byte) 8 -Finalized unsigned number type (byte) 9 -Finalized unsigned number type (byte) $a -Finalized unsigned number type (byte) $b -Finalized unsigned number type (byte) $c -Finalized unsigned number type (byte) $d -Finalized unsigned number type (byte) $e -Finalized unsigned number type (byte) $f -Finalized unsigned number type (byte) $10 -Finalized unsigned number type (byte) $11 -Finalized unsigned number type (byte) $12 -Finalized unsigned number type (byte) $13 -Finalized unsigned number type (byte) $14 -Finalized unsigned number type (byte) $15 -Finalized unsigned number type (byte) $16 -Finalized unsigned number type (byte) $17 -Finalized unsigned number type (byte) $18 -Finalized unsigned number type (byte) $19 -Finalized unsigned number type (byte) $1a -Finalized unsigned number type (byte) $1b -Finalized unsigned number type (byte) $1c -Finalized unsigned number type (byte) $1d -Finalized unsigned number type (byte) $1e -Finalized unsigned number type (byte) $1f -Finalized unsigned number type (byte) $20 -Finalized unsigned number type (byte) $21 -Finalized unsigned number type (byte) $22 -Finalized unsigned number type (byte) $23 -Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -8224,18 +8039,18 @@ Inferred type updated to byte in (unumber~) bitmap_line_xdyi::$6 ← (byte) bitm Inferred type updated to byte in (unumber~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (byte) 1 -Inferred type updated to byte in (unumber~) gfx_mode::$18 ← *((byte*) form_a_start_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$19 ← (byte~) gfx_mode::$18 | *((byte*) form_a_start_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$28 ← *((byte*) form_a_step_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((byte*) form_a_step_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$30 ← *((byte*) form_a_mod_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((byte*) form_a_mod_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$32 ← *((byte*) form_b_start_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$33 ← (byte~) gfx_mode::$32 | *((byte*) form_b_start_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$42 ← *((byte*) form_b_step_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((byte*) form_b_step_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$44 ← *((byte*) form_b_mod_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((byte*) form_b_mod_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$19 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$33 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) Inferred type updated to word in (unumber~) gfx_mode::$47 ← (word~) gfx_mode::$46 / (word) $4000 Inferred type updated to byte in (unumber~) gfx_mode::$49 ← (byte) 3 ^ (byte~) gfx_mode::$48 Inferred type updated to word in (unumber~) gfx_mode::$52 ← (word~) gfx_mode::$51 & (word) $3fff @@ -8244,14 +8059,14 @@ Inferred type updated to word in (unumber~) gfx_mode::$57 ← (word~) gfx_mode:: Inferred type updated to byte in (unumber~) gfx_mode::$58 ← > (word~) gfx_mode::$57 Inferred type updated to byte in (unumber~) gfx_mode::$59 ← (byte~) gfx_mode::$58 / (byte) 4 Inferred type updated to byte in (unumber~) gfx_mode::$60 ← (byte~) gfx_mode::$54 | (byte~) gfx_mode::$59 -Inferred type updated to byte in (unumber~) gfx_mode::$62 ← *((byte*) form_vic_bg0_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((byte*) form_vic_bg0_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$64 ← *((byte*) form_vic_bg1_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((byte*) form_vic_bg1_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$66 ← *((byte*) form_vic_bg2_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((byte*) form_vic_bg2_lo) -Inferred type updated to byte in (unumber~) gfx_mode::$68 ← *((byte*) form_vic_bg3_hi) * (byte) $10 -Inferred type updated to byte in (unumber~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((byte*) form_vic_bg3_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) +Inferred type updated to byte in (unumber~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) * (byte) $10 +Inferred type updated to byte in (unumber~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) Inferred type updated to byte in (unumber~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#2 & (byte) $f Inferred type updated to byte in (unumber~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 * (byte) $10 Inferred type updated to byte in (unumber~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte) $f @@ -8292,45 +8107,45 @@ Inferred type updated to byte in (unumber~) form_control::$19 ← (const byte) f Adding pointer type conversion cast (byte*) bitmap_clear::$0 in (byte*~) bitmap_clear::$0 ← (word~) bitmap_clear::$3 Adding pointer type conversion cast (byte*) form_field_ptr::$0 in (byte*~) form_field_ptr::$0 ← (word~) form_field_ptr::$2 Successful SSA optimization PassNAddTypeConversionAssignment -Inversing boolean not [7] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [6] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [36] (bool~) print_str_lines::$0 ← (byte) 0 == (byte) print_str_lines::ch#0 from [35] (bool~) print_str_lines::$4 ← (byte) 0 != (byte) print_str_lines::ch#0 -Inversing boolean not [140] (bool~) keyboard_event_scan::$18 ← (byte~) keyboard_event_scan::$16 == (byte) 0 from [139] (bool~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte) 0 -Inversing boolean not [149] (bool~) keyboard_event_scan::$20 ← (byte) keyboard_events_size#18 == (byte) 8 from [148] (bool~) keyboard_event_scan::$19 ← (byte) keyboard_events_size#18 != (byte) 8 -Inversing boolean not [173] (bool~) keyboard_event_scan::$2 ← (byte~) keyboard_event_scan::$0 == (byte) 0 from [172] (bool~) keyboard_event_scan::$1 ← (byte~) keyboard_event_scan::$0 != (byte) 0 -Inversing boolean not [182] (bool~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$3 == (byte) 0 from [181] (bool~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 != (byte) 0 -Inversing boolean not [194] (bool~) keyboard_event_scan::$8 ← (byte~) keyboard_event_scan::$6 == (byte) 0 from [193] (bool~) keyboard_event_scan::$7 ← (byte~) keyboard_event_scan::$6 != (byte) 0 -Inversing boolean not [206] (bool~) keyboard_event_scan::$11 ← (byte~) keyboard_event_scan::$9 == (byte) 0 from [205] (bool~) keyboard_event_scan::$10 ← (byte~) keyboard_event_scan::$9 != (byte) 0 -Inversing boolean not [257] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte) 0 from [256] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte) 0 -Inversing boolean not [276] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte) 7 from [275] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte) 7 -Inversing boolean not [417] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [416] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 -Inversing boolean not [440] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [439] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 -Inversing boolean not [463] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [462] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 -Inversing boolean not [487] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [486] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 -Inversing boolean not [599] (bool~) get_plane::$14 ← (byte) get_plane::idx#15 != (byte) $d from [598] (bool~) get_plane::$13 ← (byte) get_plane::idx#15 == (byte) $d -Inversing boolean not [626] (bool~) get_vic_screen::$5 ← (byte) get_vic_screen::idx#6 != (byte) 4 from [625] (bool~) get_vic_screen::$4 ← (byte) get_vic_screen::idx#6 == (byte) 4 -Inversing boolean not [639] (bool~) get_vic_charset::$2 ← (byte) get_vic_charset::idx#2 != (byte) 1 from [638] (bool~) get_vic_charset::$1 ← (byte) get_vic_charset::idx#2 == (byte) 1 -Inversing boolean not [844] (bool~) gfx_mode::$1 ← *((byte*) form_ctrl_line) == (byte) 0 from [843] (bool~) gfx_mode::$0 ← *((byte*) form_ctrl_line) != (byte) 0 -Inversing boolean not [848] (bool~) gfx_mode::$3 ← *((byte*) form_ctrl_borof) == (byte) 0 from [847] (bool~) gfx_mode::$2 ← *((byte*) form_ctrl_borof) != (byte) 0 -Inversing boolean not [855] (bool~) gfx_mode::$5 ← *((byte*) form_ctrl_hicol) == (byte) 0 from [854] (bool~) gfx_mode::$4 ← *((byte*) form_ctrl_hicol) != (byte) 0 -Inversing boolean not [862] (bool~) gfx_mode::$7 ← *((byte*) form_ctrl_overs) == (byte) 0 from [861] (bool~) gfx_mode::$6 ← *((byte*) form_ctrl_overs) != (byte) 0 -Inversing boolean not [869] (bool~) gfx_mode::$9 ← *((byte*) form_ctrl_colof) == (byte) 0 from [868] (bool~) gfx_mode::$8 ← *((byte*) form_ctrl_colof) != (byte) 0 -Inversing boolean not [876] (bool~) gfx_mode::$11 ← *((byte*) form_ctrl_chunk) == (byte) 0 from [875] (bool~) gfx_mode::$10 ← *((byte*) form_ctrl_chunk) != (byte) 0 -Inversing boolean not [885] (bool~) gfx_mode::$13 ← *((byte*) form_ctrl_ecm) == (byte) 0 from [884] (bool~) gfx_mode::$12 ← *((byte*) form_ctrl_ecm) != (byte) 0 -Inversing boolean not [892] (bool~) gfx_mode::$15 ← *((byte*) form_ctrl_bmm) == (byte) 0 from [891] (bool~) gfx_mode::$14 ← *((byte*) form_ctrl_bmm) != (byte) 0 -Inversing boolean not [901] (bool~) gfx_mode::$17 ← *((byte*) form_ctrl_mcm) == (byte) 0 from [900] (bool~) gfx_mode::$16 ← *((byte*) form_ctrl_mcm) != (byte) 0 -Inversing boolean not [1057] (bool~) gfx_mode::$88 ← (byte) gfx_mode::keyboard_event#0 != (const byte) KEY_SPACE from [1056] (bool~) gfx_mode::$87 ← (byte) gfx_mode::keyboard_event#0 == (const byte) KEY_SPACE -Inversing boolean not [1222] (bool~) gfx_init_plane_8bppchunky::$5 ← (byte*) gfx_init_plane_8bppchunky::gfxb#3 != (word) $8000 from [1221] (bool~) gfx_init_plane_8bppchunky::$4 ← (byte*) gfx_init_plane_8bppchunky::gfxb#3 == (word) $8000 -Inversing boolean not [1352] (bool~) gfx_init_plane_charset8::$6 ← (byte~) gfx_init_plane_charset8::$4 == (byte) 0 from [1351] (bool~) gfx_init_plane_charset8::$5 ← (byte~) gfx_init_plane_charset8::$4 != (byte) 0 -Inversing boolean not [1515] (bool~) form_mode::$32 ← (byte~) form_mode::$30 == (byte) 0 from [1514] (bool~) form_mode::$31 ← (byte~) form_mode::$30 != (byte) 0 -Inversing boolean not [1519] (bool~) form_mode::$34 ← (byte) form_mode::preset_current#2 == *((byte*) form_preset) from [1518] (bool~) form_mode::$33 ← (byte) form_mode::preset_current#2 != *((byte*) form_preset) -Inversing boolean not [1594] (bool~) form_control::$2 ← (signed byte) form_cursor_count#5 >= (signed byte) 0 from [1593] (bool~) form_control::$1 ← (signed byte) form_cursor_count#5 < (signed byte) 0 -Inversing boolean not [1619] (bool~) form_control::$7 ← (byte) form_control::key_event#0 != (const byte) KEY_CRSR_DOWN from [1618] (bool~) form_control::$6 ← (byte) form_control::key_event#0 == (const byte) KEY_CRSR_DOWN -Inversing boolean not [1623] (bool~) form_control::$9 ← (byte) form_control::key_event#1 != (const byte) KEY_CRSR_RIGHT from [1622] (bool~) form_control::$8 ← (byte) form_control::key_event#1 == (const byte) KEY_CRSR_RIGHT -Inversing boolean not [1634] (bool~) form_control::$21 ← (byte) form_field_idx#5 != (const byte) form_fields_cnt from [1633] (bool~) form_control::$20 ← (byte) form_field_idx#5 == (const byte) form_fields_cnt -Inversing boolean not [1639] (bool~) form_control::$18 ← (byte) form_field_idx#6 != (byte) $ff from [1638] (bool~) form_control::$17 ← (byte) form_field_idx#6 == (byte) $ff -Inversing boolean not [1658] (bool~) form_control::$11 ← (byte) form_control::key_event#2 != (const byte) KEY_SPACE from [1657] (bool~) form_control::$10 ← (byte) form_control::key_event#2 == (const byte) KEY_SPACE -Inversing boolean not [1667] (bool~) form_control::$27 ← *((byte[]) form_fields_val + (byte) form_field_idx#19) <= *((byte[]) form_fields_max + (byte) form_field_idx#19) from [1666] (bool~) form_control::$26 ← *((byte[]) form_fields_val + (byte) form_field_idx#19) > *((byte[]) form_fields_max + (byte) form_field_idx#19) -Inversing boolean not [1672] (bool~) form_control::$25 ← *((byte[]) form_fields_val + (byte) form_field_idx#20) != (byte) $ff from [1671] (bool~) form_control::$24 ← *((byte[]) form_fields_val + (byte) form_field_idx#20) == (byte) $ff +Inversing boolean not [6] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [5] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 +Inversing boolean not [35] (bool~) print_str_lines::$0 ← (byte) 0 == (byte) print_str_lines::ch#0 from [34] (bool~) print_str_lines::$4 ← (byte) 0 != (byte) print_str_lines::ch#0 +Inversing boolean not [136] (bool~) keyboard_event_scan::$18 ← (byte~) keyboard_event_scan::$16 == (byte) 0 from [135] (bool~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte) 0 +Inversing boolean not [145] (bool~) keyboard_event_scan::$20 ← (byte) keyboard_events_size#18 == (byte) 8 from [144] (bool~) keyboard_event_scan::$19 ← (byte) keyboard_events_size#18 != (byte) 8 +Inversing boolean not [169] (bool~) keyboard_event_scan::$2 ← (byte~) keyboard_event_scan::$0 == (byte) 0 from [168] (bool~) keyboard_event_scan::$1 ← (byte~) keyboard_event_scan::$0 != (byte) 0 +Inversing boolean not [178] (bool~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$3 == (byte) 0 from [177] (bool~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 != (byte) 0 +Inversing boolean not [190] (bool~) keyboard_event_scan::$8 ← (byte~) keyboard_event_scan::$6 == (byte) 0 from [189] (bool~) keyboard_event_scan::$7 ← (byte~) keyboard_event_scan::$6 != (byte) 0 +Inversing boolean not [202] (bool~) keyboard_event_scan::$11 ← (byte~) keyboard_event_scan::$9 == (byte) 0 from [201] (bool~) keyboard_event_scan::$10 ← (byte~) keyboard_event_scan::$9 != (byte) 0 +Inversing boolean not [253] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte) 0 from [252] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte) 0 +Inversing boolean not [272] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte) 7 from [271] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte) 7 +Inversing boolean not [413] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [412] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 +Inversing boolean not [436] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [435] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 +Inversing boolean not [459] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [458] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 +Inversing boolean not [483] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [482] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 +Inversing boolean not [595] (bool~) get_plane::$14 ← (byte) get_plane::idx#15 != (byte) $d from [594] (bool~) get_plane::$13 ← (byte) get_plane::idx#15 == (byte) $d +Inversing boolean not [622] (bool~) get_vic_screen::$5 ← (byte) get_vic_screen::idx#6 != (byte) 4 from [621] (bool~) get_vic_screen::$4 ← (byte) get_vic_screen::idx#6 == (byte) 4 +Inversing boolean not [635] (bool~) get_vic_charset::$2 ← (byte) get_vic_charset::idx#2 != (byte) 1 from [634] (bool~) get_vic_charset::$1 ← (byte) get_vic_charset::idx#2 == (byte) 1 +Inversing boolean not [751] (bool~) gfx_mode::$1 ← *((const byte*) form_ctrl_line) == (byte) 0 from [750] (bool~) gfx_mode::$0 ← *((const byte*) form_ctrl_line) != (byte) 0 +Inversing boolean not [755] (bool~) gfx_mode::$3 ← *((const byte*) form_ctrl_borof) == (byte) 0 from [754] (bool~) gfx_mode::$2 ← *((const byte*) form_ctrl_borof) != (byte) 0 +Inversing boolean not [762] (bool~) gfx_mode::$5 ← *((const byte*) form_ctrl_hicol) == (byte) 0 from [761] (bool~) gfx_mode::$4 ← *((const byte*) form_ctrl_hicol) != (byte) 0 +Inversing boolean not [769] (bool~) gfx_mode::$7 ← *((const byte*) form_ctrl_overs) == (byte) 0 from [768] (bool~) gfx_mode::$6 ← *((const byte*) form_ctrl_overs) != (byte) 0 +Inversing boolean not [776] (bool~) gfx_mode::$9 ← *((const byte*) form_ctrl_colof) == (byte) 0 from [775] (bool~) gfx_mode::$8 ← *((const byte*) form_ctrl_colof) != (byte) 0 +Inversing boolean not [783] (bool~) gfx_mode::$11 ← *((const byte*) form_ctrl_chunk) == (byte) 0 from [782] (bool~) gfx_mode::$10 ← *((const byte*) form_ctrl_chunk) != (byte) 0 +Inversing boolean not [792] (bool~) gfx_mode::$13 ← *((const byte*) form_ctrl_ecm) == (byte) 0 from [791] (bool~) gfx_mode::$12 ← *((const byte*) form_ctrl_ecm) != (byte) 0 +Inversing boolean not [799] (bool~) gfx_mode::$15 ← *((const byte*) form_ctrl_bmm) == (byte) 0 from [798] (bool~) gfx_mode::$14 ← *((const byte*) form_ctrl_bmm) != (byte) 0 +Inversing boolean not [808] (bool~) gfx_mode::$17 ← *((const byte*) form_ctrl_mcm) == (byte) 0 from [807] (bool~) gfx_mode::$16 ← *((const byte*) form_ctrl_mcm) != (byte) 0 +Inversing boolean not [964] (bool~) gfx_mode::$88 ← (byte) gfx_mode::keyboard_event#0 != (const byte) KEY_SPACE from [963] (bool~) gfx_mode::$87 ← (byte) gfx_mode::keyboard_event#0 == (const byte) KEY_SPACE +Inversing boolean not [1127] (bool~) gfx_init_plane_8bppchunky::$5 ← (byte*) gfx_init_plane_8bppchunky::gfxb#3 != (word) $8000 from [1126] (bool~) gfx_init_plane_8bppchunky::$4 ← (byte*) gfx_init_plane_8bppchunky::gfxb#3 == (word) $8000 +Inversing boolean not [1256] (bool~) gfx_init_plane_charset8::$6 ← (byte~) gfx_init_plane_charset8::$4 == (byte) 0 from [1255] (bool~) gfx_init_plane_charset8::$5 ← (byte~) gfx_init_plane_charset8::$4 != (byte) 0 +Inversing boolean not [1419] (bool~) form_mode::$32 ← (byte~) form_mode::$30 == (byte) 0 from [1418] (bool~) form_mode::$31 ← (byte~) form_mode::$30 != (byte) 0 +Inversing boolean not [1423] (bool~) form_mode::$34 ← (byte) form_mode::preset_current#2 == *((const byte*) form_preset) from [1422] (bool~) form_mode::$33 ← (byte) form_mode::preset_current#2 != *((const byte*) form_preset) +Inversing boolean not [1498] (bool~) form_control::$2 ← (signed byte) form_cursor_count#5 >= (signed byte) 0 from [1497] (bool~) form_control::$1 ← (signed byte) form_cursor_count#5 < (signed byte) 0 +Inversing boolean not [1523] (bool~) form_control::$7 ← (byte) form_control::key_event#0 != (const byte) KEY_CRSR_DOWN from [1522] (bool~) form_control::$6 ← (byte) form_control::key_event#0 == (const byte) KEY_CRSR_DOWN +Inversing boolean not [1527] (bool~) form_control::$9 ← (byte) form_control::key_event#1 != (const byte) KEY_CRSR_RIGHT from [1526] (bool~) form_control::$8 ← (byte) form_control::key_event#1 == (const byte) KEY_CRSR_RIGHT +Inversing boolean not [1538] (bool~) form_control::$21 ← (byte) form_field_idx#5 != (const byte) form_fields_cnt from [1537] (bool~) form_control::$20 ← (byte) form_field_idx#5 == (const byte) form_fields_cnt +Inversing boolean not [1543] (bool~) form_control::$18 ← (byte) form_field_idx#6 != (byte) $ff from [1542] (bool~) form_control::$17 ← (byte) form_field_idx#6 == (byte) $ff +Inversing boolean not [1562] (bool~) form_control::$11 ← (byte) form_control::key_event#2 != (const byte) KEY_SPACE from [1561] (bool~) form_control::$10 ← (byte) form_control::key_event#2 == (const byte) KEY_SPACE +Inversing boolean not [1571] (bool~) form_control::$27 ← *((const byte[]) form_fields_val + (byte) form_field_idx#19) <= *((const byte[]) form_fields_max + (byte) form_field_idx#19) from [1570] (bool~) form_control::$26 ← *((const byte[]) form_fields_val + (byte) form_field_idx#19) > *((const byte[]) form_fields_max + (byte) form_field_idx#19) +Inversing boolean not [1576] (bool~) form_control::$25 ← *((const byte[]) form_fields_val + (byte) form_field_idx#20) != (byte) $ff from [1575] (bool~) form_control::$24 ← *((const byte[]) form_fields_val + (byte) form_field_idx#20) == (byte) $ff Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -8341,7 +8156,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2 Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 Alias (byte*) memset::end#1 = (byte*) memset::end#2 Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#47 (byte*) print_line_cursor#70 (byte*) print_char_cursor#70 (byte*) print_screen#45 (byte*) print_line_cursor#68 (byte*) print_char_cursor#68 (byte*) print_screen#42 (byte*) print_line_cursor#65 (byte*) print_char_cursor#65 (byte*) print_screen#39 (byte*) print_line_cursor#62 (byte*) print_char_cursor#62 (byte*) print_screen#37 (byte*) print_line_cursor#60 (byte*) print_char_cursor#60 (byte*) print_screen#32 (byte*) print_line_cursor#53 (byte*) print_char_cursor#55 (byte*) print_screen#24 (byte*) print_line_cursor#44 (byte*) print_char_cursor#46 +Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#38 (byte*) print_line_cursor#61 (byte*) print_char_cursor#61 (byte*) print_screen#37 (byte*) print_line_cursor#60 (byte*) print_char_cursor#60 (byte*) print_screen#32 (byte*) print_line_cursor#53 (byte*) print_char_cursor#55 (byte*) print_screen#24 (byte*) print_line_cursor#44 (byte*) print_char_cursor#46 Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#2 Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#37 Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#8 @@ -8362,7 +8177,7 @@ Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_p Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#9 (byte) keyboard_event_scan::row#7 Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 -Alias (byte) keyboard_events_size#109 = (byte) keyboard_events_size#77 (byte) keyboard_events_size#90 (byte) keyboard_events_size#55 +Alias (byte) keyboard_events_size#107 = (byte) keyboard_events_size#77 (byte) keyboard_events_size#90 (byte) keyboard_events_size#55 Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$12 (byte) keyboard_event_scan::row_scan#5 Alias (byte) keyboard_event_scan::keycode#1 = (byte~) keyboard_event_scan::$14 Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#37 (byte) keyboard_events_size#38 (byte) keyboard_events_size#19 (byte) keyboard_events_size#20 @@ -8374,13 +8189,13 @@ Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$2 Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#4 Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#8 Alias (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#2 -Alias (byte) keyboard_events_size#108 = (byte) keyboard_events_size#54 -Alias (byte) keyboard_events_size#100 = (byte) keyboard_events_size#117 (byte) keyboard_events_size#114 (byte) keyboard_events_size#113 +Alias (byte) keyboard_events_size#106 = (byte) keyboard_events_size#54 +Alias (byte) keyboard_events_size#111 = (byte) keyboard_events_size#115 (byte) keyboard_events_size#99 (byte) keyboard_events_size#112 Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#6 Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#34 (byte) keyboard_modifiers#17 Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#7 Alias (byte) keyboard_modifiers#18 = (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#53 -Alias (byte) keyboard_events_size#101 = (byte) keyboard_events_size#110 (byte) keyboard_events_size#102 +Alias (byte) keyboard_events_size#100 = (byte) keyboard_events_size#108 (byte) keyboard_events_size#101 Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$26 Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#8 Alias (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#54 @@ -8397,8 +8212,8 @@ Alias (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed:: Alias (byte) keyboard_events_size#22 = (byte) keyboard_events_size#41 (byte) keyboard_events_size#23 Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#5 Alias (byte) keyboard_events_size#24 = (byte) keyboard_events_size#5 -Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#103 (byte) keyboard_events_size#93 (byte) keyboard_events_size#85 (byte) keyboard_events_size#76 (byte) keyboard_events_size#53 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#90 (byte) keyboard_modifiers#84 (byte) keyboard_modifiers#81 (byte) keyboard_modifiers#75 (byte) keyboard_modifiers#52 +Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#85 (byte) keyboard_events_size#76 (byte) keyboard_events_size#53 +Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#81 (byte) keyboard_modifiers#75 (byte) keyboard_modifiers#52 Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2 Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#4 @@ -8460,9 +8275,9 @@ Alias (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#7 (byte) bitmap_ Alias (byte) bitmap_line_ydxd::e#1 = (byte~) bitmap_line_ydxd::$2 (byte) bitmap_line_ydxd::e#4 Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#8 Alias (byte) bitmap_line_ydxd::e#2 = (byte~) bitmap_line_ydxd::$5 -Alias (byte*) print_screen#26 = (byte*) print_screen#33 (byte*) print_screen#38 -Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#56 (byte*) print_line_cursor#61 -Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#61 +Alias (byte*) print_screen#26 = (byte*) print_screen#33 (byte*) print_screen#39 +Alias (byte*) print_line_cursor#48 = (byte*) print_line_cursor#56 (byte*) print_line_cursor#62 +Alias (byte*) print_char_cursor#50 = (byte*) print_char_cursor#56 (byte*) print_char_cursor#62 Alias (signed byte) form_cursor_count#28 = (signed byte) form_cursor_count#38 (signed byte) form_cursor_count#43 Alias (byte) keyboard_events_size#57 = (byte) keyboard_events_size#80 (byte) keyboard_events_size#92 Alias (byte) keyboard_modifiers#56 = (byte) keyboard_modifiers#76 (byte) keyboard_modifiers#83 @@ -8508,78 +8323,42 @@ Alias (byte) apply_preset::idx#1 = (byte) apply_preset::idx#2 (byte) apply_prese Alias (byte*) apply_preset::preset#13 = (byte*) apply_preset::preset#14 Alias (byte) apply_preset::i#2 = (byte) apply_preset::i#3 Alias (byte) render_preset_name::idx#10 = (byte) render_preset_name::idx#3 (byte) render_preset_name::idx#2 (byte) render_preset_name::idx#4 (byte) render_preset_name::idx#5 (byte) render_preset_name::idx#6 (byte) render_preset_name::idx#7 (byte) render_preset_name::idx#8 (byte) render_preset_name::idx#9 (byte) render_preset_name::idx#11 (byte) render_preset_name::idx#12 -Alias (byte*) form_preset = (byte*~) $0 -Alias (byte*) form_ctrl_bmm = (byte*~) $1 -Alias (byte*) form_ctrl_mcm = (byte*~) $2 -Alias (byte*) form_ctrl_ecm = (byte*~) $3 -Alias (byte*) form_ctrl_hicol = (byte*~) $4 -Alias (byte*) form_ctrl_line = (byte*~) $5 -Alias (byte*) form_ctrl_colof = (byte*~) $6 -Alias (byte*) form_ctrl_chunk = (byte*~) $7 -Alias (byte*) form_ctrl_borof = (byte*~) $8 -Alias (byte*) form_ctrl_overs = (byte*~) $9 -Alias (byte*) form_a_pattern = (byte*~) $10 -Alias (byte*) form_a_start_hi = (byte*~) $11 -Alias (byte*) form_a_start_lo = (byte*~) $12 -Alias (byte*) form_a_step_hi = (byte*~) $13 -Alias (byte*) form_a_step_lo = (byte*~) $14 -Alias (byte*) form_a_mod_hi = (byte*~) $15 -Alias (byte*) form_a_mod_lo = (byte*~) $16 -Alias (byte*) form_b_pattern = (byte*~) $17 -Alias (byte*) form_b_start_hi = (byte*~) $18 -Alias (byte*) form_b_start_lo = (byte*~) $19 -Alias (byte*) form_b_step_hi = (byte*~) $20 -Alias (byte*) form_b_step_lo = (byte*~) $21 -Alias (byte*) form_b_mod_hi = (byte*~) $22 -Alias (byte*) form_b_mod_lo = (byte*~) $23 -Alias (byte*) form_vic_screen = (byte*~) $24 -Alias (byte*) form_vic_gfx = (byte*~) $25 -Alias (byte*) form_vic_cols = (byte*~) $26 -Alias (byte*) form_dtv_palet = (byte*~) $27 -Alias (byte*) form_vic_bg0_hi = (byte*~) $28 -Alias (byte*) form_vic_bg0_lo = (byte*~) $29 -Alias (byte*) form_vic_bg1_hi = (byte*~) $30 -Alias (byte*) form_vic_bg1_lo = (byte*~) $31 -Alias (byte*) form_vic_bg2_hi = (byte*~) $32 -Alias (byte*) form_vic_bg2_lo = (byte*~) $33 -Alias (byte*) form_vic_bg3_hi = (byte*~) $34 -Alias (byte*) form_vic_bg3_lo = (byte*~) $35 Alias (byte) gfx_mode::dtv_control#0 = (byte) gfx_mode::dtv_control#7 -Alias (byte) keyboard_events_size#146 = (byte) keyboard_events_size#147 -Alias (byte) keyboard_modifiers#127 = (byte) keyboard_modifiers#128 -Alias (byte) gfx_mode::dtv_control#1 = (byte~) gfx_mode::$71 -Alias (byte) gfx_mode::dtv_control#14 = (byte) gfx_mode::dtv_control#8 Alias (byte) keyboard_events_size#144 = (byte) keyboard_events_size#145 Alias (byte) keyboard_modifiers#125 = (byte) keyboard_modifiers#126 -Alias (byte) gfx_mode::dtv_control#2 = (byte~) gfx_mode::$72 -Alias (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#9 +Alias (byte) gfx_mode::dtv_control#1 = (byte~) gfx_mode::$71 +Alias (byte) gfx_mode::dtv_control#14 = (byte) gfx_mode::dtv_control#8 Alias (byte) keyboard_events_size#142 = (byte) keyboard_events_size#143 Alias (byte) keyboard_modifiers#123 = (byte) keyboard_modifiers#124 -Alias (byte) gfx_mode::dtv_control#3 = (byte~) gfx_mode::$73 -Alias (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#16 +Alias (byte) gfx_mode::dtv_control#2 = (byte~) gfx_mode::$72 +Alias (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#9 Alias (byte) keyboard_events_size#140 = (byte) keyboard_events_size#141 Alias (byte) keyboard_modifiers#121 = (byte) keyboard_modifiers#122 -Alias (byte) gfx_mode::dtv_control#4 = (byte~) gfx_mode::$74 -Alias (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#17 +Alias (byte) gfx_mode::dtv_control#3 = (byte~) gfx_mode::$73 +Alias (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#16 Alias (byte) keyboard_events_size#138 = (byte) keyboard_events_size#139 Alias (byte) keyboard_modifiers#119 = (byte) keyboard_modifiers#120 -Alias (byte) gfx_mode::dtv_control#5 = (byte~) gfx_mode::$75 -Alias (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#18 +Alias (byte) gfx_mode::dtv_control#4 = (byte~) gfx_mode::$74 +Alias (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#17 Alias (byte) keyboard_events_size#136 = (byte) keyboard_events_size#137 Alias (byte) keyboard_modifiers#117 = (byte) keyboard_modifiers#118 -Alias (byte) gfx_mode::dtv_control#6 = (byte~) gfx_mode::$76 -Alias (byte) gfx_mode::vic_control#0 = (byte) gfx_mode::vic_control#3 +Alias (byte) gfx_mode::dtv_control#5 = (byte~) gfx_mode::$75 +Alias (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#18 Alias (byte) keyboard_events_size#134 = (byte) keyboard_events_size#135 Alias (byte) keyboard_modifiers#115 = (byte) keyboard_modifiers#116 -Alias (byte) gfx_mode::vic_control#1 = (byte~) gfx_mode::$77 -Alias (byte) gfx_mode::vic_control#5 = (byte) gfx_mode::vic_control#6 +Alias (byte) gfx_mode::dtv_control#6 = (byte~) gfx_mode::$76 +Alias (byte) gfx_mode::vic_control#0 = (byte) gfx_mode::vic_control#3 Alias (byte) keyboard_events_size#132 = (byte) keyboard_events_size#133 Alias (byte) keyboard_modifiers#113 = (byte) keyboard_modifiers#114 +Alias (byte) gfx_mode::vic_control#1 = (byte~) gfx_mode::$77 +Alias (byte) gfx_mode::vic_control#5 = (byte) gfx_mode::vic_control#6 +Alias (byte) keyboard_events_size#130 = (byte) keyboard_events_size#131 +Alias (byte) keyboard_modifiers#111 = (byte) keyboard_modifiers#112 Alias (byte) gfx_mode::vic_control#2 = (byte~) gfx_mode::$78 Alias (byte) gfx_mode::plane_a_offs#0 = (byte~) gfx_mode::$19 (byte) gfx_mode::plane_a_offs#1 Alias (dword) get_plane::return#16 = (dword) get_plane::return#19 -Alias (byte) keyboard_events_size#118 = (byte) keyboard_events_size#126 (byte) keyboard_events_size#128 (byte) keyboard_events_size#124 (byte) keyboard_events_size#122 (byte) keyboard_events_size#120 -Alias (byte) keyboard_modifiers#101 = (byte) keyboard_modifiers#107 (byte) keyboard_modifiers#109 (byte) keyboard_modifiers#105 (byte) keyboard_modifiers#103 (byte) keyboard_modifiers#99 +Alias (byte) keyboard_events_size#116 = (byte) keyboard_events_size#124 (byte) keyboard_events_size#126 (byte) keyboard_events_size#122 (byte) keyboard_events_size#120 (byte) keyboard_events_size#118 +Alias (byte) keyboard_modifiers#101 = (byte) keyboard_modifiers#105 (byte) keyboard_modifiers#107 (byte) keyboard_modifiers#103 (byte) keyboard_modifiers#99 (byte) keyboard_modifiers#97 Alias (dword) gfx_mode::plane_a#0 = (dword~) gfx_mode::$21 Alias (byte) gfx_mode::plane_b_offs#0 = (byte~) gfx_mode::$33 (byte) gfx_mode::plane_b_offs#1 Alias (dword) get_plane::return#17 = (dword) get_plane::return#20 @@ -8589,14 +8368,14 @@ Alias (byte*) get_vic_charset::return#4 = (byte*) get_vic_charset::return#6 Alias (byte*) get_vic_screen::return#11 = (byte*) get_vic_screen::return#8 Alias (byte*) gfx_mode::vic_colors#0 = (byte*~) gfx_mode::$61 Alias (byte) gfx_mode::vic_control2#0 = (byte) gfx_mode::vic_control2#3 -Alias (byte) keyboard_events_size#130 = (byte) keyboard_events_size#131 -Alias (byte) keyboard_modifiers#111 = (byte) keyboard_modifiers#112 +Alias (byte) keyboard_events_size#128 = (byte) keyboard_events_size#129 +Alias (byte) keyboard_modifiers#109 = (byte) keyboard_modifiers#110 Alias (byte) gfx_mode::vic_control2#1 = (byte~) gfx_mode::$79 Alias (byte) gfx_mode::cy#2 = (byte) gfx_mode::cy#3 Alias (byte*) gfx_mode::vic_colors#1 = (byte*) gfx_mode::vic_colors#4 Alias (byte*) gfx_mode::col#1 = (byte*) gfx_mode::col#4 -Alias (byte) keyboard_events_size#104 = (byte) keyboard_events_size#111 (byte) keyboard_events_size#94 (byte) keyboard_events_size#82 (byte) keyboard_events_size#81 -Alias (byte) keyboard_modifiers#77 = (byte) keyboard_modifiers#91 (byte) keyboard_modifiers#95 (byte) keyboard_modifiers#85 (byte) keyboard_modifiers#78 +Alias (byte) keyboard_events_size#102 = (byte) keyboard_events_size#109 (byte) keyboard_events_size#93 (byte) keyboard_events_size#82 (byte) keyboard_events_size#81 +Alias (byte) keyboard_modifiers#77 = (byte) keyboard_modifiers#89 (byte) keyboard_modifiers#93 (byte) keyboard_modifiers#84 (byte) keyboard_modifiers#78 Alias (byte) keyboard_events_size#44 = (byte) keyboard_events_size#60 Alias (byte) keyboard_modifiers#40 = (byte) keyboard_modifiers#59 Alias (byte) keyboard_events_size#28 = (byte) keyboard_events_size#9 @@ -8670,8 +8449,8 @@ Alias (byte) gfx_init_plane_fill::fill#3 = (byte) gfx_init_plane_fill::fill#5 Alias (byte*) gfx_init_plane_fill::gfxb#1 = (byte*) gfx_init_plane_fill::gfxb#4 Alias (byte) dtvSetCpuBankSegment1::cpuBankIdx#12 = (byte~) gfx_init_plane_fill::$7 Alias (signed byte) form_cursor_count#44 = (signed byte) form_cursor_count#59 (signed byte) form_cursor_count#60 (signed byte) form_cursor_count#58 (signed byte) form_cursor_count#57 (signed byte) form_cursor_count#56 (signed byte) form_cursor_count#55 (signed byte) form_cursor_count#52 (signed byte) form_cursor_count#50 (signed byte) form_cursor_count#47 -Alias (byte) keyboard_events_size#105 = (byte) keyboard_events_size#127 (byte) keyboard_events_size#129 (byte) keyboard_events_size#125 (byte) keyboard_events_size#123 (byte) keyboard_events_size#121 (byte) keyboard_events_size#119 (byte) keyboard_events_size#116 (byte) keyboard_events_size#112 (byte) keyboard_events_size#95 -Alias (byte) keyboard_modifiers#100 = (byte) keyboard_modifiers#108 (byte) keyboard_modifiers#110 (byte) keyboard_modifiers#106 (byte) keyboard_modifiers#104 (byte) keyboard_modifiers#102 (byte) keyboard_modifiers#98 (byte) keyboard_modifiers#96 (byte) keyboard_modifiers#92 (byte) keyboard_modifiers#86 +Alias (byte) keyboard_events_size#103 = (byte) keyboard_events_size#125 (byte) keyboard_events_size#127 (byte) keyboard_events_size#123 (byte) keyboard_events_size#121 (byte) keyboard_events_size#119 (byte) keyboard_events_size#117 (byte) keyboard_events_size#114 (byte) keyboard_events_size#110 (byte) keyboard_events_size#94 +Alias (byte) keyboard_modifiers#100 = (byte) keyboard_modifiers#106 (byte) keyboard_modifiers#108 (byte) keyboard_modifiers#104 (byte) keyboard_modifiers#102 (byte) keyboard_modifiers#98 (byte) keyboard_modifiers#96 (byte) keyboard_modifiers#94 (byte) keyboard_modifiers#90 (byte) keyboard_modifiers#85 Alias (byte) form_field_idx#49 = (byte) form_field_idx#65 (byte) form_field_idx#66 (byte) form_field_idx#64 (byte) form_field_idx#63 (byte) form_field_idx#62 (byte) form_field_idx#61 (byte) form_field_idx#58 (byte) form_field_idx#56 (byte) form_field_idx#52 Alias (byte*) print_screen#14 = (byte*) print_screen#5 (byte*) print_screen#27 (byte*) print_screen#21 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#28 @@ -8680,13 +8459,13 @@ Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#29 Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#30 Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#31 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#30 -Alias (byte*) print_screen#15 = (byte*) print_screen#6 (byte*) print_screen#49 (byte*) print_screen#48 (byte*) print_screen#46 (byte*) print_screen#43 (byte*) print_screen#40 +Alias (byte*) print_screen#15 = (byte*) print_screen#6 (byte*) print_screen#46 (byte*) print_screen#45 (byte*) print_screen#44 (byte*) print_screen#42 (byte*) print_screen#40 Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#31 Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#32 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#32 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#33 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#69 (byte*) print_char_cursor#66 (byte*) print_char_cursor#63 -Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#69 (byte*) print_line_cursor#66 (byte*) print_line_cursor#63 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#67 (byte*) print_char_cursor#65 (byte*) print_char_cursor#63 +Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#67 (byte*) print_line_cursor#65 (byte*) print_line_cursor#63 Alias (byte*) print_screen#29 = (byte*) print_screen#34 Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#57 Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#57 @@ -8699,13 +8478,13 @@ Alias (byte) keyboard_events_size#46 = (byte) keyboard_events_size#64 Alias (byte) keyboard_modifiers#43 = (byte) keyboard_modifiers#63 Alias (byte) form_field_idx#27 = (byte) form_field_idx#40 Alias (byte) form_mode::preset_current#2 = (byte) form_mode::preset_current#4 (byte) form_mode::preset_current#5 (byte) form_mode::preset_current#3 -Alias (byte*) print_screen#23 = (byte*) print_screen#31 (byte*) print_screen#35 (byte*) print_screen#28 (byte*) print_screen#44 (byte*) print_screen#41 (byte*) print_screen#36 (byte*) print_screen#30 -Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#52 (byte*) print_line_cursor#58 (byte*) print_line_cursor#49 (byte*) print_line_cursor#67 (byte*) print_line_cursor#64 (byte*) print_line_cursor#59 (byte*) print_line_cursor#51 -Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#58 (byte*) print_char_cursor#51 (byte*) print_char_cursor#67 (byte*) print_char_cursor#64 (byte*) print_char_cursor#59 (byte*) print_char_cursor#53 +Alias (byte*) print_screen#23 = (byte*) print_screen#31 (byte*) print_screen#35 (byte*) print_screen#28 (byte*) print_screen#43 (byte*) print_screen#41 (byte*) print_screen#36 (byte*) print_screen#30 +Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#52 (byte*) print_line_cursor#58 (byte*) print_line_cursor#49 (byte*) print_line_cursor#66 (byte*) print_line_cursor#64 (byte*) print_line_cursor#59 (byte*) print_line_cursor#51 +Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#58 (byte*) print_char_cursor#51 (byte*) print_char_cursor#66 (byte*) print_char_cursor#64 (byte*) print_char_cursor#59 (byte*) print_char_cursor#53 Alias (byte) form_control::return#0 = (byte) form_control::return#6 Alias (signed byte) form_cursor_count#12 = (signed byte) form_cursor_count#2 (signed byte) form_cursor_count#29 (signed byte) form_cursor_count#48 (signed byte) form_cursor_count#45 (signed byte) form_cursor_count#40 (signed byte) form_cursor_count#31 -Alias (byte) keyboard_events_size#106 = (byte) keyboard_events_size#12 (byte) keyboard_events_size#31 (byte) keyboard_events_size#61 (byte) keyboard_events_size#96 (byte) keyboard_events_size#84 (byte) keyboard_events_size#63 -Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#27 (byte) keyboard_modifiers#60 (byte) keyboard_modifiers#93 (byte) keyboard_modifiers#87 (byte) keyboard_modifiers#80 (byte) keyboard_modifiers#62 +Alias (byte) keyboard_events_size#104 = (byte) keyboard_events_size#12 (byte) keyboard_events_size#31 (byte) keyboard_events_size#61 (byte) keyboard_events_size#95 (byte) keyboard_events_size#84 (byte) keyboard_events_size#63 +Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#27 (byte) keyboard_modifiers#60 (byte) keyboard_modifiers#91 (byte) keyboard_modifiers#86 (byte) keyboard_modifiers#80 (byte) keyboard_modifiers#62 Alias (byte) form_field_idx#13 = (byte) form_field_idx#2 (byte) form_field_idx#37 (byte) form_field_idx#53 (byte) form_field_idx#50 (byte) form_field_idx#46 (byte) form_field_idx#39 Alias (byte*) print_screen#16 = (byte*) print_screen#7 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#34 @@ -8724,8 +8503,8 @@ Alias (byte*) form_field_ptr::return#2 = (byte*) form_field_ptr::return#5 Alias (byte*) form_render_values::field#0 = (byte*~) form_render_values::$1 Alias (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#6 Alias (signed byte) form_cursor_count#14 = (signed byte) form_cursor_count#22 -Alias (byte) keyboard_events_size#107 = (byte) keyboard_events_size#97 (byte) keyboard_events_size#98 -Alias (byte) keyboard_modifiers#88 = (byte) keyboard_modifiers#94 (byte) keyboard_modifiers#89 +Alias (byte) keyboard_events_size#105 = (byte) keyboard_events_size#96 (byte) keyboard_events_size#97 +Alias (byte) keyboard_modifiers#87 = (byte) keyboard_modifiers#92 (byte) keyboard_modifiers#88 Alias (byte) form_field_idx#15 = (byte) form_field_idx#59 (byte) form_field_idx#60 Alias (byte*) form_control::field#0 = (byte*~) form_control::$0 (byte*) form_control::field#11 Alias (byte*) form_control::field#1 = (byte*) form_control::field#5 (byte*) form_control::field#2 @@ -8764,7 +8543,7 @@ Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keyco Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3 Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 -Alias (byte) keyboard_events_size#100 = (byte) keyboard_events_size#101 (byte) keyboard_events_size#78 (byte) keyboard_events_size#39 (byte) keyboard_events_size#21 +Alias (byte) keyboard_events_size#100 = (byte) keyboard_events_size#111 (byte) keyboard_events_size#78 (byte) keyboard_events_size#39 (byte) keyboard_events_size#21 Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 @@ -8784,8 +8563,8 @@ Alias (byte) bitmap_line_ydxd::y1#2 = (byte) bitmap_line_ydxd::y1#3 Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#6 Alias (byte) bitmap_line_ydxd::xd#3 = (byte) bitmap_line_ydxd::xd#5 Alias (byte) bitmap_line_ydxd::yd#2 = (byte) bitmap_line_ydxd::yd#6 -Alias (byte) keyboard_events_size#118 = (byte) keyboard_events_size#144 (byte) keyboard_events_size#146 (byte) keyboard_events_size#142 (byte) keyboard_events_size#140 (byte) keyboard_events_size#138 (byte) keyboard_events_size#136 (byte) keyboard_events_size#134 (byte) keyboard_events_size#132 (byte) keyboard_events_size#130 -Alias (byte) keyboard_modifiers#101 = (byte) keyboard_modifiers#125 (byte) keyboard_modifiers#127 (byte) keyboard_modifiers#123 (byte) keyboard_modifiers#121 (byte) keyboard_modifiers#119 (byte) keyboard_modifiers#117 (byte) keyboard_modifiers#115 (byte) keyboard_modifiers#113 (byte) keyboard_modifiers#111 +Alias (byte) keyboard_events_size#116 = (byte) keyboard_events_size#142 (byte) keyboard_events_size#144 (byte) keyboard_events_size#140 (byte) keyboard_events_size#138 (byte) keyboard_events_size#136 (byte) keyboard_events_size#134 (byte) keyboard_events_size#132 (byte) keyboard_events_size#130 (byte) keyboard_events_size#128 +Alias (byte) keyboard_modifiers#101 = (byte) keyboard_modifiers#123 (byte) keyboard_modifiers#125 (byte) keyboard_modifiers#121 (byte) keyboard_modifiers#119 (byte) keyboard_modifiers#117 (byte) keyboard_modifiers#115 (byte) keyboard_modifiers#113 (byte) keyboard_modifiers#111 (byte) keyboard_modifiers#109 Alias (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#3 Alias (byte) gfx_init_plane_8bppchunky::y#2 = (byte) gfx_init_plane_8bppchunky::y#4 Alias (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#3 @@ -8798,8 +8577,8 @@ Alias (byte) gfx_init_plane_charset8::cr#2 = (byte) gfx_init_plane_charset8::cr# Alias (byte*) gfx_init_plane_charset8::chargen#4 = (byte*) gfx_init_plane_charset8::chargen#7 Alias (byte) gfx_init_plane_charset8::ch#2 = (byte) gfx_init_plane_charset8::ch#5 Alias (byte*) form_control::field#0 = (byte*) form_control::field#1 (byte*) form_control::field#10 (byte*) form_control::field#4 -Alias (byte) keyboard_events_size#107 = (byte) keyboard_events_size#65 (byte) keyboard_events_size#48 -Alias (byte) keyboard_modifiers#45 = (byte) keyboard_modifiers#64 (byte) keyboard_modifiers#88 +Alias (byte) keyboard_events_size#105 = (byte) keyboard_events_size#65 (byte) keyboard_events_size#48 +Alias (byte) keyboard_modifiers#45 = (byte) keyboard_modifiers#64 (byte) keyboard_modifiers#87 Alias (byte) form_field_idx#15 = (byte) form_field_idx#54 (byte) form_field_idx#16 (byte) form_field_idx#22 Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#23 (signed byte) form_cursor_count#24 Alias (byte) keyboard_events_size#15 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#51 @@ -8863,14 +8642,14 @@ Identical Phi Values (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#11 Identical Phi Values (byte) get_vic_charset::idx#1 (byte) get_vic_charset::idx#0 Identical Phi Values (byte) apply_preset::idx#1 (byte) apply_preset::idx#0 Identical Phi Values (byte*) apply_preset::preset#13 (byte*) apply_preset::preset#15 -Identical Phi Values (byte) keyboard_events_size#118 (byte) keyboard_events_size#25 +Identical Phi Values (byte) keyboard_events_size#116 (byte) keyboard_events_size#25 Identical Phi Values (byte) keyboard_modifiers#101 (byte) keyboard_modifiers#22 Identical Phi Values (byte) gfx_mode::cy#2 (byte) gfx_mode::cy#4 -Identical Phi Values (byte) keyboard_events_size#104 (byte) keyboard_events_size#115 -Identical Phi Values (byte) keyboard_modifiers#77 (byte) keyboard_modifiers#97 -Identical Phi Values (byte) keyboard_events_size#58 (byte) keyboard_events_size#104 +Identical Phi Values (byte) keyboard_events_size#102 (byte) keyboard_events_size#113 +Identical Phi Values (byte) keyboard_modifiers#77 (byte) keyboard_modifiers#95 +Identical Phi Values (byte) keyboard_events_size#58 (byte) keyboard_events_size#102 Identical Phi Values (byte) keyboard_modifiers#57 (byte) keyboard_modifiers#77 -Identical Phi Values (byte) keyboard_events_size#59 (byte) keyboard_events_size#104 +Identical Phi Values (byte) keyboard_events_size#59 (byte) keyboard_events_size#102 Identical Phi Values (byte) keyboard_modifiers#58 (byte) keyboard_modifiers#77 Identical Phi Values (byte) keyboard_events_size#44 (byte) keyboard_events_size#45 Identical Phi Values (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#41 @@ -8896,7 +8675,7 @@ Identical Phi Values (byte*) print_screen#20 (byte*) print_screen#13 Identical Phi Values (byte*) print_line_cursor#41 (byte*) print_line_cursor#10 Identical Phi Values (byte*) print_char_cursor#43 (byte*) print_char_cursor#11 Identical Phi Values (signed byte) form_cursor_count#44 (signed byte) form_cursor_count#1 -Identical Phi Values (byte) keyboard_events_size#105 (byte) keyboard_events_size#27 +Identical Phi Values (byte) keyboard_events_size#103 (byte) keyboard_events_size#27 Identical Phi Values (byte) keyboard_modifiers#100 (byte) keyboard_modifiers#24 Identical Phi Values (byte) form_field_idx#49 (byte) form_field_idx#1 Identical Phi Values (byte*) print_screen#14 (byte*) print_screen#1 @@ -8917,7 +8696,7 @@ Identical Phi Values (byte*) print_screen#29 (byte*) print_screen#15 Identical Phi Values (byte*) print_line_cursor#50 (byte*) print_line_cursor#16 Identical Phi Values (byte*) print_char_cursor#52 (byte*) print_char_cursor#17 Identical Phi Values (signed byte) form_cursor_count#30 (signed byte) form_cursor_count#44 -Identical Phi Values (byte) keyboard_events_size#62 (byte) keyboard_events_size#105 +Identical Phi Values (byte) keyboard_events_size#62 (byte) keyboard_events_size#103 Identical Phi Values (byte) keyboard_modifiers#61 (byte) keyboard_modifiers#100 Identical Phi Values (byte) form_field_idx#38 (byte) form_field_idx#49 Identical Phi Values (signed byte) form_cursor_count#20 (signed byte) form_cursor_count#21 @@ -8929,13 +8708,13 @@ Identical Phi Values (byte*) print_screen#23 (byte*) print_screen#22 Identical Phi Values (byte*) print_line_cursor#43 (byte*) print_line_cursor#42 Identical Phi Values (byte*) print_char_cursor#45 (byte*) print_char_cursor#44 Identical Phi Values (signed byte) form_cursor_count#12 (signed byte) form_cursor_count#16 -Identical Phi Values (byte) keyboard_events_size#106 (byte) keyboard_events_size#15 +Identical Phi Values (byte) keyboard_events_size#104 (byte) keyboard_events_size#15 Identical Phi Values (byte) keyboard_modifiers#12 (byte) keyboard_modifiers#14 Identical Phi Values (byte) form_field_idx#13 (byte) form_field_idx#18 Identical Phi Values (byte*) form_set_screen::line#0 (byte*) form_set_screen::screen#0 Identical Phi Values (byte) form_field_idx#15 (byte) form_field_idx#27 Identical Phi Values (signed byte) form_cursor_count#14 (signed byte) form_cursor_count#20 -Identical Phi Values (byte) keyboard_events_size#107 (byte) keyboard_events_size#46 +Identical Phi Values (byte) keyboard_events_size#105 (byte) keyboard_events_size#46 Identical Phi Values (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#43 Identical Phi Values (byte) keyboard_events_size#14 (byte) keyboard_events_size#100 Identical Phi Values (byte) keyboard_modifiers#14 (byte) keyboard_modifiers#21 @@ -8954,8 +8733,8 @@ Identical Phi Values (byte*) print_line_cursor#45 (byte*) print_line_cursor#24 Identical Phi Values (byte*) print_line_cursor#24 (byte*) print_screen#1 Identical Phi Values (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 Identical Phi Values (byte) keyboard_events_size#22 (byte) keyboard_events_size#100 -Identical Phi Values (byte) keyboard_events_size#115 (byte) keyboard_events_size#13 -Identical Phi Values (byte) keyboard_modifiers#97 (byte) keyboard_modifiers#13 +Identical Phi Values (byte) keyboard_events_size#113 (byte) keyboard_events_size#13 +Identical Phi Values (byte) keyboard_modifiers#95 (byte) keyboard_modifiers#13 Identical Phi Values (byte) gfx_init_plane_charset8::ch#7 (byte) gfx_init_plane_charset8::ch#8 Identical Phi Values (byte) gfx_init_plane_fill::fill#4 (byte) gfx_init_plane_fill::fill#6 Identical Phi Values (byte*) print_screen#22 (byte*) print_screen#1 @@ -8965,226 +8744,201 @@ Identical Phi Values (byte*) print_screen#16 (byte*) print_screen#22 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#42 Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#44 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [274] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -Identified duplicate assignment right side [921] (word~) gfx_mode::$24 ← < (dword) gfx_mode::plane_a#0 -Identified duplicate assignment right side [947] (word~) gfx_mode::$38 ← < (dword) gfx_mode::plane_b#0 +Identified duplicate assignment right side [270] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 +Identified duplicate assignment right side [828] (word~) gfx_mode::$24 ← < (dword) gfx_mode::plane_a#0 +Identified duplicate assignment right side [854] (word~) gfx_mode::$38 ← < (dword) gfx_mode::plane_b#0 Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) memset::$1 [8] if((word) memset::num#0<=(byte) 0) goto memset::@1 -Simple Condition (bool~) memset::$4 [18] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 -Simple Condition (bool~) print_str_lines::$2 [31] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@4 -Simple Condition (bool~) print_str_lines::$0 [37] if((byte) 0==(byte) print_str_lines::ch#0) goto print_str_lines::@5 -Simple Condition (bool~) print_str_lines::$3 [40] if((byte) 0!=(byte) print_str_lines::ch#0) goto print_str_lines::@4 -Simple Condition (bool~) print_str_at::$0 [56] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 -Simple Condition (bool~) print_ln::$1 [67] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 -Simple Condition (bool~) keyboard_event_scan::$13 [126] if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -Simple Condition (bool~) keyboard_event_scan::$25 [135] if((byte) keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 -Simple Condition (bool~) keyboard_event_scan::$18 [141] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@12 -Simple Condition (bool~) keyboard_event_scan::$24 [146] if((byte) keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 -Simple Condition (bool~) keyboard_event_scan::$20 [150] if((byte) keyboard_events_size#18==(byte) 8) goto keyboard_event_scan::@12 -Simple Condition (bool~) keyboard_event_scan::$22 [155] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@14 -Simple Condition (bool~) keyboard_event_scan::$2 [174] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -Simple Condition (bool~) keyboard_event_scan::$5 [183] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -Simple Condition (bool~) keyboard_event_scan::$8 [195] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -Simple Condition (bool~) keyboard_event_scan::$11 [207] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -Simple Condition (bool~) keyboard_event_get::$0 [229] if((byte) keyboard_events_size#100==(byte) 0) goto keyboard_event_get::@1 -Simple Condition (bool~) bitmap_init::$4 [258] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 -Simple Condition (bool~) bitmap_init::$5 [262] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 -Simple Condition (bool~) bitmap_init::$12 [277] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@6 -Simple Condition (bool~) bitmap_init::$14 [281] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 -Simple Condition (bool~) bitmap_clear::$1 [297] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 -Simple Condition (bool~) bitmap_clear::$2 [301] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 -Simple Condition (bool~) bitmap_line::$0 [317] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -Simple Condition (bool~) bitmap_line::$12 [322] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20 -Simple Condition (bool~) bitmap_line::$2 [327] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10 -Simple Condition (bool~) bitmap_line::$8 [332] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15 -Simple Condition (bool~) bitmap_line::$4 [337] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11 -Simple Condition (bool~) bitmap_line::$18 [370] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25 -Simple Condition (bool~) bitmap_line::$14 [375] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21 -Simple Condition (bool~) bitmap_line_xdyi::$4 [418] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -Simple Condition (bool~) bitmap_line_xdyi::$7 [422] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -Simple Condition (bool~) bitmap_line_xdyd::$4 [441] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -Simple Condition (bool~) bitmap_line_xdyd::$7 [445] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -Simple Condition (bool~) bitmap_line_ydxi::$4 [464] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -Simple Condition (bool~) bitmap_line_ydxi::$7 [468] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -Simple Condition (bool~) bitmap_line_ydxd::$4 [488] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -Simple Condition (bool~) bitmap_line_ydxd::$7 [492] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -Simple Condition (bool~) get_plane::$0 [534] if((byte) get_plane::idx#10==(byte) 0) goto get_plane::@1 -Simple Condition (bool~) get_plane::$1 [539] if((byte) get_plane::idx#10==(byte) 1) goto get_plane::@2 -Simple Condition (bool~) get_plane::$2 [544] if((byte) get_plane::idx#10==(byte) 2) goto get_plane::@3 -Simple Condition (bool~) get_plane::$3 [549] if((byte) get_plane::idx#10==(byte) 3) goto get_plane::@4 -Simple Condition (bool~) get_plane::$4 [554] if((byte) get_plane::idx#10==(byte) 4) goto get_plane::@5 -Simple Condition (bool~) get_plane::$5 [559] if((byte) get_plane::idx#10==(byte) 5) goto get_plane::@6 -Simple Condition (bool~) get_plane::$6 [564] if((byte) get_plane::idx#10==(byte) 6) goto get_plane::@7 -Simple Condition (bool~) get_plane::$7 [569] if((byte) get_plane::idx#10==(byte) 7) goto get_plane::@8 -Simple Condition (bool~) get_plane::$8 [574] if((byte) get_plane::idx#10==(byte) 8) goto get_plane::@9 -Simple Condition (bool~) get_plane::$9 [579] if((byte) get_plane::idx#10==(byte) 9) goto get_plane::@10 -Simple Condition (bool~) get_plane::$10 [584] if((byte) get_plane::idx#10==(byte) $a) goto get_plane::@11 -Simple Condition (bool~) get_plane::$11 [589] if((byte) get_plane::idx#10==(byte) $b) goto get_plane::@12 -Simple Condition (bool~) get_plane::$12 [594] if((byte) get_plane::idx#10==(byte) $c) goto get_plane::@13 -Simple Condition (bool~) get_plane::$14 [600] if((byte) get_plane::idx#10!=(byte) $d) goto get_plane::@27 -Simple Condition (bool~) get_vic_screen::$0 [610] if((byte) get_vic_screen::idx#2==(byte) 0) goto get_vic_screen::@1 -Simple Condition (bool~) get_vic_screen::$1 [614] if((byte) get_vic_screen::idx#2==(byte) 1) goto get_vic_screen::@2 -Simple Condition (bool~) get_vic_screen::$2 [618] if((byte) get_vic_screen::idx#2==(byte) 2) goto get_vic_screen::@3 -Simple Condition (bool~) get_vic_screen::$3 [622] if((byte) get_vic_screen::idx#2==(byte) 3) goto get_vic_screen::@4 -Simple Condition (bool~) get_vic_screen::$5 [627] if((byte) get_vic_screen::idx#2!=(byte) 4) goto get_vic_screen::@9 -Simple Condition (bool~) get_vic_charset::$0 [635] if((byte) get_vic_charset::idx#0==(byte) 0) goto get_vic_charset::@1 -Simple Condition (bool~) get_vic_charset::$2 [640] if((byte) get_vic_charset::idx#0!=(byte) 1) goto get_vic_charset::@3 -Simple Condition (bool~) apply_preset::$0 [665] if((byte) apply_preset::idx#0==(byte) 0) goto apply_preset::@1 -Simple Condition (bool~) apply_preset::$1 [669] if((byte) apply_preset::idx#0==(byte) 1) goto apply_preset::@2 -Simple Condition (bool~) apply_preset::$2 [673] if((byte) apply_preset::idx#0==(byte) 2) goto apply_preset::@3 -Simple Condition (bool~) apply_preset::$3 [677] if((byte) apply_preset::idx#0==(byte) 3) goto apply_preset::@4 -Simple Condition (bool~) apply_preset::$4 [681] if((byte) apply_preset::idx#0==(byte) 4) goto apply_preset::@5 -Simple Condition (bool~) apply_preset::$5 [685] if((byte) apply_preset::idx#0==(byte) 5) goto apply_preset::@6 -Simple Condition (bool~) apply_preset::$6 [689] if((byte) apply_preset::idx#0==(byte) 6) goto apply_preset::@7 -Simple Condition (bool~) apply_preset::$7 [693] if((byte) apply_preset::idx#0==(byte) 7) goto apply_preset::@8 -Simple Condition (bool~) apply_preset::$8 [697] if((byte) apply_preset::idx#0==(byte) 8) goto apply_preset::@9 -Simple Condition (bool~) apply_preset::$9 [701] if((byte) apply_preset::idx#0==(byte) 9) goto apply_preset::@10 -Simple Condition (bool~) apply_preset::$10 [705] if((byte) apply_preset::idx#0==(byte) $a) goto apply_preset::@11 -Simple Condition (bool~) apply_preset::$11 [712] if((byte) apply_preset::i#2!=(const byte) form_fields_cnt) goto apply_preset::@46 -Simple Condition (bool~) render_preset_name::$0 [720] if((byte) render_preset_name::idx#10==(byte) 0) goto render_preset_name::@1 -Simple Condition (bool~) render_preset_name::$1 [724] if((byte) render_preset_name::idx#10==(byte) 1) goto render_preset_name::@2 -Simple Condition (bool~) render_preset_name::$2 [728] if((byte) render_preset_name::idx#10==(byte) 2) goto render_preset_name::@3 -Simple Condition (bool~) render_preset_name::$3 [732] if((byte) render_preset_name::idx#10==(byte) 3) goto render_preset_name::@4 -Simple Condition (bool~) render_preset_name::$4 [736] if((byte) render_preset_name::idx#10==(byte) 4) goto render_preset_name::@5 -Simple Condition (bool~) render_preset_name::$5 [740] if((byte) render_preset_name::idx#10==(byte) 5) goto render_preset_name::@6 -Simple Condition (bool~) render_preset_name::$6 [744] if((byte) render_preset_name::idx#10==(byte) 6) goto render_preset_name::@7 -Simple Condition (bool~) render_preset_name::$7 [748] if((byte) render_preset_name::idx#10==(byte) 7) goto render_preset_name::@8 -Simple Condition (bool~) render_preset_name::$8 [752] if((byte) render_preset_name::idx#10==(byte) 8) goto render_preset_name::@9 -Simple Condition (bool~) render_preset_name::$9 [756] if((byte) render_preset_name::idx#10==(byte) 9) goto render_preset_name::@10 -Simple Condition (bool~) render_preset_name::$10 [760] if((byte) render_preset_name::idx#10==(byte) $a) goto render_preset_name::@11 -Simple Condition (bool~) gfx_mode::$1 [845] if(*((byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 -Simple Condition (bool~) gfx_mode::$3 [849] if(*((byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 -Simple Condition (bool~) gfx_mode::$5 [856] if(*((byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 -Simple Condition (bool~) gfx_mode::$7 [863] if(*((byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 -Simple Condition (bool~) gfx_mode::$9 [870] if(*((byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 -Simple Condition (bool~) gfx_mode::$11 [877] if(*((byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 -Simple Condition (bool~) gfx_mode::$13 [886] if(*((byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 -Simple Condition (bool~) gfx_mode::$15 [893] if(*((byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 -Simple Condition (bool~) gfx_mode::$17 [902] if(*((byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 -Simple Condition (bool~) gfx_mode::$80 [1005] if((byte) gfx_mode::cx#1!=rangelast(0,$27)) goto gfx_mode::@22 -Simple Condition (bool~) gfx_mode::$81 [1009] if((byte) gfx_mode::cy#1!=rangelast(0,$18)) goto gfx_mode::@21 -Simple Condition (bool~) gfx_mode::$70 [1025] if(*((byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@10 -Simple Condition (bool~) gfx_mode::$82 [1034] if((byte) gfx_mode::j#1!=rangelast(0,$f)) goto gfx_mode::@26 -Simple Condition (bool~) gfx_mode::$83 [1039] if((byte) gfx_mode::i#1!=rangelast(0,$f)) goto gfx_mode::@29 -Simple Condition (bool~) gfx_mode::$84 [1044] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@34 -Simple Condition (bool~) gfx_mode::$88 [1058] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE) goto gfx_mode::@31 -Simple Condition (bool~) gfx_init_charset::$0 [1091] if((byte) gfx_init_charset::l#1!=rangelast(0,7)) goto gfx_init_charset::@2 -Simple Condition (bool~) gfx_init_charset::$1 [1095] if((byte) gfx_init_charset::c#1!=rangelast(0,$ff)) goto gfx_init_charset::@1 -Simple Condition (bool~) gfx_init_screen0::$4 [1111] if((byte) gfx_init_screen0::cx#1!=rangelast(0,$27)) goto gfx_init_screen0::@2 -Simple Condition (bool~) gfx_init_screen0::$5 [1115] if((byte) gfx_init_screen0::cy#1!=rangelast(0,$18)) goto gfx_init_screen0::@1 -Simple Condition (bool~) gfx_init_screen1::$2 [1128] if((byte) gfx_init_screen1::cx#1!=rangelast(0,$27)) goto gfx_init_screen1::@2 -Simple Condition (bool~) gfx_init_screen1::$3 [1132] if((byte) gfx_init_screen1::cy#1!=rangelast(0,$18)) goto gfx_init_screen1::@1 -Simple Condition (bool~) gfx_init_screen2::$5 [1150] if((byte) gfx_init_screen2::cx#1!=rangelast(0,$27)) goto gfx_init_screen2::@2 -Simple Condition (bool~) gfx_init_screen2::$6 [1154] if((byte) gfx_init_screen2::cy#1!=rangelast(0,$18)) goto gfx_init_screen2::@1 -Simple Condition (bool~) gfx_init_screen3::$4 [1169] if((byte) gfx_init_screen3::cx#1!=rangelast(0,$27)) goto gfx_init_screen3::@2 -Simple Condition (bool~) gfx_init_screen3::$5 [1173] if((byte) gfx_init_screen3::cy#1!=rangelast(0,$18)) goto gfx_init_screen3::@1 -Simple Condition (bool~) gfx_init_screen4::$0 [1184] if((byte) gfx_init_screen4::cx#1!=rangelast(0,$27)) goto gfx_init_screen4::@2 -Simple Condition (bool~) gfx_init_screen4::$1 [1188] if((byte) gfx_init_screen4::cy#1!=rangelast(0,$18)) goto gfx_init_screen4::@1 -Simple Condition (bool~) gfx_init_vic_bitmap::$2 [1198] if((byte) gfx_init_vic_bitmap::l#2<(const byte) gfx_init_vic_bitmap::lines_cnt) goto gfx_init_vic_bitmap::@2 -Simple Condition (bool~) gfx_init_plane_8bppchunky::$5 [1223] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word) $8000) goto gfx_init_plane_8bppchunky::@3 -Simple Condition (bool~) gfx_init_plane_8bppchunky::$9 [1232] if((word) gfx_init_plane_8bppchunky::x#1!=rangelast(0,$13f)) goto gfx_init_plane_8bppchunky::@2 -Simple Condition (bool~) gfx_init_plane_8bppchunky::$10 [1242] if((byte) gfx_init_plane_8bppchunky::y#1!=rangelast(0,$c7)) goto gfx_init_plane_8bppchunky::@1 -Simple Condition (bool~) gfx_init_plane_horisontal::$5 [1260] if((byte~) gfx_init_plane_horisontal::$4==(byte) 0) goto gfx_init_plane_horisontal::@3 -Simple Condition (bool~) gfx_init_plane_horisontal::$6 [1270] if((byte) gfx_init_plane_horisontal::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal::@2 -Simple Condition (bool~) gfx_init_plane_horisontal::$7 [1274] if((byte) gfx_init_plane_horisontal::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal::@1 -Simple Condition (bool~) gfx_init_plane_horisontal2::$6 [1298] if((byte) gfx_init_plane_horisontal2::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal2::@2 -Simple Condition (bool~) gfx_init_plane_horisontal2::$7 [1302] if((byte) gfx_init_plane_horisontal2::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal2::@1 -Simple Condition (bool~) gfx_init_plane_vertical::$4 [1322] if((byte) gfx_init_plane_vertical::bx#1!=rangelast(0,$27)) goto gfx_init_plane_vertical::@2 -Simple Condition (bool~) gfx_init_plane_vertical::$5 [1326] if((byte) gfx_init_plane_vertical::by#1!=rangelast(0,$c7)) goto gfx_init_plane_vertical::@1 -Simple Condition (bool~) gfx_init_plane_charset8::$6 [1353] if((byte~) gfx_init_plane_charset8::$4==(byte) 0) goto gfx_init_plane_charset8::@4 -Simple Condition (bool~) gfx_init_plane_charset8::$8 [1362] if((byte) gfx_init_plane_charset8::cp#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@3 -Simple Condition (bool~) gfx_init_plane_charset8::$9 [1368] if((byte) gfx_init_plane_charset8::cr#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@2 -Simple Condition (bool~) gfx_init_plane_charset8::$10 [1372] if((byte) gfx_init_plane_charset8::ch#1!=rangelast(0,$ff)) goto gfx_init_plane_charset8::@1 -Simple Condition (bool~) gfx_init_plane_fill::$9 [1411] if((byte) gfx_init_plane_fill::bx#1!=rangelast(0,$27)) goto gfx_init_plane_fill::@2 -Simple Condition (bool~) gfx_init_plane_fill::$10 [1415] if((byte) gfx_init_plane_fill::by#1!=rangelast(0,$c7)) goto gfx_init_plane_fill::@1 -Simple Condition (bool~) form_mode::$28 [1495] if((byte) form_mode::i#1!=rangelast(0,$f)) goto form_mode::@1 -Simple Condition (bool~) form_mode::$29 [1504] if(*((const byte*) RASTER)!=(byte) $ff) goto form_mode::@6 -Simple Condition (bool~) form_mode::$32 [1516] if((byte~) form_mode::$30==(byte) 0) goto form_mode::@14 -Simple Condition (bool~) form_mode::$34 [1520] if((byte) form_mode::preset_current#6==*((byte*) form_preset)) goto form_mode::@3 -Simple Condition (bool~) form_set_screen::$3 [1557] if((byte) form_set_screen::y#1!=rangelast(0,$18)) goto form_set_screen::@1 -Simple Condition (bool~) form_render_values::$0 [1574] if((byte) form_render_values::idx#2<(const byte) form_fields_cnt) goto form_render_values::@2 -Simple Condition (bool~) form_control::$2 [1595] if((signed byte) form_cursor_count#5>=(signed byte) 0) goto form_control::@1 -Simple Condition (bool~) form_control::$3 [1598] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK/(signed byte) 2) goto form_control::@2 -Simple Condition (bool~) form_control::$7 [1620] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN) goto form_control::@4 -Simple Condition (bool~) form_control::$9 [1624] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT) goto form_control::@5 -Simple Condition (bool~) form_control::$16 [1630] if((byte~) form_control::$15==(byte) 0) goto form_control::@19 -Simple Condition (bool~) form_control::$21 [1635] if((byte) form_field_idx#5!=(const byte) form_fields_cnt) goto form_control::@22 -Simple Condition (bool~) form_control::$18 [1640] if((byte) form_field_idx#6!=(byte) $ff) goto form_control::@22 -Simple Condition (bool~) form_control::$11 [1659] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE) goto form_control::@6 -Simple Condition (bool~) form_control::$23 [1663] if((byte~) form_control::$22==(byte) 0) goto form_control::@26 -Simple Condition (bool~) form_control::$27 [1668] if(*((byte[]) form_fields_val + (byte) form_field_idx#28)<=*((byte[]) form_fields_max + (byte) form_field_idx#28)) goto form_control::@29 -Simple Condition (bool~) form_control::$25 [1673] if(*((byte[]) form_fields_val + (byte) form_field_idx#28)!=(byte) $ff) goto form_control::@29 +Simple Condition (bool~) memset::$1 [7] if((word) memset::num#0<=(byte) 0) goto memset::@1 +Simple Condition (bool~) memset::$4 [17] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 +Simple Condition (bool~) print_str_lines::$2 [30] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@4 +Simple Condition (bool~) print_str_lines::$0 [36] if((byte) 0==(byte) print_str_lines::ch#0) goto print_str_lines::@5 +Simple Condition (bool~) print_str_lines::$3 [39] if((byte) 0!=(byte) print_str_lines::ch#0) goto print_str_lines::@4 +Simple Condition (bool~) print_str_at::$0 [55] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 +Simple Condition (bool~) print_ln::$1 [66] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 +Simple Condition (bool~) keyboard_event_scan::$13 [122] if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 +Simple Condition (bool~) keyboard_event_scan::$25 [131] if((byte) keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 +Simple Condition (bool~) keyboard_event_scan::$18 [137] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@12 +Simple Condition (bool~) keyboard_event_scan::$24 [142] if((byte) keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 +Simple Condition (bool~) keyboard_event_scan::$20 [146] if((byte) keyboard_events_size#18==(byte) 8) goto keyboard_event_scan::@12 +Simple Condition (bool~) keyboard_event_scan::$22 [151] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@14 +Simple Condition (bool~) keyboard_event_scan::$2 [170] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 +Simple Condition (bool~) keyboard_event_scan::$5 [179] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 +Simple Condition (bool~) keyboard_event_scan::$8 [191] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 +Simple Condition (bool~) keyboard_event_scan::$11 [203] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return +Simple Condition (bool~) keyboard_event_get::$0 [225] if((byte) keyboard_events_size#100==(byte) 0) goto keyboard_event_get::@1 +Simple Condition (bool~) bitmap_init::$4 [254] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$5 [258] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$12 [273] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@6 +Simple Condition (bool~) bitmap_init::$14 [277] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 +Simple Condition (bool~) bitmap_clear::$1 [293] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 +Simple Condition (bool~) bitmap_clear::$2 [297] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 +Simple Condition (bool~) bitmap_line::$0 [313] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 +Simple Condition (bool~) bitmap_line::$12 [318] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20 +Simple Condition (bool~) bitmap_line::$2 [323] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10 +Simple Condition (bool~) bitmap_line::$8 [328] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15 +Simple Condition (bool~) bitmap_line::$4 [333] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11 +Simple Condition (bool~) bitmap_line::$18 [366] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25 +Simple Condition (bool~) bitmap_line::$14 [371] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21 +Simple Condition (bool~) bitmap_line_xdyi::$4 [414] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 +Simple Condition (bool~) bitmap_line_xdyi::$7 [418] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 +Simple Condition (bool~) bitmap_line_xdyd::$4 [437] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 +Simple Condition (bool~) bitmap_line_xdyd::$7 [441] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 +Simple Condition (bool~) bitmap_line_ydxi::$4 [460] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 +Simple Condition (bool~) bitmap_line_ydxi::$7 [464] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 +Simple Condition (bool~) bitmap_line_ydxd::$4 [484] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 +Simple Condition (bool~) bitmap_line_ydxd::$7 [488] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 +Simple Condition (bool~) get_plane::$0 [530] if((byte) get_plane::idx#10==(byte) 0) goto get_plane::@1 +Simple Condition (bool~) get_plane::$1 [535] if((byte) get_plane::idx#10==(byte) 1) goto get_plane::@2 +Simple Condition (bool~) get_plane::$2 [540] if((byte) get_plane::idx#10==(byte) 2) goto get_plane::@3 +Simple Condition (bool~) get_plane::$3 [545] if((byte) get_plane::idx#10==(byte) 3) goto get_plane::@4 +Simple Condition (bool~) get_plane::$4 [550] if((byte) get_plane::idx#10==(byte) 4) goto get_plane::@5 +Simple Condition (bool~) get_plane::$5 [555] if((byte) get_plane::idx#10==(byte) 5) goto get_plane::@6 +Simple Condition (bool~) get_plane::$6 [560] if((byte) get_plane::idx#10==(byte) 6) goto get_plane::@7 +Simple Condition (bool~) get_plane::$7 [565] if((byte) get_plane::idx#10==(byte) 7) goto get_plane::@8 +Simple Condition (bool~) get_plane::$8 [570] if((byte) get_plane::idx#10==(byte) 8) goto get_plane::@9 +Simple Condition (bool~) get_plane::$9 [575] if((byte) get_plane::idx#10==(byte) 9) goto get_plane::@10 +Simple Condition (bool~) get_plane::$10 [580] if((byte) get_plane::idx#10==(byte) $a) goto get_plane::@11 +Simple Condition (bool~) get_plane::$11 [585] if((byte) get_plane::idx#10==(byte) $b) goto get_plane::@12 +Simple Condition (bool~) get_plane::$12 [590] if((byte) get_plane::idx#10==(byte) $c) goto get_plane::@13 +Simple Condition (bool~) get_plane::$14 [596] if((byte) get_plane::idx#10!=(byte) $d) goto get_plane::@27 +Simple Condition (bool~) get_vic_screen::$0 [606] if((byte) get_vic_screen::idx#2==(byte) 0) goto get_vic_screen::@1 +Simple Condition (bool~) get_vic_screen::$1 [610] if((byte) get_vic_screen::idx#2==(byte) 1) goto get_vic_screen::@2 +Simple Condition (bool~) get_vic_screen::$2 [614] if((byte) get_vic_screen::idx#2==(byte) 2) goto get_vic_screen::@3 +Simple Condition (bool~) get_vic_screen::$3 [618] if((byte) get_vic_screen::idx#2==(byte) 3) goto get_vic_screen::@4 +Simple Condition (bool~) get_vic_screen::$5 [623] if((byte) get_vic_screen::idx#2!=(byte) 4) goto get_vic_screen::@9 +Simple Condition (bool~) get_vic_charset::$0 [631] if((byte) get_vic_charset::idx#0==(byte) 0) goto get_vic_charset::@1 +Simple Condition (bool~) get_vic_charset::$2 [636] if((byte) get_vic_charset::idx#0!=(byte) 1) goto get_vic_charset::@3 +Simple Condition (bool~) apply_preset::$0 [645] if((byte) apply_preset::idx#0==(byte) 0) goto apply_preset::@1 +Simple Condition (bool~) apply_preset::$1 [649] if((byte) apply_preset::idx#0==(byte) 1) goto apply_preset::@2 +Simple Condition (bool~) apply_preset::$2 [653] if((byte) apply_preset::idx#0==(byte) 2) goto apply_preset::@3 +Simple Condition (bool~) apply_preset::$3 [657] if((byte) apply_preset::idx#0==(byte) 3) goto apply_preset::@4 +Simple Condition (bool~) apply_preset::$4 [661] if((byte) apply_preset::idx#0==(byte) 4) goto apply_preset::@5 +Simple Condition (bool~) apply_preset::$5 [665] if((byte) apply_preset::idx#0==(byte) 5) goto apply_preset::@6 +Simple Condition (bool~) apply_preset::$6 [669] if((byte) apply_preset::idx#0==(byte) 6) goto apply_preset::@7 +Simple Condition (bool~) apply_preset::$7 [673] if((byte) apply_preset::idx#0==(byte) 7) goto apply_preset::@8 +Simple Condition (bool~) apply_preset::$8 [677] if((byte) apply_preset::idx#0==(byte) 8) goto apply_preset::@9 +Simple Condition (bool~) apply_preset::$9 [681] if((byte) apply_preset::idx#0==(byte) 9) goto apply_preset::@10 +Simple Condition (bool~) apply_preset::$10 [685] if((byte) apply_preset::idx#0==(byte) $a) goto apply_preset::@11 +Simple Condition (bool~) apply_preset::$11 [692] if((byte) apply_preset::i#2!=(const byte) form_fields_cnt) goto apply_preset::@46 +Simple Condition (bool~) render_preset_name::$0 [700] if((byte) render_preset_name::idx#10==(byte) 0) goto render_preset_name::@1 +Simple Condition (bool~) render_preset_name::$1 [704] if((byte) render_preset_name::idx#10==(byte) 1) goto render_preset_name::@2 +Simple Condition (bool~) render_preset_name::$2 [708] if((byte) render_preset_name::idx#10==(byte) 2) goto render_preset_name::@3 +Simple Condition (bool~) render_preset_name::$3 [712] if((byte) render_preset_name::idx#10==(byte) 3) goto render_preset_name::@4 +Simple Condition (bool~) render_preset_name::$4 [716] if((byte) render_preset_name::idx#10==(byte) 4) goto render_preset_name::@5 +Simple Condition (bool~) render_preset_name::$5 [720] if((byte) render_preset_name::idx#10==(byte) 5) goto render_preset_name::@6 +Simple Condition (bool~) render_preset_name::$6 [724] if((byte) render_preset_name::idx#10==(byte) 6) goto render_preset_name::@7 +Simple Condition (bool~) render_preset_name::$7 [728] if((byte) render_preset_name::idx#10==(byte) 7) goto render_preset_name::@8 +Simple Condition (bool~) render_preset_name::$8 [732] if((byte) render_preset_name::idx#10==(byte) 8) goto render_preset_name::@9 +Simple Condition (bool~) render_preset_name::$9 [736] if((byte) render_preset_name::idx#10==(byte) 9) goto render_preset_name::@10 +Simple Condition (bool~) render_preset_name::$10 [740] if((byte) render_preset_name::idx#10==(byte) $a) goto render_preset_name::@11 +Simple Condition (bool~) gfx_mode::$1 [752] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 +Simple Condition (bool~) gfx_mode::$3 [756] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 +Simple Condition (bool~) gfx_mode::$5 [763] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 +Simple Condition (bool~) gfx_mode::$7 [770] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 +Simple Condition (bool~) gfx_mode::$9 [777] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 +Simple Condition (bool~) gfx_mode::$11 [784] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 +Simple Condition (bool~) gfx_mode::$13 [793] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 +Simple Condition (bool~) gfx_mode::$15 [800] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 +Simple Condition (bool~) gfx_mode::$17 [809] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 +Simple Condition (bool~) gfx_mode::$80 [912] if((byte) gfx_mode::cx#1!=rangelast(0,$27)) goto gfx_mode::@22 +Simple Condition (bool~) gfx_mode::$81 [916] if((byte) gfx_mode::cy#1!=rangelast(0,$18)) goto gfx_mode::@21 +Simple Condition (bool~) gfx_mode::$70 [932] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@10 +Simple Condition (bool~) gfx_mode::$82 [941] if((byte) gfx_mode::j#1!=rangelast(0,$f)) goto gfx_mode::@26 +Simple Condition (bool~) gfx_mode::$83 [946] if((byte) gfx_mode::i#1!=rangelast(0,$f)) goto gfx_mode::@29 +Simple Condition (bool~) gfx_mode::$84 [951] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@34 +Simple Condition (bool~) gfx_mode::$88 [965] if((byte) gfx_mode::keyboard_event#0!=(const byte) KEY_SPACE) goto gfx_mode::@31 +Simple Condition (bool~) gfx_init_charset::$0 [998] if((byte) gfx_init_charset::l#1!=rangelast(0,7)) goto gfx_init_charset::@2 +Simple Condition (bool~) gfx_init_charset::$1 [1002] if((byte) gfx_init_charset::c#1!=rangelast(0,$ff)) goto gfx_init_charset::@1 +Simple Condition (bool~) gfx_init_screen0::$4 [1018] if((byte) gfx_init_screen0::cx#1!=rangelast(0,$27)) goto gfx_init_screen0::@2 +Simple Condition (bool~) gfx_init_screen0::$5 [1022] if((byte) gfx_init_screen0::cy#1!=rangelast(0,$18)) goto gfx_init_screen0::@1 +Simple Condition (bool~) gfx_init_screen1::$2 [1035] if((byte) gfx_init_screen1::cx#1!=rangelast(0,$27)) goto gfx_init_screen1::@2 +Simple Condition (bool~) gfx_init_screen1::$3 [1039] if((byte) gfx_init_screen1::cy#1!=rangelast(0,$18)) goto gfx_init_screen1::@1 +Simple Condition (bool~) gfx_init_screen2::$5 [1057] if((byte) gfx_init_screen2::cx#1!=rangelast(0,$27)) goto gfx_init_screen2::@2 +Simple Condition (bool~) gfx_init_screen2::$6 [1061] if((byte) gfx_init_screen2::cy#1!=rangelast(0,$18)) goto gfx_init_screen2::@1 +Simple Condition (bool~) gfx_init_screen3::$4 [1076] if((byte) gfx_init_screen3::cx#1!=rangelast(0,$27)) goto gfx_init_screen3::@2 +Simple Condition (bool~) gfx_init_screen3::$5 [1080] if((byte) gfx_init_screen3::cy#1!=rangelast(0,$18)) goto gfx_init_screen3::@1 +Simple Condition (bool~) gfx_init_screen4::$0 [1091] if((byte) gfx_init_screen4::cx#1!=rangelast(0,$27)) goto gfx_init_screen4::@2 +Simple Condition (bool~) gfx_init_screen4::$1 [1095] if((byte) gfx_init_screen4::cy#1!=rangelast(0,$18)) goto gfx_init_screen4::@1 +Simple Condition (bool~) gfx_init_vic_bitmap::$2 [1103] if((byte) gfx_init_vic_bitmap::l#2<(const byte) gfx_init_vic_bitmap::lines_cnt) goto gfx_init_vic_bitmap::@2 +Simple Condition (bool~) gfx_init_plane_8bppchunky::$5 [1128] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word) $8000) goto gfx_init_plane_8bppchunky::@3 +Simple Condition (bool~) gfx_init_plane_8bppchunky::$9 [1137] if((word) gfx_init_plane_8bppchunky::x#1!=rangelast(0,$13f)) goto gfx_init_plane_8bppchunky::@2 +Simple Condition (bool~) gfx_init_plane_8bppchunky::$10 [1147] if((byte) gfx_init_plane_8bppchunky::y#1!=rangelast(0,$c7)) goto gfx_init_plane_8bppchunky::@1 +Simple Condition (bool~) gfx_init_plane_horisontal::$5 [1165] if((byte~) gfx_init_plane_horisontal::$4==(byte) 0) goto gfx_init_plane_horisontal::@3 +Simple Condition (bool~) gfx_init_plane_horisontal::$6 [1175] if((byte) gfx_init_plane_horisontal::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal::@2 +Simple Condition (bool~) gfx_init_plane_horisontal::$7 [1179] if((byte) gfx_init_plane_horisontal::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal::@1 +Simple Condition (bool~) gfx_init_plane_horisontal2::$6 [1202] if((byte) gfx_init_plane_horisontal2::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal2::@2 +Simple Condition (bool~) gfx_init_plane_horisontal2::$7 [1206] if((byte) gfx_init_plane_horisontal2::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal2::@1 +Simple Condition (bool~) gfx_init_plane_vertical::$4 [1226] if((byte) gfx_init_plane_vertical::bx#1!=rangelast(0,$27)) goto gfx_init_plane_vertical::@2 +Simple Condition (bool~) gfx_init_plane_vertical::$5 [1230] if((byte) gfx_init_plane_vertical::by#1!=rangelast(0,$c7)) goto gfx_init_plane_vertical::@1 +Simple Condition (bool~) gfx_init_plane_charset8::$6 [1257] if((byte~) gfx_init_plane_charset8::$4==(byte) 0) goto gfx_init_plane_charset8::@4 +Simple Condition (bool~) gfx_init_plane_charset8::$8 [1266] if((byte) gfx_init_plane_charset8::cp#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@3 +Simple Condition (bool~) gfx_init_plane_charset8::$9 [1272] if((byte) gfx_init_plane_charset8::cr#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@2 +Simple Condition (bool~) gfx_init_plane_charset8::$10 [1276] if((byte) gfx_init_plane_charset8::ch#1!=rangelast(0,$ff)) goto gfx_init_plane_charset8::@1 +Simple Condition (bool~) gfx_init_plane_fill::$9 [1315] if((byte) gfx_init_plane_fill::bx#1!=rangelast(0,$27)) goto gfx_init_plane_fill::@2 +Simple Condition (bool~) gfx_init_plane_fill::$10 [1319] if((byte) gfx_init_plane_fill::by#1!=rangelast(0,$c7)) goto gfx_init_plane_fill::@1 +Simple Condition (bool~) form_mode::$28 [1399] if((byte) form_mode::i#1!=rangelast(0,$f)) goto form_mode::@1 +Simple Condition (bool~) form_mode::$29 [1408] if(*((const byte*) RASTER)!=(byte) $ff) goto form_mode::@6 +Simple Condition (bool~) form_mode::$32 [1420] if((byte~) form_mode::$30==(byte) 0) goto form_mode::@14 +Simple Condition (bool~) form_mode::$34 [1424] if((byte) form_mode::preset_current#6==*((const byte*) form_preset)) goto form_mode::@3 +Simple Condition (bool~) form_set_screen::$3 [1461] if((byte) form_set_screen::y#1!=rangelast(0,$18)) goto form_set_screen::@1 +Simple Condition (bool~) form_render_values::$0 [1478] if((byte) form_render_values::idx#2<(const byte) form_fields_cnt) goto form_render_values::@2 +Simple Condition (bool~) form_control::$2 [1499] if((signed byte) form_cursor_count#5>=(signed byte) 0) goto form_control::@1 +Simple Condition (bool~) form_control::$3 [1502] if((signed byte) form_cursor_count#15<(const signed byte) FORM_CURSOR_BLINK/(signed byte) 2) goto form_control::@2 +Simple Condition (bool~) form_control::$7 [1524] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN) goto form_control::@4 +Simple Condition (bool~) form_control::$9 [1528] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT) goto form_control::@5 +Simple Condition (bool~) form_control::$16 [1534] if((byte~) form_control::$15==(byte) 0) goto form_control::@19 +Simple Condition (bool~) form_control::$21 [1539] if((byte) form_field_idx#5!=(const byte) form_fields_cnt) goto form_control::@22 +Simple Condition (bool~) form_control::$18 [1544] if((byte) form_field_idx#6!=(byte) $ff) goto form_control::@22 +Simple Condition (bool~) form_control::$11 [1563] if((byte) form_control::key_event#0!=(const byte) KEY_SPACE) goto form_control::@6 +Simple Condition (bool~) form_control::$23 [1567] if((byte~) form_control::$22==(byte) 0) goto form_control::@26 +Simple Condition (bool~) form_control::$27 [1572] if(*((const byte[]) form_fields_val + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max + (byte) form_field_idx#28)) goto form_control::@29 +Simple Condition (bool~) form_control::$25 [1577] if(*((const byte[]) form_fields_val + (byte) form_field_idx#28)!=(byte) $ff) goto form_control::@29 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [1058] if((byte) gfx_mode::keyboard_event#0==(const byte) KEY_SPACE) goto gfx_mode::@return +Negating conditional jump and destination [965] if((byte) gfx_mode::keyboard_event#0==(const byte) KEY_SPACE) goto gfx_mode::@return Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Constant right-side identified [111] (byte[8]) keyboard_events ← { fill( 8, 0) } -Constant right-side identified [114] (byte[8]) keyboard_scan_values ← { fill( 8, 0) } -Constant right-side identified [240] (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } -Constant right-side identified [241] (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } -Constant right-side identified [242] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } -Constant right-side identified [243] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } -Constant right-side identified [244] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } -Constant right-side identified [535] (dword) get_plane::return#0 ← (dword)(const byte*) VIC_SCREEN0 -Constant right-side identified [540] (dword) get_plane::return#1 ← (dword)(const byte*) VIC_SCREEN1 -Constant right-side identified [545] (dword) get_plane::return#2 ← (dword)(const byte*) VIC_SCREEN2 -Constant right-side identified [550] (dword) get_plane::return#3 ← (dword)(const byte*) VIC_SCREEN3 -Constant right-side identified [555] (dword) get_plane::return#4 ← (dword)(const byte*) VIC_BITMAP -Constant right-side identified [560] (dword) get_plane::return#5 ← (dword)(const byte*) VIC_CHARSET_ROM -Constant right-side identified [606] (dword) get_plane::return#15 ← (dword)(const byte*) VIC_SCREEN0 -Constant right-side identified [961] (word~) gfx_mode::$46 ← (word)(const byte*) VIC_SCREEN0 -Constant right-side identified [1210] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#0 ← (byte)(const dword) PLANE_8BPP_CHUNKY/(word) $4000 -Constant right-side identified [1243] (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ← (byte)(number) $4000/(number) $4000 -Constant right-side identified [1247] (byte) gfx_init_plane_horisontal::gfxbCpuBank#0 ← (byte)(const dword) PLANE_HORISONTAL/(word) $4000 -Constant right-side identified [1253] (byte*) gfx_init_plane_horisontal::gfxa#0 ← (byte*)(word) $4000+(const dword) PLANE_HORISONTAL&(word) $3fff -Constant right-side identified [1275] (byte) dtvSetCpuBankSegment1::cpuBankIdx#4 ← (byte)(number) $4000/(number) $4000 -Constant right-side identified [1279] (byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 ← (byte)(const dword) PLANE_HORISONTAL2/(word) $4000 -Constant right-side identified [1285] (byte*) gfx_init_plane_horisontal2::gfxa#0 ← (byte*)(word) $4000+(const dword) PLANE_HORISONTAL2&(word) $3fff -Constant right-side identified [1303] (byte) dtvSetCpuBankSegment1::cpuBankIdx#6 ← (byte)(number) $4000/(number) $4000 -Constant right-side identified [1307] (byte) gfx_init_plane_vertical::gfxbCpuBank#0 ← (byte)(const dword) PLANE_VERTICAL/(word) $4000 -Constant right-side identified [1313] (byte*) gfx_init_plane_vertical::gfxb#0 ← (byte*)(word) $4000+(const dword) PLANE_VERTICAL&(word) $3fff -Constant right-side identified [1327] (byte) dtvSetCpuBankSegment1::cpuBankIdx#8 ← (byte)(number) $4000/(number) $4000 -Constant right-side identified [1331] (byte) gfx_init_plane_charset8::gfxbCpuBank#0 ← (byte)(const dword) PLANE_CHARSET8/(word) $4000 -Constant right-side identified [1337] (byte*) gfx_init_plane_charset8::gfxa#0 ← (byte*)(word) $4000+(const dword) PLANE_CHARSET8&(word) $3fff -Constant right-side identified [1374] (byte) dtvSetCpuBankSegment1::cpuBankIdx#10 ← (byte)(number) $4000/(number) $4000 -Constant right-side identified [1416] (byte) dtvSetCpuBankSegment1::cpuBankIdx#12 ← (byte)(number) $4000/(number) $4000 -Constant right-side identified [1459] (dword~) form_mode::$9 ← (dword)(const byte*) FORM_CHARSET -Constant right-side identified [1463] (word~) form_mode::$12 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [1466] (word~) form_mode::$14 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [1470] (word~) form_mode::$16 ← (word)(const byte*) FORM_CHARSET -Constant right-side identified [1478] (word~) form_mode::$20 ← (word)(const byte*) FORM_SCREEN -Constant right-side identified [1481] (word~) form_mode::$23 ← (word)(const byte*) FORM_CHARSET -Constant right-side identified [1541] (byte[$19]) form_line_lo ← { fill( $19, 0) } -Constant right-side identified [1542] (byte[$19]) form_line_hi ← { fill( $19, 0) } -Constant right-side identified [1642] (byte) form_field_idx#7 ← (const byte) form_fields_cnt - (byte) 1 +Constant right-side identified [107] (byte[8]) keyboard_events ← { fill( 8, 0) } +Constant right-side identified [110] (byte[8]) keyboard_scan_values ← { fill( 8, 0) } +Constant right-side identified [236] (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } +Constant right-side identified [237] (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } +Constant right-side identified [238] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } +Constant right-side identified [239] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } +Constant right-side identified [240] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } +Constant right-side identified [531] (dword) get_plane::return#0 ← (dword)(const byte*) VIC_SCREEN0 +Constant right-side identified [536] (dword) get_plane::return#1 ← (dword)(const byte*) VIC_SCREEN1 +Constant right-side identified [541] (dword) get_plane::return#2 ← (dword)(const byte*) VIC_SCREEN2 +Constant right-side identified [546] (dword) get_plane::return#3 ← (dword)(const byte*) VIC_SCREEN3 +Constant right-side identified [551] (dword) get_plane::return#4 ← (dword)(const byte*) VIC_BITMAP +Constant right-side identified [556] (dword) get_plane::return#5 ← (dword)(const byte*) VIC_CHARSET_ROM +Constant right-side identified [602] (dword) get_plane::return#15 ← (dword)(const byte*) VIC_SCREEN0 +Constant right-side identified [868] (word~) gfx_mode::$46 ← (word)(const byte*) VIC_SCREEN0 +Constant right-side identified [1115] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#0 ← (byte)(const dword) PLANE_8BPP_CHUNKY/(word) $4000 +Constant right-side identified [1148] (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [1152] (byte) gfx_init_plane_horisontal::gfxbCpuBank#0 ← (byte)(const dword) PLANE_HORISONTAL/(word) $4000 +Constant right-side identified [1158] (byte*) gfx_init_plane_horisontal::gfxa#0 ← (byte*)(word) $4000+(const dword) PLANE_HORISONTAL&(word) $3fff +Constant right-side identified [1180] (byte) dtvSetCpuBankSegment1::cpuBankIdx#4 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [1184] (byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 ← (byte)(const dword) PLANE_HORISONTAL2/(word) $4000 +Constant right-side identified [1190] (byte*) gfx_init_plane_horisontal2::gfxa#0 ← (byte*)(word) $4000+(const dword) PLANE_HORISONTAL2&(word) $3fff +Constant right-side identified [1207] (byte) dtvSetCpuBankSegment1::cpuBankIdx#6 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [1211] (byte) gfx_init_plane_vertical::gfxbCpuBank#0 ← (byte)(const dword) PLANE_VERTICAL/(word) $4000 +Constant right-side identified [1217] (byte*) gfx_init_plane_vertical::gfxb#0 ← (byte*)(word) $4000+(const dword) PLANE_VERTICAL&(word) $3fff +Constant right-side identified [1231] (byte) dtvSetCpuBankSegment1::cpuBankIdx#8 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [1235] (byte) gfx_init_plane_charset8::gfxbCpuBank#0 ← (byte)(const dword) PLANE_CHARSET8/(word) $4000 +Constant right-side identified [1241] (byte*) gfx_init_plane_charset8::gfxa#0 ← (byte*)(word) $4000+(const dword) PLANE_CHARSET8&(word) $3fff +Constant right-side identified [1278] (byte) dtvSetCpuBankSegment1::cpuBankIdx#10 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [1320] (byte) dtvSetCpuBankSegment1::cpuBankIdx#12 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [1363] (dword~) form_mode::$9 ← (dword)(const byte*) FORM_CHARSET +Constant right-side identified [1367] (word~) form_mode::$12 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [1370] (word~) form_mode::$14 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [1374] (word~) form_mode::$16 ← (word)(const byte*) FORM_CHARSET +Constant right-side identified [1382] (word~) form_mode::$20 ← (word)(const byte*) FORM_SCREEN +Constant right-side identified [1385] (word~) form_mode::$23 ← (word)(const byte*) FORM_CHARSET +Constant right-side identified [1445] (byte[$19]) form_line_lo ← { fill( $19, 0) } +Constant right-side identified [1446] (byte[$19]) form_line_hi ← { fill( $19, 0) } +Constant right-side identified [1546] (byte) form_field_idx#7 ← (const byte) form_fields_cnt - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[$10]) { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a } -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Identified constant from value list (byte[]) { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 } -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 7, (byte) 8, (byte) 8, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e, (byte) 5, (byte) 6, (byte) 7, (byte) $a, (byte) $b, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e } -Identified constant from value list (byte[]) { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 } -Identified constant from value list (byte[]) { (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 3, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 5, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 3, (byte) 4, (byte) 6, (byte) 8, (byte) 9, (byte) $c, (byte) $c } -Identified constant from value list (byte[]) { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 8, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 9, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[$10]) DTV_PALETTE_DEFAULT = { 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a } Constant (const byte*) print_screen#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte[8]) keyboard_events = { fill( 8, 0) } Constant (const byte) keyboard_events_size#0 = 0 Constant (const byte) keyboard_modifiers#0 = 0 @@ -9236,22 +8990,19 @@ Constant (const byte*) get_vic_screen::return#6 = VIC_SCREEN0 Constant (const byte*) get_vic_charset::return#0 = VIC_CHARSET_ROM Constant (const byte*) get_vic_charset::return#1 = VIC_BITMAP Constant (const byte*) get_vic_charset::return#3 = VIC_CHARSET_ROM -Constant (const byte[]) form_fields_x = { 8, $c, $c, $c, $c, $c, $c, $c, $c, $c, $19, $18, $19, $18, $19, $18, $19, $19, $18, $19, $18, $19, $18, $19, $25, $25, $25, $25, $24, $25, $24, $25, $24, $25, $24, $25 } -Constant (const byte[]) form_fields_y = { 2, 5, 6, 7, 8, 9, $a, $b, $c, $d, 5, 6, 6, 7, 7, 8, 8, $b, $c, $c, $d, $d, $e, $e, 5, 6, 7, $a, $b, $b, $c, $c, $d, $d, $e, $e } -Constant (const byte[]) form_fields_max = { $a, 1, 1, 1, 1, 1, 1, 1, 1, 1, $d, $f, $f, $f, $f, $f, $f, $d, $f, $f, $f, $f, $f, $f, 3, 1, 4, 1, $f, $f, $f, $f, $f, $f, $f, $f } -Constant (const byte[]) form_fields_val = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_stdchar = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_ecmchar = { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 5, 0, 6 } -Constant (const byte[]) preset_stdbm = { 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_mcbm = { 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_hi_stdchar = { 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_hi_ecmchar = { 5, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 4, 6, 8, 9, $c, $c } -Constant (const byte[]) preset_twoplane = { 6, 1, 0, 1, 1, 1, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 7, 0, $d, 4, 0, 0, 0, 0 } -Constant (const byte[]) preset_chunky = { 7, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_sixsfred = { 8, 1, 1, 1, 1, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, $a, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_sixsfred2 = { 9, 1, 1, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, $a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } -Constant (const byte[]) preset_8bpppixelcell = { $a, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, $b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } Constant (const byte*) apply_preset::preset#0 = (byte*) 0 +Constant (const byte*) apply_preset::preset#1 = preset_stdchar +Constant (const byte*) apply_preset::preset#2 = preset_ecmchar +Constant (const byte*) apply_preset::preset#3 = preset_stdbm +Constant (const byte*) apply_preset::preset#4 = preset_mcbm +Constant (const byte*) apply_preset::preset#5 = preset_hi_stdchar +Constant (const byte*) apply_preset::preset#6 = preset_hi_ecmchar +Constant (const byte*) apply_preset::preset#7 = preset_twoplane +Constant (const byte*) apply_preset::preset#8 = preset_chunky +Constant (const byte*) apply_preset::preset#9 = preset_sixsfred +Constant (const byte*) apply_preset::preset#10 = preset_sixsfred2 +Constant (const byte*) apply_preset::preset#11 = preset_8bpppixelcell +Constant (const byte*) apply_preset::preset#12 = preset_stdchar Constant (const byte) apply_preset::i#0 = 0 Constant (const byte*) render_preset_name::name#0 = (byte*) 0 Constant (const byte*) render_preset_name::name#1 = render_preset_name::$12 @@ -9296,8 +9047,6 @@ Constant (const byte*) gfx_init_screen4::ch#0 = VIC_SCREEN4 Constant (const byte) gfx_init_screen4::cy#0 = 0 Constant (const byte) gfx_init_screen4::cx#0 = 0 Constant (const byte*) bitmap_init::bitmap#0 = VIC_BITMAP -Constant (const byte[]) gfx_init_vic_bitmap::lines_x = { 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 } -Constant (const byte[]) gfx_init_vic_bitmap::lines_y = { 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } Constant (const byte) gfx_init_vic_bitmap::l#0 = 0 Constant (const byte) gfx_init_plane_8bppchunky::gfxbCpuBank#0 = (byte)PLANE_8BPP_CHUNKY/$4000 Constant (const byte*) gfx_init_plane_8bppchunky::gfxb#0 = (byte*) 16384 @@ -9312,7 +9061,6 @@ Constant (const byte) gfx_init_plane_horisontal::ax#0 = 0 Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#4 = (byte)$4000/$4000 Constant (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 = (byte)PLANE_HORISONTAL2/$4000 Constant (const byte*) gfx_init_plane_horisontal2::gfxa#0 = (byte*)$4000+PLANE_HORISONTAL2&$3fff -Constant (const byte[]) gfx_init_plane_horisontal2::row_bitmask = { 0, $55, $aa, $ff } Constant (const byte) gfx_init_plane_horisontal2::ay#0 = 0 Constant (const byte) gfx_init_plane_horisontal2::ax#0 = 0 Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#6 = (byte)$4000/$4000 @@ -9366,216 +9114,134 @@ Constant (const byte) form_control::return#3 = 0 Constant (const byte) form_control::return#4 = 0 Constant (const byte) form_control::return#5 = $ff Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) apply_preset::preset#1 = preset_stdchar -Constant (const byte*) apply_preset::preset#2 = preset_ecmchar -Constant (const byte*) apply_preset::preset#3 = preset_stdbm -Constant (const byte*) apply_preset::preset#4 = preset_mcbm -Constant (const byte*) apply_preset::preset#5 = preset_hi_stdchar -Constant (const byte*) apply_preset::preset#6 = preset_hi_ecmchar -Constant (const byte*) apply_preset::preset#7 = preset_twoplane -Constant (const byte*) apply_preset::preset#8 = preset_chunky -Constant (const byte*) apply_preset::preset#9 = preset_sixsfred -Constant (const byte*) apply_preset::preset#10 = preset_sixsfred2 -Constant (const byte*) apply_preset::preset#11 = preset_8bpppixelcell -Constant (const byte*) apply_preset::preset#12 = preset_stdchar Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 = gfx_init_plane_8bppchunky::gfxbCpuBank#0 Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#3 = gfx_init_plane_horisontal::gfxbCpuBank#0 Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#5 = gfx_init_plane_horisontal2::gfxbCpuBank#0 Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#7 = gfx_init_plane_vertical::gfxbCpuBank#0 Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#9 = gfx_init_plane_charset8::gfxbCpuBank#0 Successful SSA optimization Pass2ConstantIdentification -if() condition always false - eliminating [8] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -if() condition always true - replacing block destination [508] if(true) goto main::@2 +if() condition always false - eliminating [7] if((const word) memset::num#0<=(byte) 0) goto memset::@1 +if() condition always true - replacing block destination [504] if(true) goto main::@2 Removing PHI-reference to removed block (gfx_mode::@31) in block gfx_mode::@return Removing PHI-reference to removed block (gfx_mode::@31) in block gfx_mode::@return -if() condition always true - replacing block destination [1041] if(true) goto gfx_mode::@34 +if() condition always true - replacing block destination [948] if(true) goto gfx_mode::@34 Removing PHI-reference to removed block (form_mode::@3) in block form_mode::@return Removing PHI-reference to removed block (form_mode::@3) in block form_mode::@return Removing PHI-reference to removed block (form_mode::@3) in block form_mode::@return Removing PHI-reference to removed block (form_mode::@3) in block form_mode::@return -if() condition always true - replacing block destination [1501] if(true) goto form_mode::@6 +if() condition always true - replacing block destination [1405] if(true) goto form_mode::@6 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantStringConsolidation -Resolved ranged next value [133] keyboard_event_scan::row#1 ← ++ keyboard_event_scan::row#2 to ++ -Resolved ranged comparison value [135] if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 to (number) 8 -Resolved ranged next value [144] keyboard_event_scan::col#1 ← ++ keyboard_event_scan::col#2 to ++ -Resolved ranged comparison value [146] if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 to (number) 8 -Resolved ranged next value [260] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ -Resolved ranged comparison value [262] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 -Resolved ranged next value [279] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ -Resolved ranged comparison value [281] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 -Resolved ranged next value [295] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ -Resolved ranged comparison value [297] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 -Resolved ranged next value [299] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ -Resolved ranged comparison value [301] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 -Resolved ranged next value [1003] gfx_mode::cx#1 ← ++ gfx_mode::cx#2 to ++ -Resolved ranged comparison value [1005] if(gfx_mode::cx#1!=rangelast(0,$27)) goto gfx_mode::@22 to (number) $28 -Resolved ranged next value [1007] gfx_mode::cy#1 ← ++ gfx_mode::cy#4 to ++ -Resolved ranged comparison value [1009] if(gfx_mode::cy#1!=rangelast(0,$18)) goto gfx_mode::@21 to (number) $19 -Resolved ranged next value [1032] gfx_mode::j#1 ← ++ gfx_mode::j#2 to ++ -Resolved ranged comparison value [1034] if(gfx_mode::j#1!=rangelast(0,$f)) goto gfx_mode::@26 to (number) $10 -Resolved ranged next value [1037] gfx_mode::i#1 ← ++ gfx_mode::i#2 to ++ -Resolved ranged comparison value [1039] if(gfx_mode::i#1!=rangelast(0,$f)) goto gfx_mode::@29 to (number) $10 -Resolved ranged next value [1089] gfx_init_charset::l#1 ← ++ gfx_init_charset::l#2 to ++ -Resolved ranged comparison value [1091] if(gfx_init_charset::l#1!=rangelast(0,7)) goto gfx_init_charset::@2 to (number) 8 -Resolved ranged next value [1093] gfx_init_charset::c#1 ← ++ gfx_init_charset::c#4 to ++ -Resolved ranged comparison value [1095] if(gfx_init_charset::c#1!=rangelast(0,$ff)) goto gfx_init_charset::@1 to (number) 0 -Resolved ranged next value [1109] gfx_init_screen0::cx#1 ← ++ gfx_init_screen0::cx#2 to ++ -Resolved ranged comparison value [1111] if(gfx_init_screen0::cx#1!=rangelast(0,$27)) goto gfx_init_screen0::@2 to (number) $28 -Resolved ranged next value [1113] gfx_init_screen0::cy#1 ← ++ gfx_init_screen0::cy#4 to ++ -Resolved ranged comparison value [1115] if(gfx_init_screen0::cy#1!=rangelast(0,$18)) goto gfx_init_screen0::@1 to (number) $19 -Resolved ranged next value [1126] gfx_init_screen1::cx#1 ← ++ gfx_init_screen1::cx#2 to ++ -Resolved ranged comparison value [1128] if(gfx_init_screen1::cx#1!=rangelast(0,$27)) goto gfx_init_screen1::@2 to (number) $28 -Resolved ranged next value [1130] gfx_init_screen1::cy#1 ← ++ gfx_init_screen1::cy#4 to ++ -Resolved ranged comparison value [1132] if(gfx_init_screen1::cy#1!=rangelast(0,$18)) goto gfx_init_screen1::@1 to (number) $19 -Resolved ranged next value [1148] gfx_init_screen2::cx#1 ← ++ gfx_init_screen2::cx#2 to ++ -Resolved ranged comparison value [1150] if(gfx_init_screen2::cx#1!=rangelast(0,$27)) goto gfx_init_screen2::@2 to (number) $28 -Resolved ranged next value [1152] gfx_init_screen2::cy#1 ← ++ gfx_init_screen2::cy#4 to ++ -Resolved ranged comparison value [1154] if(gfx_init_screen2::cy#1!=rangelast(0,$18)) goto gfx_init_screen2::@1 to (number) $19 -Resolved ranged next value [1167] gfx_init_screen3::cx#1 ← ++ gfx_init_screen3::cx#2 to ++ -Resolved ranged comparison value [1169] if(gfx_init_screen3::cx#1!=rangelast(0,$27)) goto gfx_init_screen3::@2 to (number) $28 -Resolved ranged next value [1171] gfx_init_screen3::cy#1 ← ++ gfx_init_screen3::cy#4 to ++ -Resolved ranged comparison value [1173] if(gfx_init_screen3::cy#1!=rangelast(0,$18)) goto gfx_init_screen3::@1 to (number) $19 -Resolved ranged next value [1182] gfx_init_screen4::cx#1 ← ++ gfx_init_screen4::cx#2 to ++ -Resolved ranged comparison value [1184] if(gfx_init_screen4::cx#1!=rangelast(0,$27)) goto gfx_init_screen4::@2 to (number) $28 -Resolved ranged next value [1186] gfx_init_screen4::cy#1 ← ++ gfx_init_screen4::cy#4 to ++ -Resolved ranged comparison value [1188] if(gfx_init_screen4::cy#1!=rangelast(0,$18)) goto gfx_init_screen4::@1 to (number) $19 -Resolved ranged next value [1230] gfx_init_plane_8bppchunky::x#1 ← ++ gfx_init_plane_8bppchunky::x#2 to ++ -Resolved ranged comparison value [1232] if(gfx_init_plane_8bppchunky::x#1!=rangelast(0,$13f)) goto gfx_init_plane_8bppchunky::@2 to (number) $140 -Resolved ranged next value [1240] gfx_init_plane_8bppchunky::y#1 ← ++ gfx_init_plane_8bppchunky::y#6 to ++ -Resolved ranged comparison value [1242] if(gfx_init_plane_8bppchunky::y#1!=rangelast(0,$c7)) goto gfx_init_plane_8bppchunky::@1 to (number) $c8 -Resolved ranged next value [1268] gfx_init_plane_horisontal::ax#1 ← ++ gfx_init_plane_horisontal::ax#2 to ++ -Resolved ranged comparison value [1270] if(gfx_init_plane_horisontal::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal::@2 to (number) $28 -Resolved ranged next value [1272] gfx_init_plane_horisontal::ay#1 ← ++ gfx_init_plane_horisontal::ay#4 to ++ -Resolved ranged comparison value [1274] if(gfx_init_plane_horisontal::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal::@1 to (number) $c8 -Resolved ranged next value [1296] gfx_init_plane_horisontal2::ax#1 ← ++ gfx_init_plane_horisontal2::ax#2 to ++ -Resolved ranged comparison value [1298] if(gfx_init_plane_horisontal2::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal2::@2 to (number) $28 -Resolved ranged next value [1300] gfx_init_plane_horisontal2::ay#1 ← ++ gfx_init_plane_horisontal2::ay#4 to ++ -Resolved ranged comparison value [1302] if(gfx_init_plane_horisontal2::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal2::@1 to (number) $c8 -Resolved ranged next value [1320] gfx_init_plane_vertical::bx#1 ← ++ gfx_init_plane_vertical::bx#2 to ++ -Resolved ranged comparison value [1322] if(gfx_init_plane_vertical::bx#1!=rangelast(0,$27)) goto gfx_init_plane_vertical::@2 to (number) $28 -Resolved ranged next value [1324] gfx_init_plane_vertical::by#1 ← ++ gfx_init_plane_vertical::by#4 to ++ -Resolved ranged comparison value [1326] if(gfx_init_plane_vertical::by#1!=rangelast(0,$c7)) goto gfx_init_plane_vertical::@1 to (number) $c8 -Resolved ranged next value [1360] gfx_init_plane_charset8::cp#1 ← ++ gfx_init_plane_charset8::cp#2 to ++ -Resolved ranged comparison value [1362] if(gfx_init_plane_charset8::cp#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@3 to (number) 8 -Resolved ranged next value [1366] gfx_init_plane_charset8::cr#1 ← ++ gfx_init_plane_charset8::cr#6 to ++ -Resolved ranged comparison value [1368] if(gfx_init_plane_charset8::cr#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@2 to (number) 8 -Resolved ranged next value [1370] gfx_init_plane_charset8::ch#1 ← ++ gfx_init_plane_charset8::ch#8 to ++ -Resolved ranged comparison value [1372] if(gfx_init_plane_charset8::ch#1!=rangelast(0,$ff)) goto gfx_init_plane_charset8::@1 to (number) 0 -Resolved ranged next value [1409] gfx_init_plane_fill::bx#1 ← ++ gfx_init_plane_fill::bx#2 to ++ -Resolved ranged comparison value [1411] if(gfx_init_plane_fill::bx#1!=rangelast(0,$27)) goto gfx_init_plane_fill::@2 to (number) $28 -Resolved ranged next value [1413] gfx_init_plane_fill::by#1 ← ++ gfx_init_plane_fill::by#4 to ++ -Resolved ranged comparison value [1415] if(gfx_init_plane_fill::by#1!=rangelast(0,$c7)) goto gfx_init_plane_fill::@1 to (number) $c8 -Resolved ranged next value [1493] form_mode::i#1 ← ++ form_mode::i#2 to ++ -Resolved ranged comparison value [1495] if(form_mode::i#1!=rangelast(0,$f)) goto form_mode::@1 to (number) $10 -Resolved ranged next value [1555] form_set_screen::y#1 ← ++ form_set_screen::y#2 to ++ -Resolved ranged comparison value [1557] if(form_set_screen::y#1!=rangelast(0,$18)) goto form_set_screen::@1 to (number) $19 -Converting *(pointer+n) to pointer[n] [845] if(*((byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 -- *(form_fields_val + 5) -Converting *(pointer+n) to pointer[n] [849] if(*((byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 -- *(form_fields_val + 8) -Converting *(pointer+n) to pointer[n] [856] if(*((byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 -- *(form_fields_val + 4) -Converting *(pointer+n) to pointer[n] [863] if(*((byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 -- *(form_fields_val + 9) -Converting *(pointer+n) to pointer[n] [870] if(*((byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 -- *(form_fields_val + 6) -Converting *(pointer+n) to pointer[n] [877] if(*((byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 -- *(form_fields_val + 7) -Converting *(pointer+n) to pointer[n] [886] if(*((byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 -- *(form_fields_val + 3) -Converting *(pointer+n) to pointer[n] [893] if(*((byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 -- *(form_fields_val + 1) -Converting *(pointer+n) to pointer[n] [902] if(*((byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 -- *(form_fields_val + 2) -Converting *(pointer+n) to pointer[n] [908] (byte~) gfx_mode::$18 ← *((byte*) form_a_start_hi) * (byte) $10 -- *(form_fields_val + $b) -Converting *(pointer+n) to pointer[n] [909] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((byte*) form_a_start_lo) -- *(form_fields_val + $c) -Converting *(pointer+n) to pointer[n] [911] (byte) get_plane::idx#0 ← *((byte*) form_a_pattern) -- *(form_fields_val + $a) -Converting *(pointer+n) to pointer[n] [927] (byte~) gfx_mode::$28 ← *((byte*) form_a_step_hi) * (byte) $10 -- *(form_fields_val + $d) -Converting *(pointer+n) to pointer[n] [928] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((byte*) form_a_step_lo) -- *(form_fields_val + $e) -Converting *(pointer+n) to pointer[n] [930] (byte~) gfx_mode::$30 ← *((byte*) form_a_mod_hi) * (byte) $10 -- *(form_fields_val + $f) -Converting *(pointer+n) to pointer[n] [931] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((byte*) form_a_mod_lo) -- *(form_fields_val + $10) -Converting *(pointer+n) to pointer[n] [934] (byte~) gfx_mode::$32 ← *((byte*) form_b_start_hi) * (byte) $10 -- *(form_fields_val + $12) -Converting *(pointer+n) to pointer[n] [935] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((byte*) form_b_start_lo) -- *(form_fields_val + $13) -Converting *(pointer+n) to pointer[n] [937] (byte) get_plane::idx#1 ← *((byte*) form_b_pattern) -- *(form_fields_val + $11) -Converting *(pointer+n) to pointer[n] [953] (byte~) gfx_mode::$42 ← *((byte*) form_b_step_hi) * (byte) $10 -- *(form_fields_val + $14) -Converting *(pointer+n) to pointer[n] [954] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((byte*) form_b_step_lo) -- *(form_fields_val + $15) -Converting *(pointer+n) to pointer[n] [956] (byte~) gfx_mode::$44 ← *((byte*) form_b_mod_hi) * (byte) $10 -- *(form_fields_val + $16) -Converting *(pointer+n) to pointer[n] [957] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((byte*) form_b_mod_lo) -- *(form_fields_val + $17) -Converting *(pointer+n) to pointer[n] [966] (byte) get_vic_screen::idx#0 ← *((byte*) form_vic_screen) -- *(form_fields_val + $18) -Converting *(pointer+n) to pointer[n] [975] (byte) get_vic_charset::idx#0 ← *((byte*) form_vic_gfx) -- *(form_fields_val + $19) -Converting *(pointer+n) to pointer[n] [986] (byte) get_vic_screen::idx#1 ← *((byte*) form_vic_cols) -- *(form_fields_val + $1a) -Converting *(pointer+n) to pointer[n] [1012] (byte~) gfx_mode::$62 ← *((byte*) form_vic_bg0_hi) * (byte) $10 -- *(form_fields_val + $1c) -Converting *(pointer+n) to pointer[n] [1013] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((byte*) form_vic_bg0_lo) -- *(form_fields_val + $1d) -Converting *(pointer+n) to pointer[n] [1015] (byte~) gfx_mode::$64 ← *((byte*) form_vic_bg1_hi) * (byte) $10 -- *(form_fields_val + $1e) -Converting *(pointer+n) to pointer[n] [1016] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((byte*) form_vic_bg1_lo) -- *(form_fields_val + $1f) -Converting *(pointer+n) to pointer[n] [1018] (byte~) gfx_mode::$66 ← *((byte*) form_vic_bg2_hi) * (byte) $10 -- *(form_fields_val + $20) -Converting *(pointer+n) to pointer[n] [1019] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((byte*) form_vic_bg2_lo) -- *(form_fields_val + $21) -Converting *(pointer+n) to pointer[n] [1021] (byte~) gfx_mode::$68 ← *((byte*) form_vic_bg3_hi) * (byte) $10 -- *(form_fields_val + $22) -Converting *(pointer+n) to pointer[n] [1022] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((byte*) form_vic_bg3_lo) -- *(form_fields_val + $23) -Converting *(pointer+n) to pointer[n] [1025] if(*((byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@10 -- *(form_fields_val + $1b) -Converting *(pointer+n) to pointer[n] [1582] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab + *((const byte[]) form_fields_val + (byte) form_render_values::idx#2)) -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1602] (byte~) form_control::$13 ← *((byte*) form_control::field#0) | (byte) $80 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1603] *((byte*) form_control::field#0) ← (byte~) form_control::$13 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1605] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte) $7f -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1606] *((byte*) form_control::field#0) ← (byte~) form_control::$12 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1626] (byte~) form_control::$14 ← *((byte*) form_control::field#0) & (byte) $7f -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1627] *((byte*) form_control::field#0) ← (byte~) form_control::$14 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) -Converting *(pointer+n) to pointer[n] [1677] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab + *((const byte[]) form_fields_val + (byte) form_field_idx#28)) -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Resolved ranged next value [129] keyboard_event_scan::row#1 ← ++ keyboard_event_scan::row#2 to ++ +Resolved ranged comparison value [131] if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 to (number) 8 +Resolved ranged next value [140] keyboard_event_scan::col#1 ← ++ keyboard_event_scan::col#2 to ++ +Resolved ranged comparison value [142] if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 to (number) 8 +Resolved ranged next value [256] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ +Resolved ranged comparison value [258] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 +Resolved ranged next value [275] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ +Resolved ranged comparison value [277] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 +Resolved ranged next value [291] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ +Resolved ranged comparison value [293] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 +Resolved ranged next value [295] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ +Resolved ranged comparison value [297] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 +Resolved ranged next value [910] gfx_mode::cx#1 ← ++ gfx_mode::cx#2 to ++ +Resolved ranged comparison value [912] if(gfx_mode::cx#1!=rangelast(0,$27)) goto gfx_mode::@22 to (number) $28 +Resolved ranged next value [914] gfx_mode::cy#1 ← ++ gfx_mode::cy#4 to ++ +Resolved ranged comparison value [916] if(gfx_mode::cy#1!=rangelast(0,$18)) goto gfx_mode::@21 to (number) $19 +Resolved ranged next value [939] gfx_mode::j#1 ← ++ gfx_mode::j#2 to ++ +Resolved ranged comparison value [941] if(gfx_mode::j#1!=rangelast(0,$f)) goto gfx_mode::@26 to (number) $10 +Resolved ranged next value [944] gfx_mode::i#1 ← ++ gfx_mode::i#2 to ++ +Resolved ranged comparison value [946] if(gfx_mode::i#1!=rangelast(0,$f)) goto gfx_mode::@29 to (number) $10 +Resolved ranged next value [996] gfx_init_charset::l#1 ← ++ gfx_init_charset::l#2 to ++ +Resolved ranged comparison value [998] if(gfx_init_charset::l#1!=rangelast(0,7)) goto gfx_init_charset::@2 to (number) 8 +Resolved ranged next value [1000] gfx_init_charset::c#1 ← ++ gfx_init_charset::c#4 to ++ +Resolved ranged comparison value [1002] if(gfx_init_charset::c#1!=rangelast(0,$ff)) goto gfx_init_charset::@1 to (number) 0 +Resolved ranged next value [1016] gfx_init_screen0::cx#1 ← ++ gfx_init_screen0::cx#2 to ++ +Resolved ranged comparison value [1018] if(gfx_init_screen0::cx#1!=rangelast(0,$27)) goto gfx_init_screen0::@2 to (number) $28 +Resolved ranged next value [1020] gfx_init_screen0::cy#1 ← ++ gfx_init_screen0::cy#4 to ++ +Resolved ranged comparison value [1022] if(gfx_init_screen0::cy#1!=rangelast(0,$18)) goto gfx_init_screen0::@1 to (number) $19 +Resolved ranged next value [1033] gfx_init_screen1::cx#1 ← ++ gfx_init_screen1::cx#2 to ++ +Resolved ranged comparison value [1035] if(gfx_init_screen1::cx#1!=rangelast(0,$27)) goto gfx_init_screen1::@2 to (number) $28 +Resolved ranged next value [1037] gfx_init_screen1::cy#1 ← ++ gfx_init_screen1::cy#4 to ++ +Resolved ranged comparison value [1039] if(gfx_init_screen1::cy#1!=rangelast(0,$18)) goto gfx_init_screen1::@1 to (number) $19 +Resolved ranged next value [1055] gfx_init_screen2::cx#1 ← ++ gfx_init_screen2::cx#2 to ++ +Resolved ranged comparison value [1057] if(gfx_init_screen2::cx#1!=rangelast(0,$27)) goto gfx_init_screen2::@2 to (number) $28 +Resolved ranged next value [1059] gfx_init_screen2::cy#1 ← ++ gfx_init_screen2::cy#4 to ++ +Resolved ranged comparison value [1061] if(gfx_init_screen2::cy#1!=rangelast(0,$18)) goto gfx_init_screen2::@1 to (number) $19 +Resolved ranged next value [1074] gfx_init_screen3::cx#1 ← ++ gfx_init_screen3::cx#2 to ++ +Resolved ranged comparison value [1076] if(gfx_init_screen3::cx#1!=rangelast(0,$27)) goto gfx_init_screen3::@2 to (number) $28 +Resolved ranged next value [1078] gfx_init_screen3::cy#1 ← ++ gfx_init_screen3::cy#4 to ++ +Resolved ranged comparison value [1080] if(gfx_init_screen3::cy#1!=rangelast(0,$18)) goto gfx_init_screen3::@1 to (number) $19 +Resolved ranged next value [1089] gfx_init_screen4::cx#1 ← ++ gfx_init_screen4::cx#2 to ++ +Resolved ranged comparison value [1091] if(gfx_init_screen4::cx#1!=rangelast(0,$27)) goto gfx_init_screen4::@2 to (number) $28 +Resolved ranged next value [1093] gfx_init_screen4::cy#1 ← ++ gfx_init_screen4::cy#4 to ++ +Resolved ranged comparison value [1095] if(gfx_init_screen4::cy#1!=rangelast(0,$18)) goto gfx_init_screen4::@1 to (number) $19 +Resolved ranged next value [1135] gfx_init_plane_8bppchunky::x#1 ← ++ gfx_init_plane_8bppchunky::x#2 to ++ +Resolved ranged comparison value [1137] if(gfx_init_plane_8bppchunky::x#1!=rangelast(0,$13f)) goto gfx_init_plane_8bppchunky::@2 to (number) $140 +Resolved ranged next value [1145] gfx_init_plane_8bppchunky::y#1 ← ++ gfx_init_plane_8bppchunky::y#6 to ++ +Resolved ranged comparison value [1147] if(gfx_init_plane_8bppchunky::y#1!=rangelast(0,$c7)) goto gfx_init_plane_8bppchunky::@1 to (number) $c8 +Resolved ranged next value [1173] gfx_init_plane_horisontal::ax#1 ← ++ gfx_init_plane_horisontal::ax#2 to ++ +Resolved ranged comparison value [1175] if(gfx_init_plane_horisontal::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal::@2 to (number) $28 +Resolved ranged next value [1177] gfx_init_plane_horisontal::ay#1 ← ++ gfx_init_plane_horisontal::ay#4 to ++ +Resolved ranged comparison value [1179] if(gfx_init_plane_horisontal::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal::@1 to (number) $c8 +Resolved ranged next value [1200] gfx_init_plane_horisontal2::ax#1 ← ++ gfx_init_plane_horisontal2::ax#2 to ++ +Resolved ranged comparison value [1202] if(gfx_init_plane_horisontal2::ax#1!=rangelast(0,$27)) goto gfx_init_plane_horisontal2::@2 to (number) $28 +Resolved ranged next value [1204] gfx_init_plane_horisontal2::ay#1 ← ++ gfx_init_plane_horisontal2::ay#4 to ++ +Resolved ranged comparison value [1206] if(gfx_init_plane_horisontal2::ay#1!=rangelast(0,$c7)) goto gfx_init_plane_horisontal2::@1 to (number) $c8 +Resolved ranged next value [1224] gfx_init_plane_vertical::bx#1 ← ++ gfx_init_plane_vertical::bx#2 to ++ +Resolved ranged comparison value [1226] if(gfx_init_plane_vertical::bx#1!=rangelast(0,$27)) goto gfx_init_plane_vertical::@2 to (number) $28 +Resolved ranged next value [1228] gfx_init_plane_vertical::by#1 ← ++ gfx_init_plane_vertical::by#4 to ++ +Resolved ranged comparison value [1230] if(gfx_init_plane_vertical::by#1!=rangelast(0,$c7)) goto gfx_init_plane_vertical::@1 to (number) $c8 +Resolved ranged next value [1264] gfx_init_plane_charset8::cp#1 ← ++ gfx_init_plane_charset8::cp#2 to ++ +Resolved ranged comparison value [1266] if(gfx_init_plane_charset8::cp#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@3 to (number) 8 +Resolved ranged next value [1270] gfx_init_plane_charset8::cr#1 ← ++ gfx_init_plane_charset8::cr#6 to ++ +Resolved ranged comparison value [1272] if(gfx_init_plane_charset8::cr#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@2 to (number) 8 +Resolved ranged next value [1274] gfx_init_plane_charset8::ch#1 ← ++ gfx_init_plane_charset8::ch#8 to ++ +Resolved ranged comparison value [1276] if(gfx_init_plane_charset8::ch#1!=rangelast(0,$ff)) goto gfx_init_plane_charset8::@1 to (number) 0 +Resolved ranged next value [1313] gfx_init_plane_fill::bx#1 ← ++ gfx_init_plane_fill::bx#2 to ++ +Resolved ranged comparison value [1315] if(gfx_init_plane_fill::bx#1!=rangelast(0,$27)) goto gfx_init_plane_fill::@2 to (number) $28 +Resolved ranged next value [1317] gfx_init_plane_fill::by#1 ← ++ gfx_init_plane_fill::by#4 to ++ +Resolved ranged comparison value [1319] if(gfx_init_plane_fill::by#1!=rangelast(0,$c7)) goto gfx_init_plane_fill::@1 to (number) $c8 +Resolved ranged next value [1397] form_mode::i#1 ← ++ form_mode::i#2 to ++ +Resolved ranged comparison value [1399] if(form_mode::i#1!=rangelast(0,$f)) goto form_mode::@1 to (number) $10 +Resolved ranged next value [1459] form_set_screen::y#1 ← ++ form_set_screen::y#2 to ++ +Resolved ranged comparison value [1461] if(form_set_screen::y#1!=rangelast(0,$18)) goto form_set_screen::@1 to (number) $19 +Converting *(pointer+n) to pointer[n] [1486] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab + *((const byte[]) form_fields_val + (byte) form_render_values::idx#2)) -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1506] (byte~) form_control::$13 ← *((byte*) form_control::field#0) | (byte) $80 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1507] *((byte*) form_control::field#0) ← (byte~) form_control::$13 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1509] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte) $7f -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1510] *((byte*) form_control::field#0) ← (byte~) form_control::$12 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1530] (byte~) form_control::$14 ← *((byte*) form_control::field#0) & (byte) $7f -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1531] *((byte*) form_control::field#0) ← (byte~) form_control::$14 -- *(form_field_ptr::line#0 + form_field_ptr::x#0) +Converting *(pointer+n) to pointer[n] [1581] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab + *((const byte[]) form_fields_val + (byte) form_field_idx#28)) -- *(form_field_ptr::line#0 + form_field_ptr::x#0) Successful SSA optimization Pass2InlineDerefIdx Simplifying constant evaluating to zero (const dword) PLANE_HORISONTAL&(word) $3fff in Simplifying constant evaluating to zero (const dword) PLANE_HORISONTAL2&(word) $3fff in Simplifying constant evaluating to zero (const dword) PLANE_CHARSET8&(word) $3fff in -Simplifying constant evaluating to zero <(const byte*) FORM_SCREEN in [1487] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) FORM_SCREEN +Simplifying constant evaluating to zero <(const byte*) FORM_SCREEN in [1391] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) FORM_SCREEN Successful SSA optimization PassNSimplifyConstantZero +Simplifying expression containing zero form_fields_val in Simplifying expression containing zero $4000 in Simplifying expression containing zero $4000 in Simplifying expression containing zero $4000 in -Simplifying expression containing zero KEY_MODIFIER_LSHIFT in [185] (byte) keyboard_modifiers#2 ← (const byte) keyboard_modifiers#1 | (const byte) KEY_MODIFIER_LSHIFT -Simplifying expression containing zero bitmap_plot_xhi in [286] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi + (byte) 0) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) -Simplifying expression containing zero bitmap_plot_xlo in [286] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) -Simplifying expression containing zero form_fields_val in [769] (byte*) form_preset ← (const byte[]) form_fields_val + (byte) 0 -Simplifying expression containing zero DTV_LINEAR in [851] (byte) gfx_mode::dtv_control#1 ← (const byte) gfx_mode::dtv_control#0 | (const byte) DTV_LINEAR +Simplifying expression containing zero KEY_MODIFIER_LSHIFT in [181] (byte) keyboard_modifiers#2 ← (const byte) keyboard_modifiers#1 | (const byte) KEY_MODIFIER_LSHIFT +Simplifying expression containing zero bitmap_plot_xhi in [282] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi + (byte) 0) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) +Simplifying expression containing zero bitmap_plot_xlo in [282] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) +Simplifying expression containing zero DTV_LINEAR in [758] (byte) gfx_mode::dtv_control#1 ← (const byte) gfx_mode::dtv_control#0 | (const byte) DTV_LINEAR Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (void*) memset::return#2 and assignment [37] (void*) memset::return#2 ← (void*) memset::str#0 Eliminating unused variable - keeping the phi block (byte*) print_screen#13 Eliminating unused variable - keeping the phi block (byte*) print_line_cursor#10 Eliminating unused variable - keeping the phi block (byte*) print_char_cursor#11 -Eliminating unused variable (byte*) form_ctrl_bmm and assignment [351] (byte*) form_ctrl_bmm ← (const byte[]) form_fields_val + (byte) 1 -Eliminating unused variable (byte*) form_ctrl_mcm and assignment [352] (byte*) form_ctrl_mcm ← (const byte[]) form_fields_val + (byte) 2 -Eliminating unused variable (byte*) form_ctrl_ecm and assignment [353] (byte*) form_ctrl_ecm ← (const byte[]) form_fields_val + (byte) 3 -Eliminating unused variable (byte*) form_ctrl_hicol and assignment [354] (byte*) form_ctrl_hicol ← (const byte[]) form_fields_val + (byte) 4 -Eliminating unused variable (byte*) form_ctrl_line and assignment [355] (byte*) form_ctrl_line ← (const byte[]) form_fields_val + (byte) 5 -Eliminating unused variable (byte*) form_ctrl_colof and assignment [356] (byte*) form_ctrl_colof ← (const byte[]) form_fields_val + (byte) 6 -Eliminating unused variable (byte*) form_ctrl_chunk and assignment [357] (byte*) form_ctrl_chunk ← (const byte[]) form_fields_val + (byte) 7 -Eliminating unused variable (byte*) form_ctrl_borof and assignment [358] (byte*) form_ctrl_borof ← (const byte[]) form_fields_val + (byte) 8 -Eliminating unused variable (byte*) form_ctrl_overs and assignment [359] (byte*) form_ctrl_overs ← (const byte[]) form_fields_val + (byte) 9 -Eliminating unused variable (byte*) form_a_pattern and assignment [360] (byte*) form_a_pattern ← (const byte[]) form_fields_val + (byte) $a -Eliminating unused variable (byte*) form_a_start_hi and assignment [361] (byte*) form_a_start_hi ← (const byte[]) form_fields_val + (byte) $b -Eliminating unused variable (byte*) form_a_start_lo and assignment [362] (byte*) form_a_start_lo ← (const byte[]) form_fields_val + (byte) $c -Eliminating unused variable (byte*) form_a_step_hi and assignment [363] (byte*) form_a_step_hi ← (const byte[]) form_fields_val + (byte) $d -Eliminating unused variable (byte*) form_a_step_lo and assignment [364] (byte*) form_a_step_lo ← (const byte[]) form_fields_val + (byte) $e -Eliminating unused variable (byte*) form_a_mod_hi and assignment [365] (byte*) form_a_mod_hi ← (const byte[]) form_fields_val + (byte) $f -Eliminating unused variable (byte*) form_a_mod_lo and assignment [366] (byte*) form_a_mod_lo ← (const byte[]) form_fields_val + (byte) $10 -Eliminating unused variable (byte*) form_b_pattern and assignment [367] (byte*) form_b_pattern ← (const byte[]) form_fields_val + (byte) $11 -Eliminating unused variable (byte*) form_b_start_hi and assignment [368] (byte*) form_b_start_hi ← (const byte[]) form_fields_val + (byte) $12 -Eliminating unused variable (byte*) form_b_start_lo and assignment [369] (byte*) form_b_start_lo ← (const byte[]) form_fields_val + (byte) $13 -Eliminating unused variable (byte*) form_b_step_hi and assignment [370] (byte*) form_b_step_hi ← (const byte[]) form_fields_val + (byte) $14 -Eliminating unused variable (byte*) form_b_step_lo and assignment [371] (byte*) form_b_step_lo ← (const byte[]) form_fields_val + (byte) $15 -Eliminating unused variable (byte*) form_b_mod_hi and assignment [372] (byte*) form_b_mod_hi ← (const byte[]) form_fields_val + (byte) $16 -Eliminating unused variable (byte*) form_b_mod_lo and assignment [373] (byte*) form_b_mod_lo ← (const byte[]) form_fields_val + (byte) $17 -Eliminating unused variable (byte*) form_vic_screen and assignment [374] (byte*) form_vic_screen ← (const byte[]) form_fields_val + (byte) $18 -Eliminating unused variable (byte*) form_vic_gfx and assignment [375] (byte*) form_vic_gfx ← (const byte[]) form_fields_val + (byte) $19 -Eliminating unused variable (byte*) form_vic_cols and assignment [376] (byte*) form_vic_cols ← (const byte[]) form_fields_val + (byte) $1a -Eliminating unused variable (byte*) form_dtv_palet and assignment [377] (byte*) form_dtv_palet ← (const byte[]) form_fields_val + (byte) $1b -Eliminating unused variable (byte*) form_vic_bg0_hi and assignment [378] (byte*) form_vic_bg0_hi ← (const byte[]) form_fields_val + (byte) $1c -Eliminating unused variable (byte*) form_vic_bg0_lo and assignment [379] (byte*) form_vic_bg0_lo ← (const byte[]) form_fields_val + (byte) $1d -Eliminating unused variable (byte*) form_vic_bg1_hi and assignment [380] (byte*) form_vic_bg1_hi ← (const byte[]) form_fields_val + (byte) $1e -Eliminating unused variable (byte*) form_vic_bg1_lo and assignment [381] (byte*) form_vic_bg1_lo ← (const byte[]) form_fields_val + (byte) $1f -Eliminating unused variable (byte*) form_vic_bg2_hi and assignment [382] (byte*) form_vic_bg2_hi ← (const byte[]) form_fields_val + (byte) $20 -Eliminating unused variable (byte*) form_vic_bg2_lo and assignment [383] (byte*) form_vic_bg2_lo ← (const byte[]) form_fields_val + (byte) $21 -Eliminating unused variable (byte*) form_vic_bg3_hi and assignment [384] (byte*) form_vic_bg3_hi ← (const byte[]) form_fields_val + (byte) $22 -Eliminating unused variable (byte*) form_vic_bg3_lo and assignment [385] (byte*) form_vic_bg3_lo ← (const byte[]) form_fields_val + (byte) $23 Eliminating unused variable - keeping the phi block (byte) keyboard_modifiers#41 -Eliminating unused variable (byte) gfx_init_plane_horisontal::gfxbCpuBank#1 and assignment [650] (byte) gfx_init_plane_horisontal::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 -Eliminating unused variable (byte) gfx_init_plane_horisontal2::gfxbCpuBank#1 and assignment [667] (byte) gfx_init_plane_horisontal2::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 -Eliminating unused variable (byte) gfx_init_plane_vertical::gfxbCpuBank#1 and assignment [681] (byte) gfx_init_plane_vertical::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 -Eliminating unused variable (byte) gfx_init_plane_charset8::gfxbCpuBank#1 and assignment [693] (byte) gfx_init_plane_charset8::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 -Eliminating unused variable (byte) gfx_init_plane_fill::gfxbCpuBank#1 and assignment [728] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 +Eliminating unused variable (byte) gfx_init_plane_horisontal::gfxbCpuBank#1 and assignment [614] (byte) gfx_init_plane_horisontal::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 +Eliminating unused variable (byte) gfx_init_plane_horisontal2::gfxbCpuBank#1 and assignment [631] (byte) gfx_init_plane_horisontal2::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 +Eliminating unused variable (byte) gfx_init_plane_vertical::gfxbCpuBank#1 and assignment [645] (byte) gfx_init_plane_vertical::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 +Eliminating unused variable (byte) gfx_init_plane_charset8::gfxbCpuBank#1 and assignment [657] (byte) gfx_init_plane_charset8::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 +Eliminating unused variable (byte) gfx_init_plane_fill::gfxbCpuBank#1 and assignment [692] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 Eliminating unused variable - keeping the phi block (byte) keyboard_modifiers#44 -Eliminating unused variable (byte*) form_render_values::field#0 and assignment [821] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 -Eliminating unused variable (byte*) form_control::field#0 and assignment [828] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 +Eliminating unused variable (byte*) form_render_values::field#0 and assignment [785] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 +Eliminating unused variable (byte*) form_control::field#0 and assignment [792] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 Eliminating unused constant (const byte) bitmap_line::xd#0 Eliminating unused constant (const byte) bitmap_line::yd#0 Eliminating unused constant (const byte*) apply_preset::preset#0 @@ -9583,12 +9249,12 @@ Eliminating unused constant (const byte*) render_preset_name::name#0 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused variable - keeping the phi block (byte) keyboard_modifiers#24 Eliminating unused variable - keeping the phi block (byte) keyboard_modifiers#13 -Eliminating unused variable (byte*) form_field_ptr::return#2 and assignment [779] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 -Eliminating unused variable (byte*) form_field_ptr::return#3 and assignment [785] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 +Eliminating unused variable (byte*) form_field_ptr::return#2 and assignment [778] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 +Eliminating unused variable (byte*) form_field_ptr::return#3 and assignment [784] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 Eliminating unused constant (const byte*) print_screen#0 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused variable - keeping the phi block (byte) keyboard_modifiers#11 -Eliminating unused variable (byte*) form_field_ptr::return#0 and assignment [773] (byte*) form_field_ptr::return#0 ← (byte*) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 +Eliminating unused variable (byte*) form_field_ptr::return#0 and assignment [772] (byte*) form_field_ptr::return#0 ← (byte*) form_field_ptr::line#0 + (byte) form_field_ptr::x#0 Eliminating unused constant (const byte) keyboard_modifiers#0 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -9722,20 +9388,19 @@ Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (byte) keyboard_events_size#45 (byte) keyboard_events_size#24 Successful SSA optimization Pass2IdenticalPhiElimination Constant right-side identified [114] (byte~) bitmap_init::$1 ← > (const byte*) bitmap_init::bitmap#0 -Constant right-side identified [371] (byte) gfx_mode::vic_control#1 ← (const byte) gfx_mode::vic_control#0 | (const byte) VIC_ECM -Constant right-side identified [425] (word~) gfx_mode::$47 ← (const word) gfx_mode::$46 / (word) $4000 -Constant right-side identified [451] (byte) gfx_mode::vic_control2#1 ← (const byte) gfx_mode::vic_control2#0 | (const byte) VIC_MCM -Constant right-side identified [594] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_8bppchunky::gfxbCpuBank#0 -Constant right-side identified [711] (dword~) form_mode::$10 ← (const dword) form_mode::$9 / (dword) $10000 -Constant right-side identified [714] (byte~) form_mode::$13 ← < (const word) form_mode::$12 -Constant right-side identified [716] (byte~) form_mode::$15 ← > (const word) form_mode::$14 -Constant right-side identified [719] (word~) form_mode::$17 ← (const word) form_mode::$16 / (word) $4000 -Constant right-side identified [726] (word~) form_mode::$21 ← (const word) form_mode::$20 & (word) $3fff -Constant right-side identified [728] (word~) form_mode::$24 ← (const word) form_mode::$23 & (word) $3fff +Constant right-side identified [370] (byte) gfx_mode::vic_control#1 ← (const byte) gfx_mode::vic_control#0 | (const byte) VIC_ECM +Constant right-side identified [424] (word~) gfx_mode::$47 ← (const word) gfx_mode::$46 / (word) $4000 +Constant right-side identified [450] (byte) gfx_mode::vic_control2#1 ← (const byte) gfx_mode::vic_control2#0 | (const byte) VIC_MCM +Constant right-side identified [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#1 ← ++ (const byte) gfx_init_plane_8bppchunky::gfxbCpuBank#0 +Constant right-side identified [710] (dword~) form_mode::$10 ← (const dword) form_mode::$9 / (dword) $10000 +Constant right-side identified [713] (byte~) form_mode::$13 ← < (const word) form_mode::$12 +Constant right-side identified [715] (byte~) form_mode::$15 ← > (const word) form_mode::$14 +Constant right-side identified [718] (word~) form_mode::$17 ← (const word) form_mode::$16 / (word) $4000 +Constant right-side identified [725] (word~) form_mode::$21 ← (const word) form_mode::$20 & (word) $3fff +Constant right-side identified [727] (word~) form_mode::$24 ← (const word) form_mode::$23 & (word) $3fff Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) keyboard_modifiers#2 = KEY_MODIFIER_LSHIFT Constant (const byte) bitmap_init::$1 = >bitmap_init::bitmap#0 -Constant (const byte*) form_preset = form_fields_val Constant (const byte) gfx_mode::dtv_control#1 = DTV_LINEAR Constant (const byte) gfx_mode::vic_control#1 = gfx_mode::vic_control#0|VIC_ECM Constant (const word) gfx_mode::$47 = gfx_mode::$46/$4000 @@ -9758,7 +9423,7 @@ Simplifying constant evaluating to zero (const word) form_mode::$16/(word) $4000 Simplifying constant evaluating to zero (byte)(const dword) form_mode::$10 in Simplifying constant evaluating to zero (byte)(const word) form_mode::$17 in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero 3 in [721] (byte~) form_mode::$19 ← (byte) 3 ^ (const byte) form_mode::$18 +Simplifying expression containing zero 3 in [720] (byte~) form_mode::$19 ← (byte) 3 ^ (const byte) form_mode::$18 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const dword) form_mode::$9 Eliminating unused constant (const word) form_mode::$14 @@ -9792,18 +9457,18 @@ Inlining Noop Cast [430] (word~) gfx_mode::$56 ← (word)(byte*~) gfx_mode::$55 Inlining Noop Cast [675] (byte*) gfx_init_plane_fill::gfxb#0 ← (byte*)(word~) gfx_init_plane_fill::$6 keeping gfx_init_plane_fill::gfxb#0 Inlining Noop Cast [741] (byte*) form_field_ptr::line#0 ← (byte*)(word~) form_field_ptr::$2 keeping form_field_ptr::line#0 Successful SSA optimization Pass2NopCastInlining -Rewriting multiplication to use shift [372] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val + (byte) $b) * (byte) $10 -Rewriting multiplication to use shift [387] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val + (byte) $d) * (byte) $10 -Rewriting multiplication to use shift [390] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val + (byte) $f) * (byte) $10 -Rewriting multiplication to use shift [394] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val + (byte) $12) * (byte) $10 -Rewriting multiplication to use shift [409] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val + (byte) $14) * (byte) $10 -Rewriting multiplication to use shift [412] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val + (byte) $16) * (byte) $10 +Rewriting multiplication to use shift [372] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) * (byte) $10 +Rewriting multiplication to use shift [387] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) * (byte) $10 +Rewriting multiplication to use shift [390] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) * (byte) $10 +Rewriting multiplication to use shift [394] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) * (byte) $10 +Rewriting multiplication to use shift [409] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) * (byte) $10 +Rewriting multiplication to use shift [412] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) * (byte) $10 Rewriting division to use shift [424] (word~) gfx_mode::$53 ← (word~) gfx_mode::$52 / (byte) $40 Rewriting division to use shift [433] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 / (byte) 4 -Rewriting multiplication to use shift [450] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val + (byte) $1c) * (byte) $10 -Rewriting multiplication to use shift [453] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val + (byte) $1e) * (byte) $10 -Rewriting multiplication to use shift [456] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val + (byte) $20) * (byte) $10 -Rewriting multiplication to use shift [459] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val + (byte) $22) * (byte) $10 +Rewriting multiplication to use shift [450] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) * (byte) $10 +Rewriting multiplication to use shift [453] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) * (byte) $10 +Rewriting multiplication to use shift [456] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) * (byte) $10 +Rewriting multiplication to use shift [459] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) * (byte) $10 Rewriting multiplication to use shift [509] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 * (byte) $10 Rewriting multiplication to use shift [535] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 * (byte) $10 Rewriting multiplication to use shift [547] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 * (byte) $10 @@ -9866,7 +9531,6 @@ Inlining constant with var siblings (const byte*) get_vic_screen::return#6 Inlining constant with var siblings (const byte*) get_vic_charset::return#0 Inlining constant with var siblings (const byte*) get_vic_charset::return#1 Inlining constant with var siblings (const byte*) get_vic_charset::return#3 -Inlining constant with var siblings (const byte) apply_preset::i#0 Inlining constant with var siblings (const byte*) apply_preset::preset#1 Inlining constant with var siblings (const byte*) apply_preset::preset#2 Inlining constant with var siblings (const byte*) apply_preset::preset#3 @@ -9879,6 +9543,7 @@ Inlining constant with var siblings (const byte*) apply_preset::preset#9 Inlining constant with var siblings (const byte*) apply_preset::preset#10 Inlining constant with var siblings (const byte*) apply_preset::preset#11 Inlining constant with var siblings (const byte*) apply_preset::preset#12 +Inlining constant with var siblings (const byte) apply_preset::i#0 Inlining constant with var siblings (const byte*) render_preset_name::name#1 Inlining constant with var siblings (const byte*) render_preset_name::name#2 Inlining constant with var siblings (const byte*) render_preset_name::name#3 @@ -10159,41 +9824,6 @@ Inlining constant with var siblings (const byte*) render_preset_name::name#9 Inlining constant with var siblings (const byte*) render_preset_name::name#10 Inlining constant with var siblings (const byte*) render_preset_name::name#11 Inlining constant with var siblings (const byte*) render_preset_name::name#12 -Consolidated array index constant in *(form_fields_val+5) -Consolidated array index constant in *(form_fields_val+8) -Consolidated array index constant in *(form_fields_val+4) -Consolidated array index constant in *(form_fields_val+9) -Consolidated array index constant in *(form_fields_val+6) -Consolidated array index constant in *(form_fields_val+7) -Consolidated array index constant in *(form_fields_val+3) -Consolidated array index constant in *(form_fields_val+1) -Consolidated array index constant in *(form_fields_val+2) -Consolidated array index constant in *(form_fields_val+$b) -Consolidated array index constant in *(form_fields_val+$c) -Consolidated array index constant in *(form_fields_val+$a) -Consolidated array index constant in *(form_fields_val+$d) -Consolidated array index constant in *(form_fields_val+$e) -Consolidated array index constant in *(form_fields_val+$f) -Consolidated array index constant in *(form_fields_val+$10) -Consolidated array index constant in *(form_fields_val+$12) -Consolidated array index constant in *(form_fields_val+$13) -Consolidated array index constant in *(form_fields_val+$11) -Consolidated array index constant in *(form_fields_val+$14) -Consolidated array index constant in *(form_fields_val+$15) -Consolidated array index constant in *(form_fields_val+$16) -Consolidated array index constant in *(form_fields_val+$17) -Consolidated array index constant in *(form_fields_val+$18) -Consolidated array index constant in *(form_fields_val+$19) -Consolidated array index constant in *(form_fields_val+$1a) -Consolidated array index constant in *(form_fields_val+$1c) -Consolidated array index constant in *(form_fields_val+$1d) -Consolidated array index constant in *(form_fields_val+$1e) -Consolidated array index constant in *(form_fields_val+$1f) -Consolidated array index constant in *(form_fields_val+$20) -Consolidated array index constant in *(form_fields_val+$21) -Consolidated array index constant in *(form_fields_val+$22) -Consolidated array index constant in *(form_fields_val+$23) -Consolidated array index constant in *(form_fields_val+$1b) Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_x+1 + gfx_init_vic_bitmap::$3) Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_y+1 + gfx_init_vic_bitmap::$4) Successful SSA optimization Pass2ConstantAdditionElimination @@ -10304,13 +9934,9 @@ Added new block during phi lifting form_control::@36(between form_control::@33 a Added new block during phi lifting form_control::@37(between form_control::@11 and form_control::@22) Added new block during phi lifting form_control::@38(between form_control::@19 and form_control::@22) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @17 -Adding NOP phi() at start of @41 Adding NOP phi() at start of @45 Adding NOP phi() at start of @48 -Adding NOP phi() at start of @60 -Adding NOP phi() at start of @62 Adding NOP phi() at start of @81 Adding NOP phi() at start of @85 Adding NOP phi() at start of @86 @@ -10459,338 +10085,334 @@ Adding NOP phi() at start of gfx_init_screen2 Adding NOP phi() at start of gfx_init_screen1 Adding NOP phi() at start of gfx_init_screen0 CALL GRAPH -Calls in [] to main:10 -Calls in [main] to keyboard_init:17 gfx_init:19 form_mode:23 gfx_mode:25 -Calls in [gfx_mode] to get_plane:69 get_plane:92 get_vic_screen:115 get_vic_charset:122 get_vic_screen:132 keyboard_event_scan:169 keyboard_event_get:171 -Calls in [keyboard_event_scan] to keyboard_matrix_read:207 keyboard_event_pressed:218 keyboard_event_pressed:224 keyboard_event_pressed:231 keyboard_event_pressed:238 -Calls in [form_mode] to print_set_screen:343 print_cls:345 print_str_lines:347 print_set_screen:349 print_cls:351 print_str_lines:353 form_set_screen:355 form_render_values:357 render_preset_name:360 form_control:387 apply_preset:394 form_render_values:396 render_preset_name:399 -Calls in [render_preset_name] to print_str_at:424 -Calls in [form_render_values] to form_field_ptr:453 -Calls in [form_control] to form_field_ptr:494 keyboard_event_scan:503 keyboard_event_get:505 -Calls in [print_str_lines] to print_ln:576 -Calls in [print_cls] to memset:591 -Calls in [gfx_init] to gfx_init_screen0:608 gfx_init_screen1:610 gfx_init_screen2:612 gfx_init_screen3:614 gfx_init_screen4:616 gfx_init_charset:618 gfx_init_vic_bitmap:620 gfx_init_plane_8bppchunky:622 gfx_init_plane_charset8:624 gfx_init_plane_horisontal:626 gfx_init_plane_vertical:628 gfx_init_plane_horisontal2:630 gfx_init_plane_vertical2:632 gfx_init_plane_blank:634 gfx_init_plane_full:636 -Calls in [gfx_init_plane_full] to gfx_init_plane_fill:640 -Calls in [gfx_init_plane_fill] to dtvSetCpuBankSegment1:649 dtvSetCpuBankSegment1:664 -Calls in [gfx_init_plane_blank] to gfx_init_plane_fill:676 -Calls in [gfx_init_plane_vertical2] to gfx_init_plane_fill:680 -Calls in [gfx_init_plane_horisontal2] to dtvSetCpuBankSegment1:684 dtvSetCpuBankSegment1:698 -Calls in [gfx_init_plane_vertical] to dtvSetCpuBankSegment1:706 dtvSetCpuBankSegment1:718 -Calls in [gfx_init_plane_horisontal] to dtvSetCpuBankSegment1:726 dtvSetCpuBankSegment1:742 -Calls in [gfx_init_plane_charset8] to dtvSetCpuBankSegment1:753 dtvSetCpuBankSegment1:781 -Calls in [gfx_init_plane_8bppchunky] to dtvSetCpuBankSegment1:797 dtvSetCpuBankSegment1:806 dtvSetCpuBankSegment1:819 -Calls in [gfx_init_vic_bitmap] to bitmap_init:831 bitmap_clear:833 bitmap_line:842 -Calls in [bitmap_line] to bitmap_line_ydxi:860 bitmap_line_xdyi:873 bitmap_line_ydxd:887 bitmap_line_xdyd:899 bitmap_line_ydxd:915 bitmap_line_xdyd:927 bitmap_line_ydxi:941 bitmap_line_xdyi:953 -Calls in [bitmap_line_xdyi] to bitmap_plot:965 -Calls in [bitmap_line_ydxi] to bitmap_plot:999 -Calls in [bitmap_line_xdyd] to bitmap_plot:1026 -Calls in [bitmap_line_ydxd] to bitmap_plot:1053 +Calls in [] to main:6 +Calls in [main] to keyboard_init:13 gfx_init:15 form_mode:19 gfx_mode:21 +Calls in [gfx_mode] to get_plane:65 get_plane:88 get_vic_screen:111 get_vic_charset:118 get_vic_screen:128 keyboard_event_scan:165 keyboard_event_get:167 +Calls in [keyboard_event_scan] to keyboard_matrix_read:203 keyboard_event_pressed:214 keyboard_event_pressed:220 keyboard_event_pressed:227 keyboard_event_pressed:234 +Calls in [form_mode] to print_set_screen:339 print_cls:341 print_str_lines:343 print_set_screen:345 print_cls:347 print_str_lines:349 form_set_screen:351 form_render_values:353 render_preset_name:356 form_control:383 apply_preset:390 form_render_values:392 render_preset_name:395 +Calls in [render_preset_name] to print_str_at:420 +Calls in [form_render_values] to form_field_ptr:449 +Calls in [form_control] to form_field_ptr:490 keyboard_event_scan:499 keyboard_event_get:501 +Calls in [print_str_lines] to print_ln:572 +Calls in [print_cls] to memset:587 +Calls in [gfx_init] to gfx_init_screen0:604 gfx_init_screen1:606 gfx_init_screen2:608 gfx_init_screen3:610 gfx_init_screen4:612 gfx_init_charset:614 gfx_init_vic_bitmap:616 gfx_init_plane_8bppchunky:618 gfx_init_plane_charset8:620 gfx_init_plane_horisontal:622 gfx_init_plane_vertical:624 gfx_init_plane_horisontal2:626 gfx_init_plane_vertical2:628 gfx_init_plane_blank:630 gfx_init_plane_full:632 +Calls in [gfx_init_plane_full] to gfx_init_plane_fill:636 +Calls in [gfx_init_plane_fill] to dtvSetCpuBankSegment1:645 dtvSetCpuBankSegment1:660 +Calls in [gfx_init_plane_blank] to gfx_init_plane_fill:672 +Calls in [gfx_init_plane_vertical2] to gfx_init_plane_fill:676 +Calls in [gfx_init_plane_horisontal2] to dtvSetCpuBankSegment1:680 dtvSetCpuBankSegment1:694 +Calls in [gfx_init_plane_vertical] to dtvSetCpuBankSegment1:702 dtvSetCpuBankSegment1:714 +Calls in [gfx_init_plane_horisontal] to dtvSetCpuBankSegment1:722 dtvSetCpuBankSegment1:738 +Calls in [gfx_init_plane_charset8] to dtvSetCpuBankSegment1:749 dtvSetCpuBankSegment1:777 +Calls in [gfx_init_plane_8bppchunky] to dtvSetCpuBankSegment1:793 dtvSetCpuBankSegment1:802 dtvSetCpuBankSegment1:815 +Calls in [gfx_init_vic_bitmap] to bitmap_init:827 bitmap_clear:829 bitmap_line:838 +Calls in [bitmap_line] to bitmap_line_ydxi:856 bitmap_line_xdyi:869 bitmap_line_ydxd:883 bitmap_line_xdyd:895 bitmap_line_ydxd:911 bitmap_line_xdyd:923 bitmap_line_ydxi:937 bitmap_line_xdyi:949 +Calls in [bitmap_line_xdyi] to bitmap_plot:961 +Calls in [bitmap_line_ydxi] to bitmap_plot:995 +Calls in [bitmap_line_xdyd] to bitmap_plot:1022 +Calls in [bitmap_line_ydxd] to bitmap_plot:1049 Created 192 initial phi equivalence classes -Coalesced [26] form_cursor_count#61 ← form_cursor_count#16 -Coalesced [27] keyboard_events_size#162 ← keyboard_events_size#24 -Coalesced [28] form_field_idx#67 ← form_field_idx#18 -Coalesced [34] gfx_mode::dtv_control#20 ← gfx_mode::dtv_control#2 -Coalesced [38] gfx_mode::dtv_control#21 ← gfx_mode::dtv_control#3 -Coalesced [42] gfx_mode::dtv_control#23 ← gfx_mode::dtv_control#4 -Coalesced [46] gfx_mode::dtv_control#25 ← gfx_mode::dtv_control#5 -Coalesced [50] gfx_mode::dtv_control#27 ← gfx_mode::dtv_control#6 -Coalesced [58] gfx_mode::vic_control#7 ← gfx_mode::vic_control#2 -Coalesced [68] get_plane::idx#17 ← get_plane::idx#0 -Coalesced [91] get_plane::idx#16 ← get_plane::idx#1 -Coalesced [114] get_vic_screen::idx#7 ← get_vic_screen::idx#0 -Coalesced [131] get_vic_screen::idx#8 ← get_vic_screen::idx#1 -Coalesced [135] gfx_mode::vic_colors#6 ← gfx_mode::vic_colors#0 -Coalesced [137] gfx_mode::vic_colors#7 ← gfx_mode::vic_colors#3 -Coalesced [138] gfx_mode::col#6 ← gfx_mode::col#3 -Coalesced [168] keyboard_events_size#149 ← keyboard_events_size#24 -Coalesced [176] gfx_mode::j#3 ← gfx_mode::j#1 -Coalesced [182] gfx_mode::i#3 ← gfx_mode::i#1 -Coalesced [183] gfx_mode::vic_colors#5 ← gfx_mode::vic_colors#1 -Coalesced [184] gfx_mode::col#5 ← gfx_mode::col#1 -Coalesced [185] gfx_mode::cy#5 ← gfx_mode::cy#1 -Coalesced (already) [186] gfx_mode::vic_colors#8 ← gfx_mode::vic_colors#1 -Coalesced (already) [187] gfx_mode::col#7 ← gfx_mode::col#1 -Coalesced [188] gfx_mode::cx#3 ← gfx_mode::cx#1 -Coalesced [189] gfx_mode::vic_control#8 ← gfx_mode::vic_control#5 -Coalesced [190] gfx_mode::dtv_control#28 ← gfx_mode::dtv_control#13 -Coalesced [191] gfx_mode::dtv_control#26 ← gfx_mode::dtv_control#11 -Coalesced [192] gfx_mode::dtv_control#24 ← gfx_mode::dtv_control#10 -Coalesced [193] gfx_mode::dtv_control#22 ← gfx_mode::dtv_control#15 -Coalesced [194] gfx_mode::dtv_control#19 ← gfx_mode::dtv_control#14 -Coalesced [198] keyboard_event_get::return#8 ← keyboard_event_get::return#1 -Coalesced [199] keyboard_events_size#161 ← keyboard_events_size#4 -Coalesced [202] keyboard_events_size#160 ← keyboard_events_size#100 -Coalesced [204] keyboard_events_size#150 ← keyboard_events_size#99 -Coalesced [212] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [213] keyboard_events_size#153 ← keyboard_events_size#109 -Coalesced [229] keyboard_modifiers#130 ← keyboard_modifiers#3 -Coalesced [236] keyboard_modifiers#132 ← keyboard_modifiers#4 -Coalesced [243] keyboard_modifiers#134 ← keyboard_modifiers#5 -Coalesced [246] keyboard_modifiers#133 ← keyboard_modifiers#20 -Coalesced [247] keyboard_modifiers#131 ← keyboard_modifiers#19 -Coalesced [248] keyboard_modifiers#129 ← keyboard_modifiers#18 -Coalesced [249] keyboard_event_scan::row#14 ← keyboard_event_scan::row#1 -Coalesced [250] keyboard_event_scan::keycode#15 ← keyboard_event_scan::keycode#13 -Coalesced (already) [251] keyboard_events_size#151 ← keyboard_events_size#100 -Coalesced [252] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [253] keyboard_events_size#155 ← keyboard_events_size#109 -Coalesced [263] keyboard_events_size#159 ← keyboard_events_size#2 -Coalesced [269] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced [270] keyboard_events_size#152 ← keyboard_events_size#108 -Coalesced [271] keyboard_event_scan::col#8 ← keyboard_event_scan::col#1 -Coalesced (already) [272] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#14 -Coalesced (already) [273] keyboard_events_size#154 ← keyboard_events_size#108 -Coalesced [277] keyboard_events_size#157 ← keyboard_events_size#1 -Coalesced (already) [278] keyboard_events_size#158 ← keyboard_events_size#18 -Coalesced (already) [279] keyboard_events_size#156 ← keyboard_events_size#18 -Coalesced [359] render_preset_name::idx#13 ← render_preset_name::idx#0 -Coalesced [380] form_cursor_count#63 ← form_cursor_count#1 -Coalesced [381] keyboard_events_size#164 ← keyboard_events_size#27 -Coalesced [382] form_field_idx#69 ← form_field_idx#1 -Coalesced [383] form_mode::preset_current#10 ← form_mode::preset_current#0 -Coalesced [398] render_preset_name::idx#14 ← render_preset_name::idx#1 -Coalesced (already) [400] form_cursor_count#64 ← form_cursor_count#16 -Coalesced (already) [401] keyboard_events_size#165 ← keyboard_events_size#24 -Coalesced (already) [402] form_field_idx#70 ← form_field_idx#18 -Coalesced [403] form_mode::preset_current#11 ← form_mode::preset_current#1 -Coalesced (already) [404] form_cursor_count#62 ← form_cursor_count#16 -Coalesced (already) [405] keyboard_events_size#163 ← keyboard_events_size#24 -Coalesced (already) [406] form_field_idx#68 ← form_field_idx#18 -Coalesced (already) [407] form_mode::preset_current#9 ← form_mode::preset_current#6 -Coalesced [408] form_mode::i#3 ← form_mode::i#1 -Coalesced [438] print_str_at::str#5 ← print_str_at::str#1 -Coalesced [445] print_str_at::str#6 ← print_str_at::str#0 -Coalesced [446] print_str_at::at#5 ← print_str_at::at#0 -Coalesced [452] form_field_ptr::field_idx#4 ← form_field_ptr::field_idx#0 -Coalesced [456] form_render_values::idx#5 ← form_render_values::idx#1 -Coalesced [480] apply_preset::i#4 ← apply_preset::i#1 -Coalesced [493] form_field_ptr::field_idx#3 ← form_field_ptr::field_idx#1 -Coalesced (already) [502] keyboard_events_size#148 ← keyboard_events_size#47 -Coalesced [517] form_field_idx#74 ← form_field_idx#31 -Coalesced [520] form_field_idx#71 ← form_field_idx#6 -Coalesced [524] form_field_idx#72 ← form_field_idx#5 -Coalesced [532] form_cursor_count#67 ← form_cursor_count#15 -Coalesced (already) [533] form_field_idx#75 ← form_field_idx#28 -Coalesced (already) [538] form_cursor_count#66 ← form_cursor_count#15 -Coalesced (already) [539] form_field_idx#73 ← form_field_idx#28 -Coalesced (already) [540] form_cursor_count#68 ← form_cursor_count#15 -Coalesced (already) [541] form_field_idx#76 ← form_field_idx#28 -Coalesced [544] form_cursor_count#65 ← form_cursor_count#5 -Coalesced [555] form_set_screen::line#3 ← form_set_screen::line#1 -Coalesced [556] form_set_screen::y#3 ← form_set_screen::y#1 -Coalesced [558] print_str_lines::str#10 ← print_str_lines::str#5 -Not coalescing [559] print_char_cursor#71 ← print_screen#1 -Coalesced [560] print_line_cursor#71 ← print_screen#1 -Coalesced [564] print_str_lines::str#12 ← print_str_lines::str#3 -Coalesced [565] print_char_cursor#73 ← print_char_cursor#22 -Coalesced [572] print_char_cursor#76 ← print_char_cursor#1 -Coalesced [577] print_str_lines::str#11 ← print_str_lines::str#0 -Not coalescing [578] print_char_cursor#72 ← print_line_cursor#22 -Coalesced [579] print_line_cursor#72 ← print_line_cursor#22 -Coalesced (already) [580] print_str_lines::str#13 ← print_str_lines::str#0 -Coalesced [581] print_char_cursor#74 ← print_char_cursor#38 -Coalesced (already) [582] print_char_cursor#75 ← print_char_cursor#20 -Coalesced [583] print_line_cursor#73 ← print_line_cursor#2 -Coalesced (already) [589] print_line_cursor#74 ← print_line_cursor#22 -Coalesced [603] memset::dst#5 ← memset::dst#1 -Coalesced [605] print_screen#1 ← print_set_screen::screen#2 -Coalesced [648] dtvSetCpuBankSegment1::cpuBankIdx#15 ← dtvSetCpuBankSegment1::cpuBankIdx#11 -Coalesced [655] gfx_init_plane_fill::gfxb#7 ← gfx_init_plane_fill::gfxb#3 -Coalesced [667] gfx_init_plane_fill::gfxb#5 ← gfx_init_plane_fill::gfxb#1 -Coalesced [668] gfx_init_plane_fill::by#5 ← gfx_init_plane_fill::by#1 -Coalesced (already) [669] gfx_init_plane_fill::gfxb#8 ← gfx_init_plane_fill::gfxb#1 -Coalesced [670] gfx_init_plane_fill::bx#3 ← gfx_init_plane_fill::bx#1 -Coalesced [687] gfx_init_plane_horisontal2::gfxa#6 ← gfx_init_plane_horisontal2::gfxa#3 -Coalesced [701] gfx_init_plane_horisontal2::ay#5 ← gfx_init_plane_horisontal2::ay#1 -Coalesced [702] gfx_init_plane_horisontal2::gfxa#5 ← gfx_init_plane_horisontal2::gfxa#1 -Coalesced (already) [703] gfx_init_plane_horisontal2::gfxa#7 ← gfx_init_plane_horisontal2::gfxa#1 -Coalesced [704] gfx_init_plane_horisontal2::ax#3 ← gfx_init_plane_horisontal2::ax#1 -Coalesced [709] gfx_init_plane_vertical::gfxb#6 ← gfx_init_plane_vertical::gfxb#3 -Coalesced [721] gfx_init_plane_vertical::gfxb#5 ← gfx_init_plane_vertical::gfxb#1 -Coalesced [722] gfx_init_plane_vertical::by#5 ← gfx_init_plane_vertical::by#1 -Coalesced (already) [723] gfx_init_plane_vertical::gfxb#7 ← gfx_init_plane_vertical::gfxb#1 -Coalesced [724] gfx_init_plane_vertical::bx#3 ← gfx_init_plane_vertical::bx#1 -Coalesced [729] gfx_init_plane_horisontal::gfxa#10 ← gfx_init_plane_horisontal::gfxa#6 -Coalesced [735] gfx_init_plane_horisontal::gfxa#13 ← gfx_init_plane_horisontal::gfxa#2 -Coalesced [745] gfx_init_plane_horisontal::ay#8 ← gfx_init_plane_horisontal::ay#1 -Coalesced [746] gfx_init_plane_horisontal::gfxa#9 ← gfx_init_plane_horisontal::gfxa#7 -Coalesced (already) [747] gfx_init_plane_horisontal::gfxa#11 ← gfx_init_plane_horisontal::gfxa#7 -Coalesced [748] gfx_init_plane_horisontal::ax#6 ← gfx_init_plane_horisontal::ax#1 -Coalesced [751] gfx_init_plane_horisontal::gfxa#12 ← gfx_init_plane_horisontal::gfxa#1 -Coalesced [756] gfx_init_plane_charset8::chargen#10 ← gfx_init_plane_charset8::chargen#3 -Coalesced [757] gfx_init_plane_charset8::gfxa#10 ← gfx_init_plane_charset8::gfxa#6 -Coalesced [758] gfx_init_plane_charset8::col#10 ← gfx_init_plane_charset8::col#6 -Coalesced [762] gfx_init_plane_charset8::bits#5 ← gfx_init_plane_charset8::bits#0 -Coalesced [763] gfx_init_plane_charset8::gfxa#12 ← gfx_init_plane_charset8::gfxa#5 -Coalesced [764] gfx_init_plane_charset8::col#12 ← gfx_init_plane_charset8::col#5 -Not coalescing [768] gfx_init_plane_charset8::c#3 ← gfx_init_plane_charset8::col#2 -Coalesced [784] gfx_init_plane_charset8::chargen#9 ← gfx_init_plane_charset8::chargen#1 -Coalesced [785] gfx_init_plane_charset8::gfxa#9 ← gfx_init_plane_charset8::gfxa#1 -Coalesced [786] gfx_init_plane_charset8::col#9 ← gfx_init_plane_charset8::col#1 -Coalesced [787] gfx_init_plane_charset8::ch#9 ← gfx_init_plane_charset8::ch#1 -Coalesced (already) [788] gfx_init_plane_charset8::chargen#11 ← gfx_init_plane_charset8::chargen#1 -Coalesced (already) [789] gfx_init_plane_charset8::gfxa#11 ← gfx_init_plane_charset8::gfxa#1 -Coalesced (already) [790] gfx_init_plane_charset8::col#11 ← gfx_init_plane_charset8::col#1 -Coalesced [791] gfx_init_plane_charset8::cr#7 ← gfx_init_plane_charset8::cr#1 -Coalesced [792] gfx_init_plane_charset8::bits#6 ← gfx_init_plane_charset8::bits#1 -Coalesced (already) [793] gfx_init_plane_charset8::gfxa#13 ← gfx_init_plane_charset8::gfxa#1 -Coalesced (already) [794] gfx_init_plane_charset8::col#13 ← gfx_init_plane_charset8::col#1 -Coalesced [795] gfx_init_plane_charset8::cp#5 ← gfx_init_plane_charset8::cp#1 -Coalesced [800] gfx_init_plane_8bppchunky::gfxb#8 ← gfx_init_plane_8bppchunky::gfxb#5 -Coalesced [801] gfx_init_plane_8bppchunky::gfxbCpuBank#11 ← gfx_init_plane_8bppchunky::gfxbCpuBank#7 -Coalesced [805] dtvSetCpuBankSegment1::cpuBankIdx#14 ← dtvSetCpuBankSegment1::cpuBankIdx#1 -Coalesced [808] gfx_init_plane_8bppchunky::gfxbCpuBank#14 ← gfx_init_plane_8bppchunky::gfxbCpuBank#2 -Coalesced [822] gfx_init_plane_8bppchunky::gfxb#7 ← gfx_init_plane_8bppchunky::gfxb#1 -Coalesced [823] gfx_init_plane_8bppchunky::y#8 ← gfx_init_plane_8bppchunky::y#1 -Coalesced [824] gfx_init_plane_8bppchunky::gfxbCpuBank#10 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 -Coalesced (already) [825] gfx_init_plane_8bppchunky::gfxb#9 ← gfx_init_plane_8bppchunky::gfxb#1 -Coalesced [826] gfx_init_plane_8bppchunky::x#6 ← gfx_init_plane_8bppchunky::x#1 -Coalesced (already) [827] gfx_init_plane_8bppchunky::gfxbCpuBank#12 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 -Coalesced [828] gfx_init_plane_8bppchunky::gfxb#10 ← gfx_init_plane_8bppchunky::gfxb#3 -Coalesced (already) [829] gfx_init_plane_8bppchunky::gfxbCpuBank#13 ← gfx_init_plane_8bppchunky::gfxbCpuBank#4 -Coalesced [844] gfx_init_vic_bitmap::l#5 ← gfx_init_vic_bitmap::l#1 -Coalesced [855] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#0 -Coalesced [856] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#0 -Coalesced [857] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#0 -Coalesced [858] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#0 -Coalesced [859] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#0 -Coalesced [868] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#0 -Coalesced [869] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#0 -Coalesced [870] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#0 -Coalesced [871] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#0 -Coalesced [872] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#0 -Coalesced [882] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 -Coalesced [883] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 -Coalesced [884] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 -Coalesced [885] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 -Coalesced [886] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 -Coalesced [894] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#0 -Coalesced [895] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 -Coalesced [896] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#0 -Coalesced [897] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#0 -Coalesced [898] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#0 -Coalesced [910] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 -Coalesced [911] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 -Coalesced [912] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 -Coalesced [913] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 -Coalesced [914] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 -Coalesced [922] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#1 -Coalesced [923] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#1 -Coalesced [924] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#1 -Coalesced [925] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#1 -Coalesced [926] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#1 -Coalesced [936] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#1 -Coalesced [937] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#1 -Coalesced [938] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#1 -Coalesced [939] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#1 -Coalesced [940] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#1 -Coalesced [948] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#1 -Coalesced [949] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#1 -Coalesced [950] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#1 -Coalesced [951] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#1 -Coalesced [952] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#1 -Coalesced [957] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 -Coalesced [958] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 -Coalesced [959] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 -Coalesced [963] bitmap_plot::x#6 ← bitmap_plot::x#0 -Coalesced [964] bitmap_plot::y#6 ← bitmap_plot::y#0 -Coalesced [971] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 -Coalesced [972] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 -Coalesced [977] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 -Coalesced [978] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 -Coalesced [979] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 -Coalesced (already) [980] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 -Coalesced [981] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 -Coalesced [991] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 -Coalesced [992] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 -Coalesced [993] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 -Coalesced [997] bitmap_plot::x#8 ← bitmap_plot::x#2 -Coalesced [998] bitmap_plot::y#8 ← bitmap_plot::y#2 -Coalesced [1005] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 -Coalesced [1006] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 -Coalesced [1011] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 -Coalesced [1012] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 -Coalesced [1013] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 -Coalesced (already) [1014] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 -Coalesced [1015] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 -Coalesced [1018] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 -Coalesced [1019] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 -Coalesced [1020] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 -Coalesced [1024] bitmap_plot::x#5 ← bitmap_plot::x#1 -Coalesced [1025] bitmap_plot::y#5 ← bitmap_plot::y#1 -Coalesced [1032] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 -Coalesced [1033] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 -Coalesced [1038] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 -Coalesced [1039] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 -Coalesced [1040] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 -Coalesced (already) [1041] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 -Coalesced [1042] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 -Coalesced [1045] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 -Coalesced [1046] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 -Coalesced [1047] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 -Coalesced [1051] bitmap_plot::x#7 ← bitmap_plot::x#3 -Coalesced [1052] bitmap_plot::y#7 ← bitmap_plot::y#3 -Coalesced [1059] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 -Coalesced [1060] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 -Coalesced [1065] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 -Coalesced [1066] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 -Coalesced [1067] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 -Coalesced (already) [1068] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 -Coalesced [1069] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 -Coalesced [1073] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [1082] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [1083] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [1084] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [1085] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [1108] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [1113] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [1114] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [1115] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [1116] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [1117] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [1118] bitmap_init::bits#6 ← bitmap_init::bits#1 -Coalesced [1121] gfx_init_charset::chargen#6 ← gfx_init_charset::chargen#3 -Coalesced [1122] gfx_init_charset::charset#6 ← gfx_init_charset::charset#3 -Coalesced [1133] gfx_init_charset::chargen#5 ← gfx_init_charset::chargen#1 -Coalesced [1134] gfx_init_charset::charset#5 ← gfx_init_charset::charset#1 -Coalesced [1135] gfx_init_charset::c#5 ← gfx_init_charset::c#1 -Coalesced (already) [1136] gfx_init_charset::chargen#7 ← gfx_init_charset::chargen#1 -Coalesced (already) [1137] gfx_init_charset::charset#7 ← gfx_init_charset::charset#1 -Coalesced [1138] gfx_init_charset::l#3 ← gfx_init_charset::l#1 -Coalesced [1141] gfx_init_screen4::ch#6 ← gfx_init_screen4::ch#3 -Coalesced [1150] gfx_init_screen4::ch#5 ← gfx_init_screen4::ch#1 -Coalesced [1151] gfx_init_screen4::cy#5 ← gfx_init_screen4::cy#1 -Coalesced (already) [1152] gfx_init_screen4::ch#7 ← gfx_init_screen4::ch#1 -Coalesced [1153] gfx_init_screen4::cx#3 ← gfx_init_screen4::cx#1 -Coalesced [1156] gfx_init_screen3::ch#6 ← gfx_init_screen3::ch#3 -Coalesced [1169] gfx_init_screen3::cy#5 ← gfx_init_screen3::cy#1 -Coalesced [1170] gfx_init_screen3::ch#5 ← gfx_init_screen3::ch#1 -Coalesced [1171] gfx_init_screen3::cx#3 ← gfx_init_screen3::cx#1 -Coalesced (already) [1172] gfx_init_screen3::ch#7 ← gfx_init_screen3::ch#1 -Coalesced [1175] gfx_init_screen2::ch#6 ← gfx_init_screen2::ch#3 -Coalesced [1189] gfx_init_screen2::cy#5 ← gfx_init_screen2::cy#1 -Coalesced [1190] gfx_init_screen2::ch#5 ← gfx_init_screen2::ch#1 -Coalesced [1191] gfx_init_screen2::cx#3 ← gfx_init_screen2::cx#1 -Coalesced (already) [1192] gfx_init_screen2::ch#7 ← gfx_init_screen2::ch#1 -Coalesced [1195] gfx_init_screen1::ch#6 ← gfx_init_screen1::ch#3 -Coalesced [1206] gfx_init_screen1::cy#5 ← gfx_init_screen1::cy#1 -Coalesced [1207] gfx_init_screen1::ch#5 ← gfx_init_screen1::ch#1 -Coalesced [1208] gfx_init_screen1::cx#3 ← gfx_init_screen1::cx#1 -Coalesced (already) [1209] gfx_init_screen1::ch#7 ← gfx_init_screen1::ch#1 -Coalesced [1212] gfx_init_screen0::ch#6 ← gfx_init_screen0::ch#3 -Coalesced [1225] gfx_init_screen0::cy#5 ← gfx_init_screen0::cy#1 -Coalesced [1226] gfx_init_screen0::ch#5 ← gfx_init_screen0::ch#1 -Coalesced [1227] gfx_init_screen0::cx#3 ← gfx_init_screen0::cx#1 -Coalesced (already) [1228] gfx_init_screen0::ch#7 ← gfx_init_screen0::ch#1 +Coalesced [22] form_cursor_count#61 ← form_cursor_count#16 +Coalesced [23] keyboard_events_size#160 ← keyboard_events_size#24 +Coalesced [24] form_field_idx#67 ← form_field_idx#18 +Coalesced [30] gfx_mode::dtv_control#20 ← gfx_mode::dtv_control#2 +Coalesced [34] gfx_mode::dtv_control#21 ← gfx_mode::dtv_control#3 +Coalesced [38] gfx_mode::dtv_control#23 ← gfx_mode::dtv_control#4 +Coalesced [42] gfx_mode::dtv_control#25 ← gfx_mode::dtv_control#5 +Coalesced [46] gfx_mode::dtv_control#27 ← gfx_mode::dtv_control#6 +Coalesced [54] gfx_mode::vic_control#7 ← gfx_mode::vic_control#2 +Coalesced [64] get_plane::idx#17 ← get_plane::idx#0 +Coalesced [87] get_plane::idx#16 ← get_plane::idx#1 +Coalesced [110] get_vic_screen::idx#7 ← get_vic_screen::idx#0 +Coalesced [127] get_vic_screen::idx#8 ← get_vic_screen::idx#1 +Coalesced [131] gfx_mode::vic_colors#6 ← gfx_mode::vic_colors#0 +Coalesced [133] gfx_mode::vic_colors#7 ← gfx_mode::vic_colors#3 +Coalesced [134] gfx_mode::col#6 ← gfx_mode::col#3 +Coalesced [164] keyboard_events_size#147 ← keyboard_events_size#24 +Coalesced [172] gfx_mode::j#3 ← gfx_mode::j#1 +Coalesced [178] gfx_mode::i#3 ← gfx_mode::i#1 +Coalesced [179] gfx_mode::vic_colors#5 ← gfx_mode::vic_colors#1 +Coalesced [180] gfx_mode::col#5 ← gfx_mode::col#1 +Coalesced [181] gfx_mode::cy#5 ← gfx_mode::cy#1 +Coalesced (already) [182] gfx_mode::vic_colors#8 ← gfx_mode::vic_colors#1 +Coalesced (already) [183] gfx_mode::col#7 ← gfx_mode::col#1 +Coalesced [184] gfx_mode::cx#3 ← gfx_mode::cx#1 +Coalesced [185] gfx_mode::vic_control#8 ← gfx_mode::vic_control#5 +Coalesced [186] gfx_mode::dtv_control#28 ← gfx_mode::dtv_control#13 +Coalesced [187] gfx_mode::dtv_control#26 ← gfx_mode::dtv_control#11 +Coalesced [188] gfx_mode::dtv_control#24 ← gfx_mode::dtv_control#10 +Coalesced [189] gfx_mode::dtv_control#22 ← gfx_mode::dtv_control#15 +Coalesced [190] gfx_mode::dtv_control#19 ← gfx_mode::dtv_control#14 +Coalesced [194] keyboard_event_get::return#8 ← keyboard_event_get::return#1 +Coalesced [195] keyboard_events_size#159 ← keyboard_events_size#4 +Coalesced [198] keyboard_events_size#158 ← keyboard_events_size#100 +Coalesced [200] keyboard_events_size#148 ← keyboard_events_size#98 +Coalesced [208] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [209] keyboard_events_size#151 ← keyboard_events_size#107 +Coalesced [225] keyboard_modifiers#128 ← keyboard_modifiers#3 +Coalesced [232] keyboard_modifiers#130 ← keyboard_modifiers#4 +Coalesced [239] keyboard_modifiers#132 ← keyboard_modifiers#5 +Coalesced [242] keyboard_modifiers#131 ← keyboard_modifiers#20 +Coalesced [243] keyboard_modifiers#129 ← keyboard_modifiers#19 +Coalesced [244] keyboard_modifiers#127 ← keyboard_modifiers#18 +Coalesced [245] keyboard_event_scan::row#14 ← keyboard_event_scan::row#1 +Coalesced [246] keyboard_event_scan::keycode#15 ← keyboard_event_scan::keycode#13 +Coalesced (already) [247] keyboard_events_size#149 ← keyboard_events_size#100 +Coalesced [248] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [249] keyboard_events_size#153 ← keyboard_events_size#107 +Coalesced [259] keyboard_events_size#157 ← keyboard_events_size#2 +Coalesced [265] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced [266] keyboard_events_size#150 ← keyboard_events_size#106 +Coalesced [267] keyboard_event_scan::col#8 ← keyboard_event_scan::col#1 +Coalesced (already) [268] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#14 +Coalesced (already) [269] keyboard_events_size#152 ← keyboard_events_size#106 +Coalesced [273] keyboard_events_size#155 ← keyboard_events_size#1 +Coalesced (already) [274] keyboard_events_size#156 ← keyboard_events_size#18 +Coalesced (already) [275] keyboard_events_size#154 ← keyboard_events_size#18 +Coalesced [355] render_preset_name::idx#13 ← render_preset_name::idx#0 +Coalesced [376] form_cursor_count#63 ← form_cursor_count#1 +Coalesced [377] keyboard_events_size#162 ← keyboard_events_size#27 +Coalesced [378] form_field_idx#69 ← form_field_idx#1 +Coalesced [379] form_mode::preset_current#10 ← form_mode::preset_current#0 +Coalesced [394] render_preset_name::idx#14 ← render_preset_name::idx#1 +Coalesced (already) [396] form_cursor_count#64 ← form_cursor_count#16 +Coalesced (already) [397] keyboard_events_size#163 ← keyboard_events_size#24 +Coalesced (already) [398] form_field_idx#70 ← form_field_idx#18 +Coalesced [399] form_mode::preset_current#11 ← form_mode::preset_current#1 +Coalesced (already) [400] form_cursor_count#62 ← form_cursor_count#16 +Coalesced (already) [401] keyboard_events_size#161 ← keyboard_events_size#24 +Coalesced (already) [402] form_field_idx#68 ← form_field_idx#18 +Coalesced (already) [403] form_mode::preset_current#9 ← form_mode::preset_current#6 +Coalesced [404] form_mode::i#3 ← form_mode::i#1 +Coalesced [434] print_str_at::str#5 ← print_str_at::str#1 +Coalesced [441] print_str_at::str#6 ← print_str_at::str#0 +Coalesced [442] print_str_at::at#5 ← print_str_at::at#0 +Coalesced [448] form_field_ptr::field_idx#4 ← form_field_ptr::field_idx#0 +Coalesced [452] form_render_values::idx#5 ← form_render_values::idx#1 +Coalesced [476] apply_preset::i#4 ← apply_preset::i#1 +Coalesced [489] form_field_ptr::field_idx#3 ← form_field_ptr::field_idx#1 +Coalesced (already) [498] keyboard_events_size#146 ← keyboard_events_size#47 +Coalesced [513] form_field_idx#74 ← form_field_idx#31 +Coalesced [516] form_field_idx#71 ← form_field_idx#6 +Coalesced [520] form_field_idx#72 ← form_field_idx#5 +Coalesced [528] form_cursor_count#67 ← form_cursor_count#15 +Coalesced (already) [529] form_field_idx#75 ← form_field_idx#28 +Coalesced (already) [534] form_cursor_count#66 ← form_cursor_count#15 +Coalesced (already) [535] form_field_idx#73 ← form_field_idx#28 +Coalesced (already) [536] form_cursor_count#68 ← form_cursor_count#15 +Coalesced (already) [537] form_field_idx#76 ← form_field_idx#28 +Coalesced [540] form_cursor_count#65 ← form_cursor_count#5 +Coalesced [551] form_set_screen::line#3 ← form_set_screen::line#1 +Coalesced [552] form_set_screen::y#3 ← form_set_screen::y#1 +Coalesced [554] print_str_lines::str#10 ← print_str_lines::str#5 +Not coalescing [555] print_char_cursor#68 ← print_screen#1 +Coalesced [556] print_line_cursor#68 ← print_screen#1 +Coalesced [560] print_str_lines::str#12 ← print_str_lines::str#3 +Coalesced [561] print_char_cursor#70 ← print_char_cursor#22 +Coalesced [568] print_char_cursor#73 ← print_char_cursor#1 +Coalesced [573] print_str_lines::str#11 ← print_str_lines::str#0 +Not coalescing [574] print_char_cursor#69 ← print_line_cursor#22 +Coalesced [575] print_line_cursor#69 ← print_line_cursor#22 +Coalesced (already) [576] print_str_lines::str#13 ← print_str_lines::str#0 +Coalesced [577] print_char_cursor#71 ← print_char_cursor#38 +Coalesced (already) [578] print_char_cursor#72 ← print_char_cursor#20 +Coalesced [579] print_line_cursor#70 ← print_line_cursor#2 +Coalesced (already) [585] print_line_cursor#71 ← print_line_cursor#22 +Coalesced [599] memset::dst#5 ← memset::dst#1 +Coalesced [601] print_screen#1 ← print_set_screen::screen#2 +Coalesced [644] dtvSetCpuBankSegment1::cpuBankIdx#15 ← dtvSetCpuBankSegment1::cpuBankIdx#11 +Coalesced [651] gfx_init_plane_fill::gfxb#7 ← gfx_init_plane_fill::gfxb#3 +Coalesced [663] gfx_init_plane_fill::gfxb#5 ← gfx_init_plane_fill::gfxb#1 +Coalesced [664] gfx_init_plane_fill::by#5 ← gfx_init_plane_fill::by#1 +Coalesced (already) [665] gfx_init_plane_fill::gfxb#8 ← gfx_init_plane_fill::gfxb#1 +Coalesced [666] gfx_init_plane_fill::bx#3 ← gfx_init_plane_fill::bx#1 +Coalesced [683] gfx_init_plane_horisontal2::gfxa#6 ← gfx_init_plane_horisontal2::gfxa#3 +Coalesced [697] gfx_init_plane_horisontal2::ay#5 ← gfx_init_plane_horisontal2::ay#1 +Coalesced [698] gfx_init_plane_horisontal2::gfxa#5 ← gfx_init_plane_horisontal2::gfxa#1 +Coalesced (already) [699] gfx_init_plane_horisontal2::gfxa#7 ← gfx_init_plane_horisontal2::gfxa#1 +Coalesced [700] gfx_init_plane_horisontal2::ax#3 ← gfx_init_plane_horisontal2::ax#1 +Coalesced [705] gfx_init_plane_vertical::gfxb#6 ← gfx_init_plane_vertical::gfxb#3 +Coalesced [717] gfx_init_plane_vertical::gfxb#5 ← gfx_init_plane_vertical::gfxb#1 +Coalesced [718] gfx_init_plane_vertical::by#5 ← gfx_init_plane_vertical::by#1 +Coalesced (already) [719] gfx_init_plane_vertical::gfxb#7 ← gfx_init_plane_vertical::gfxb#1 +Coalesced [720] gfx_init_plane_vertical::bx#3 ← gfx_init_plane_vertical::bx#1 +Coalesced [725] gfx_init_plane_horisontal::gfxa#10 ← gfx_init_plane_horisontal::gfxa#6 +Coalesced [731] gfx_init_plane_horisontal::gfxa#13 ← gfx_init_plane_horisontal::gfxa#2 +Coalesced [741] gfx_init_plane_horisontal::ay#8 ← gfx_init_plane_horisontal::ay#1 +Coalesced [742] gfx_init_plane_horisontal::gfxa#9 ← gfx_init_plane_horisontal::gfxa#7 +Coalesced (already) [743] gfx_init_plane_horisontal::gfxa#11 ← gfx_init_plane_horisontal::gfxa#7 +Coalesced [744] gfx_init_plane_horisontal::ax#6 ← gfx_init_plane_horisontal::ax#1 +Coalesced [747] gfx_init_plane_horisontal::gfxa#12 ← gfx_init_plane_horisontal::gfxa#1 +Coalesced [752] gfx_init_plane_charset8::chargen#10 ← gfx_init_plane_charset8::chargen#3 +Coalesced [753] gfx_init_plane_charset8::gfxa#10 ← gfx_init_plane_charset8::gfxa#6 +Coalesced [754] gfx_init_plane_charset8::col#10 ← gfx_init_plane_charset8::col#6 +Coalesced [758] gfx_init_plane_charset8::bits#5 ← gfx_init_plane_charset8::bits#0 +Coalesced [759] gfx_init_plane_charset8::gfxa#12 ← gfx_init_plane_charset8::gfxa#5 +Coalesced [760] gfx_init_plane_charset8::col#12 ← gfx_init_plane_charset8::col#5 +Not coalescing [764] gfx_init_plane_charset8::c#3 ← gfx_init_plane_charset8::col#2 +Coalesced [780] gfx_init_plane_charset8::chargen#9 ← gfx_init_plane_charset8::chargen#1 +Coalesced [781] gfx_init_plane_charset8::gfxa#9 ← gfx_init_plane_charset8::gfxa#1 +Coalesced [782] gfx_init_plane_charset8::col#9 ← gfx_init_plane_charset8::col#1 +Coalesced [783] gfx_init_plane_charset8::ch#9 ← gfx_init_plane_charset8::ch#1 +Coalesced (already) [784] gfx_init_plane_charset8::chargen#11 ← gfx_init_plane_charset8::chargen#1 +Coalesced (already) [785] gfx_init_plane_charset8::gfxa#11 ← gfx_init_plane_charset8::gfxa#1 +Coalesced (already) [786] gfx_init_plane_charset8::col#11 ← gfx_init_plane_charset8::col#1 +Coalesced [787] gfx_init_plane_charset8::cr#7 ← gfx_init_plane_charset8::cr#1 +Coalesced [788] gfx_init_plane_charset8::bits#6 ← gfx_init_plane_charset8::bits#1 +Coalesced (already) [789] gfx_init_plane_charset8::gfxa#13 ← gfx_init_plane_charset8::gfxa#1 +Coalesced (already) [790] gfx_init_plane_charset8::col#13 ← gfx_init_plane_charset8::col#1 +Coalesced [791] gfx_init_plane_charset8::cp#5 ← gfx_init_plane_charset8::cp#1 +Coalesced [796] gfx_init_plane_8bppchunky::gfxb#8 ← gfx_init_plane_8bppchunky::gfxb#5 +Coalesced [797] gfx_init_plane_8bppchunky::gfxbCpuBank#11 ← gfx_init_plane_8bppchunky::gfxbCpuBank#7 +Coalesced [801] dtvSetCpuBankSegment1::cpuBankIdx#14 ← dtvSetCpuBankSegment1::cpuBankIdx#1 +Coalesced [804] gfx_init_plane_8bppchunky::gfxbCpuBank#14 ← gfx_init_plane_8bppchunky::gfxbCpuBank#2 +Coalesced [818] gfx_init_plane_8bppchunky::gfxb#7 ← gfx_init_plane_8bppchunky::gfxb#1 +Coalesced [819] gfx_init_plane_8bppchunky::y#8 ← gfx_init_plane_8bppchunky::y#1 +Coalesced [820] gfx_init_plane_8bppchunky::gfxbCpuBank#10 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 +Coalesced (already) [821] gfx_init_plane_8bppchunky::gfxb#9 ← gfx_init_plane_8bppchunky::gfxb#1 +Coalesced [822] gfx_init_plane_8bppchunky::x#6 ← gfx_init_plane_8bppchunky::x#1 +Coalesced (already) [823] gfx_init_plane_8bppchunky::gfxbCpuBank#12 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 +Coalesced [824] gfx_init_plane_8bppchunky::gfxb#10 ← gfx_init_plane_8bppchunky::gfxb#3 +Coalesced (already) [825] gfx_init_plane_8bppchunky::gfxbCpuBank#13 ← gfx_init_plane_8bppchunky::gfxbCpuBank#4 +Coalesced [840] gfx_init_vic_bitmap::l#5 ← gfx_init_vic_bitmap::l#1 +Coalesced [851] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#0 +Coalesced [852] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#0 +Coalesced [853] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#0 +Coalesced [854] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#0 +Coalesced [855] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#0 +Coalesced [864] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#0 +Coalesced [865] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#0 +Coalesced [866] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#0 +Coalesced [867] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#0 +Coalesced [868] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#0 +Coalesced [878] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 +Coalesced [879] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 +Coalesced [880] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 +Coalesced [881] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 +Coalesced [882] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 +Coalesced [890] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#0 +Coalesced [891] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 +Coalesced [892] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#0 +Coalesced [893] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#0 +Coalesced [894] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#0 +Coalesced [906] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 +Coalesced [907] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 +Coalesced [908] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 +Coalesced [909] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 +Coalesced [910] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 +Coalesced [918] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#1 +Coalesced [919] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#1 +Coalesced [920] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#1 +Coalesced [921] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#1 +Coalesced [922] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#1 +Coalesced [932] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#1 +Coalesced [933] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#1 +Coalesced [934] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#1 +Coalesced [935] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#1 +Coalesced [936] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#1 +Coalesced [944] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#1 +Coalesced [945] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#1 +Coalesced [946] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#1 +Coalesced [947] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#1 +Coalesced [948] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#1 +Coalesced [953] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 +Coalesced [954] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 +Coalesced [955] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 +Coalesced [959] bitmap_plot::x#6 ← bitmap_plot::x#0 +Coalesced [960] bitmap_plot::y#6 ← bitmap_plot::y#0 +Coalesced [967] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 +Coalesced [968] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 +Coalesced [973] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 +Coalesced [974] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 +Coalesced [975] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 +Coalesced (already) [976] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 +Coalesced [977] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 +Coalesced [987] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 +Coalesced [988] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 +Coalesced [989] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 +Coalesced [993] bitmap_plot::x#8 ← bitmap_plot::x#2 +Coalesced [994] bitmap_plot::y#8 ← bitmap_plot::y#2 +Coalesced [1001] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 +Coalesced [1002] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 +Coalesced [1007] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 +Coalesced [1008] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 +Coalesced [1009] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 +Coalesced (already) [1010] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 +Coalesced [1011] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 +Coalesced [1014] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 +Coalesced [1015] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 +Coalesced [1016] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 +Coalesced [1020] bitmap_plot::x#5 ← bitmap_plot::x#1 +Coalesced [1021] bitmap_plot::y#5 ← bitmap_plot::y#1 +Coalesced [1028] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 +Coalesced [1029] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 +Coalesced [1034] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 +Coalesced [1035] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 +Coalesced [1036] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 +Coalesced (already) [1037] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 +Coalesced [1038] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 +Coalesced [1041] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 +Coalesced [1042] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 +Coalesced [1043] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 +Coalesced [1047] bitmap_plot::x#7 ← bitmap_plot::x#3 +Coalesced [1048] bitmap_plot::y#7 ← bitmap_plot::y#3 +Coalesced [1055] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 +Coalesced [1056] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 +Coalesced [1061] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 +Coalesced [1062] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 +Coalesced [1063] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 +Coalesced (already) [1064] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 +Coalesced [1065] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 +Coalesced [1069] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [1078] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [1079] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [1080] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [1081] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [1104] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [1109] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [1110] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [1111] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [1112] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [1113] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [1114] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [1117] gfx_init_charset::chargen#6 ← gfx_init_charset::chargen#3 +Coalesced [1118] gfx_init_charset::charset#6 ← gfx_init_charset::charset#3 +Coalesced [1129] gfx_init_charset::chargen#5 ← gfx_init_charset::chargen#1 +Coalesced [1130] gfx_init_charset::charset#5 ← gfx_init_charset::charset#1 +Coalesced [1131] gfx_init_charset::c#5 ← gfx_init_charset::c#1 +Coalesced (already) [1132] gfx_init_charset::chargen#7 ← gfx_init_charset::chargen#1 +Coalesced (already) [1133] gfx_init_charset::charset#7 ← gfx_init_charset::charset#1 +Coalesced [1134] gfx_init_charset::l#3 ← gfx_init_charset::l#1 +Coalesced [1137] gfx_init_screen4::ch#6 ← gfx_init_screen4::ch#3 +Coalesced [1146] gfx_init_screen4::ch#5 ← gfx_init_screen4::ch#1 +Coalesced [1147] gfx_init_screen4::cy#5 ← gfx_init_screen4::cy#1 +Coalesced (already) [1148] gfx_init_screen4::ch#7 ← gfx_init_screen4::ch#1 +Coalesced [1149] gfx_init_screen4::cx#3 ← gfx_init_screen4::cx#1 +Coalesced [1152] gfx_init_screen3::ch#6 ← gfx_init_screen3::ch#3 +Coalesced [1165] gfx_init_screen3::cy#5 ← gfx_init_screen3::cy#1 +Coalesced [1166] gfx_init_screen3::ch#5 ← gfx_init_screen3::ch#1 +Coalesced [1167] gfx_init_screen3::cx#3 ← gfx_init_screen3::cx#1 +Coalesced (already) [1168] gfx_init_screen3::ch#7 ← gfx_init_screen3::ch#1 +Coalesced [1171] gfx_init_screen2::ch#6 ← gfx_init_screen2::ch#3 +Coalesced [1185] gfx_init_screen2::cy#5 ← gfx_init_screen2::cy#1 +Coalesced [1186] gfx_init_screen2::ch#5 ← gfx_init_screen2::ch#1 +Coalesced [1187] gfx_init_screen2::cx#3 ← gfx_init_screen2::cx#1 +Coalesced (already) [1188] gfx_init_screen2::ch#7 ← gfx_init_screen2::ch#1 +Coalesced [1191] gfx_init_screen1::ch#6 ← gfx_init_screen1::ch#3 +Coalesced [1202] gfx_init_screen1::cy#5 ← gfx_init_screen1::cy#1 +Coalesced [1203] gfx_init_screen1::ch#5 ← gfx_init_screen1::ch#1 +Coalesced [1204] gfx_init_screen1::cx#3 ← gfx_init_screen1::cx#1 +Coalesced (already) [1205] gfx_init_screen1::ch#7 ← gfx_init_screen1::ch#1 +Coalesced [1208] gfx_init_screen0::ch#6 ← gfx_init_screen0::ch#3 +Coalesced [1221] gfx_init_screen0::cy#5 ← gfx_init_screen0::cy#1 +Coalesced [1222] gfx_init_screen0::ch#5 ← gfx_init_screen0::ch#1 +Coalesced [1223] gfx_init_screen0::cx#3 ← gfx_init_screen0::cx#1 +Coalesced (already) [1224] gfx_init_screen0::ch#7 ← gfx_init_screen0::ch#1 Coalesced down to 120 phi equivalence classes -Culled Empty Block (label) @4 Culled Empty Block (label) @17 -Culled Empty Block (label) @41 Culled Empty Block (label) @45 Culled Empty Block (label) @48 -Culled Empty Block (label) @60 -Culled Empty Block (label) @62 Culled Empty Block (label) @81 Culled Empty Block (label) @86 Culled Empty Block (label) main::@8 @@ -11219,42 +10841,42 @@ main::@4: scope:[main] from main::@2 (void()) gfx_mode() gfx_mode: scope:[gfx_mode] from main::@4 - [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 + [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 to:gfx_mode::@10 gfx_mode::@10: scope:[gfx_mode] from gfx_mode [17] phi() to:gfx_mode::@1 gfx_mode::@1: scope:[gfx_mode] from gfx_mode gfx_mode::@10 [18] (byte) gfx_mode::dtv_control#14 ← phi( gfx_mode/(byte) 0 gfx_mode::@10/(const byte) DTV_LINEAR ) - [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 + [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 to:gfx_mode::@11 gfx_mode::@11: scope:[gfx_mode] from gfx_mode::@1 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF to:gfx_mode::@2 gfx_mode::@2: scope:[gfx_mode] from gfx_mode::@1 gfx_mode::@11 [21] (byte) gfx_mode::dtv_control#15 ← phi( gfx_mode::@1/(byte) gfx_mode::dtv_control#14 gfx_mode::@11/(byte) gfx_mode::dtv_control#2 ) - [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 + [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 to:gfx_mode::@12 gfx_mode::@12: scope:[gfx_mode] from gfx_mode::@2 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR to:gfx_mode::@3 gfx_mode::@3: scope:[gfx_mode] from gfx_mode::@12 gfx_mode::@2 [24] (byte) gfx_mode::dtv_control#10 ← phi( gfx_mode::@12/(byte) gfx_mode::dtv_control#3 gfx_mode::@2/(byte) gfx_mode::dtv_control#15 ) - [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 + [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 to:gfx_mode::@13 gfx_mode::@13: scope:[gfx_mode] from gfx_mode::@3 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN to:gfx_mode::@4 gfx_mode::@4: scope:[gfx_mode] from gfx_mode::@13 gfx_mode::@3 [27] (byte) gfx_mode::dtv_control#11 ← phi( gfx_mode::@13/(byte) gfx_mode::dtv_control#4 gfx_mode::@3/(byte) gfx_mode::dtv_control#10 ) - [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 + [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 to:gfx_mode::@14 gfx_mode::@14: scope:[gfx_mode] from gfx_mode::@4 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF to:gfx_mode::@5 gfx_mode::@5: scope:[gfx_mode] from gfx_mode::@14 gfx_mode::@4 [30] (byte) gfx_mode::dtv_control#13 ← phi( gfx_mode::@14/(byte) gfx_mode::dtv_control#5 gfx_mode::@4/(byte) gfx_mode::dtv_control#11 ) - [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 + [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 to:gfx_mode::@15 gfx_mode::@15: scope:[gfx_mode] from gfx_mode::@5 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY @@ -11262,14 +10884,14 @@ gfx_mode::@15: scope:[gfx_mode] from gfx_mode::@5 gfx_mode::@6: scope:[gfx_mode] from gfx_mode::@15 gfx_mode::@5 [33] (byte) gfx_mode::dtv_control#12 ← phi( gfx_mode::@15/(byte) gfx_mode::dtv_control#6 gfx_mode::@5/(byte) gfx_mode::dtv_control#13 ) [34] *((const byte*) DTV_CONTROL) ← (byte) gfx_mode::dtv_control#12 - [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 + [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 to:gfx_mode::@16 gfx_mode::@16: scope:[gfx_mode] from gfx_mode::@6 [36] phi() to:gfx_mode::@7 gfx_mode::@7: scope:[gfx_mode] from gfx_mode::@16 gfx_mode::@6 [37] (byte) gfx_mode::vic_control#5 ← phi( gfx_mode::@16/(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3|(const byte) VIC_ECM gfx_mode::@6/(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 ) - [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 + [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 to:gfx_mode::@17 gfx_mode::@17: scope:[gfx_mode] from gfx_mode::@7 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM @@ -11277,7 +10899,7 @@ gfx_mode::@17: scope:[gfx_mode] from gfx_mode::@7 gfx_mode::@8: scope:[gfx_mode] from gfx_mode::@17 gfx_mode::@7 [40] (byte) gfx_mode::vic_control#4 ← phi( gfx_mode::@17/(byte) gfx_mode::vic_control#2 gfx_mode::@7/(byte) gfx_mode::vic_control#5 ) [41] *((const byte*) VIC_CONTROL) ← (byte) gfx_mode::vic_control#4 - [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 + [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 to:gfx_mode::@18 gfx_mode::@18: scope:[gfx_mode] from gfx_mode::@8 [43] phi() @@ -11285,9 +10907,9 @@ gfx_mode::@18: scope:[gfx_mode] from gfx_mode::@8 gfx_mode::@9: scope:[gfx_mode] from gfx_mode::@18 gfx_mode::@8 [44] (byte) gfx_mode::vic_control2#2 ← phi( gfx_mode::@18/(const byte) VIC_CSEL|(const byte) VIC_MCM gfx_mode::@8/(const byte) VIC_CSEL ) [45] *((const byte*) VIC_CONTROL2) ← (byte) gfx_mode::vic_control2#2 - [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 - [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) - [48] (byte) get_plane::idx#0 ← *((const byte[]) form_fields_val+(byte) $a) + [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 + [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) + [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern) [49] call get_plane [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 to:gfx_mode::@27 @@ -11302,16 +10924,16 @@ gfx_mode::@27: scope:[gfx_mode] from gfx_mode::@9 [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [60] *((const byte*) DTV_PLANEA_START_HI) ← (byte~) gfx_mode::$27 - [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 - [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) + [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 + [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [63] *((const byte*) DTV_PLANEA_STEP) ← (byte~) gfx_mode::$29 - [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 - [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) + [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 + [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [66] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte~) gfx_mode::$31 [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 - [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 - [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) - [70] (byte) get_plane::idx#1 ← *((const byte[]) form_fields_val+(byte) $11) + [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 + [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) + [70] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern) [71] call get_plane [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 to:gfx_mode::@28 @@ -11326,16 +10948,16 @@ gfx_mode::@28: scope:[gfx_mode] from gfx_mode::@27 [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [82] *((const byte*) DTV_PLANEB_START_HI) ← (byte~) gfx_mode::$41 - [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 - [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) + [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 + [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [85] *((const byte*) DTV_PLANEB_STEP) ← (byte~) gfx_mode::$43 - [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 - [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) + [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 + [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [88] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte~) gfx_mode::$45 [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 - [92] (byte) get_vic_screen::idx#0 ← *((const byte[]) form_fields_val+(byte) $18) + [92] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen) [93] call get_vic_screen [94] (byte*) get_vic_screen::return#10 ← (byte*) get_vic_screen::return#5 to:gfx_mode::@29 @@ -11344,7 +10966,7 @@ gfx_mode::@29: scope:[gfx_mode] from gfx_mode::@28 [96] (word~) gfx_mode::$52 ← (word)(byte*~) gfx_mode::$51 & (word) $3fff [97] (word~) gfx_mode::$53 ← (word~) gfx_mode::$52 >> (byte) 6 [98] (byte~) gfx_mode::$54 ← (byte)(word~) gfx_mode::$53 - [99] (byte) get_vic_charset::idx#0 ← *((const byte[]) form_fields_val+(byte) $19) + [99] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx) [100] call get_vic_charset [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 to:gfx_mode::@30 @@ -11355,7 +10977,7 @@ gfx_mode::@30: scope:[gfx_mode] from gfx_mode::@29 [105] (byte~) gfx_mode::$59 ← (byte~) gfx_mode::$58 >> (byte) 2 [106] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$54 | (byte~) gfx_mode::$59 [107] *((const byte*) VIC_MEMORY) ← (byte~) gfx_mode::$60 - [108] (byte) get_vic_screen::idx#1 ← *((const byte[]) form_fields_val+(byte) $1a) + [108] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols) [109] call get_vic_screen [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 to:gfx_mode::@31 @@ -11383,19 +11005,19 @@ gfx_mode::@21: scope:[gfx_mode] from gfx_mode::@20 to:gfx_mode::@22 gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 [121] *((const byte*) BORDERCOL) ← (byte) 0 - [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 - [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) + [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 + [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) [124] *((const byte*) BGCOL1) ← (byte~) gfx_mode::$63 - [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 - [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) + [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 + [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) [127] *((const byte*) BGCOL2) ← (byte~) gfx_mode::$65 - [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 - [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) + [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 + [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) [130] *((const byte*) BGCOL3) ← (byte~) gfx_mode::$67 - [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 - [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) + [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 + [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) [133] *((const byte*) BGCOL4) ← (byte~) gfx_mode::$69 - [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 + [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 to:gfx_mode::@23 gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 gfx_mode::@23 [135] (byte) gfx_mode::j#2 ← phi( gfx_mode::@22/(byte) 0 gfx_mode::@23/(byte) gfx_mode::j#1 ) @@ -11445,10 +11067,10 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (void()) keyboard_event_scan() keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3 gfx_mode::@26 - [157] (byte) keyboard_events_size#99 ← phi( form_control::@3/(byte) keyboard_events_size#47 gfx_mode::@26/(byte) keyboard_events_size#24 ) + [157] (byte) keyboard_events_size#98 ← phi( form_control::@3/(byte) keyboard_events_size#47 gfx_mode::@26/(byte) keyboard_events_size#24 ) to:keyboard_event_scan::@7 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8 - [158] (byte) keyboard_events_size#109 ← phi( keyboard_event_scan/(byte) keyboard_events_size#99 keyboard_event_scan::@8/(byte) keyboard_events_size#100 ) + [158] (byte) keyboard_events_size#107 ← phi( keyboard_event_scan/(byte) keyboard_events_size#98 keyboard_event_scan::@8/(byte) keyboard_events_size#100 ) [158] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 ) [158] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) [159] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 @@ -11463,7 +11085,7 @@ keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan: [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 to:keyboard_event_scan::@8 keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@16 - [165] (byte) keyboard_events_size#100 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#108 keyboard_event_scan::@16/(byte) keyboard_events_size#109 ) + [165] (byte) keyboard_events_size#100 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#106 keyboard_event_scan::@16/(byte) keyboard_events_size#107 ) [165] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 ) [166] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [167] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7 @@ -11521,7 +11143,7 @@ keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_s [193] return to:@return keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@19 - [194] (byte) keyboard_events_size#18 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#108 keyboard_event_scan::@19/(byte) keyboard_events_size#109 ) + [194] (byte) keyboard_events_size#18 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#106 keyboard_event_scan::@19/(byte) keyboard_events_size#107 ) [194] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 ) [194] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 ) [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) @@ -11540,7 +11162,7 @@ keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan: [202] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 - [203] (byte) keyboard_events_size#108 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#18 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#18 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) + [203] (byte) keyboard_events_size#106 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#18 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#18 keyboard_event_scan::@14/(byte) keyboard_events_size#2 ) [204] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10 [205] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [206] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9 @@ -12033,11 +11655,11 @@ 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 [412] (byte*) print_str_lines::str#5 ← phi( form_mode::@9/(const byte[]) FORM_COLS form_mode::@12/(const byte[]) FORM_TEXT ) - [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 + [413] (byte*~) print_char_cursor#68 ← (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 [414] (byte*) print_line_cursor#2 ← phi( print_str_lines/(byte*) print_set_screen::screen#2 print_str_lines::@6/(byte*) print_line_cursor#22 ) - [414] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#71 print_str_lines::@6/(byte*~) print_char_cursor#72 ) + [414] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#68 print_str_lines::@6/(byte*~) print_char_cursor#69 ) [414] (byte*) print_str_lines::str#3 ← phi( print_str_lines/(byte*) print_str_lines::str#5 print_str_lines::@6/(byte*) print_str_lines::str#0 ) [415] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 to:print_str_lines::@return @@ -12064,7 +11686,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3 [426] call print_ln to:print_str_lines::@6 print_str_lines::@6: scope:[print_str_lines] from print_str_lines::@5 - [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 + [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 to:print_str_lines::@1 (void()) print_ln() @@ -13639,15 +13261,15 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_events_size (byte) keyboard_events_size#1 200002.0 (byte) keyboard_events_size#100 882.6176470588235 -(byte) keyboard_events_size#108 102001.2 -(byte) keyboard_events_size#109 4286.428571428572 +(byte) keyboard_events_size#106 102001.2 +(byte) keyboard_events_size#107 4286.428571428572 (byte) keyboard_events_size#18 81000.90000000001 (byte) keyboard_events_size#2 200002.0 (byte) keyboard_events_size#24 6.766666666666667 (byte) keyboard_events_size#27 0.3333333333333333 (byte) keyboard_events_size#4 3.0 (byte) keyboard_events_size#47 73.73333333333335 -(byte) keyboard_events_size#99 105.0 +(byte) keyboard_events_size#98 105.0 (void()) keyboard_init() (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte) keyboard_matrix_read::return @@ -13682,8 +13304,8 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#20 821.0 (byte*) print_char_cursor#22 102.0 (byte*) print_char_cursor#38 572.0 -(byte*~) print_char_cursor#71 4.0 -(byte*~) print_char_cursor#72 202.0 +(byte*~) print_char_cursor#68 4.0 +(byte*~) print_char_cursor#69 202.0 (void()) print_cls() (byte*) print_line_cursor (byte*) print_line_cursor#2 8.749999999999998 @@ -13733,7 +13355,7 @@ Initial phi equivalence classes [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -[ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +[ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] [ keyboard_event_pressed::keycode#4 ] [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] [ get_vic_screen::return#5 ] @@ -13756,7 +13378,7 @@ Initial phi equivalence classes [ form_set_screen::line#2 form_set_screen::line#1 ] [ form_set_screen::y#2 form_set_screen::y#1 ] [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] -[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] +[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] [ memset::dst#2 memset::dst#4 memset::dst#1 ] [ gfx_init_plane_fill::plane_addr#3 ] @@ -13994,7 +13616,7 @@ Complete equivalence classes [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -[ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +[ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] [ keyboard_event_pressed::keycode#4 ] [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] [ get_vic_screen::return#5 ] @@ -14017,7 +13639,7 @@ Complete equivalence classes [ form_set_screen::line#2 form_set_screen::line#1 ] [ form_set_screen::y#2 form_set_screen::y#1 ] [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] -[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] +[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] [ memset::dst#2 memset::dst#4 memset::dst#1 ] [ gfx_init_plane_fill::plane_addr#3 ] @@ -14254,7 +13876,7 @@ Allocated zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Allocated zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] Allocated zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Allocated zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] -Allocated zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +Allocated zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] Allocated zp[1]:19 [ keyboard_event_pressed::keycode#4 ] Allocated zp[1]:20 [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] Allocated zp[2]:21 [ get_vic_screen::return#5 ] @@ -14277,7 +13899,7 @@ Allocated zp[1]:46 [ form_control::return#2 ] Allocated zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] Allocated zp[1]:49 [ form_set_screen::y#2 form_set_screen::y#1 ] Allocated zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] -Allocated zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] +Allocated zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] Allocated zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] Allocated zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 ] Allocated zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] @@ -14634,6 +14256,41 @@ Target platform is c64basic / MOS6502X .label FORM_SCREEN = $400 // Charset used for the FORM .label FORM_CHARSET = $1800 + .label form_ctrl_bmm = form_fields_val+1 + .label form_ctrl_mcm = form_fields_val+2 + .label form_ctrl_ecm = form_fields_val+3 + .label form_ctrl_hicol = form_fields_val+4 + .label form_ctrl_line = form_fields_val+5 + .label form_ctrl_colof = form_fields_val+6 + .label form_ctrl_chunk = form_fields_val+7 + .label form_ctrl_borof = form_fields_val+8 + .label form_ctrl_overs = form_fields_val+9 + .label form_a_pattern = form_fields_val+$a + .label form_a_start_hi = form_fields_val+$b + .label form_a_start_lo = form_fields_val+$c + .label form_a_step_hi = form_fields_val+$d + .label form_a_step_lo = form_fields_val+$e + .label form_a_mod_hi = form_fields_val+$f + .label form_a_mod_lo = form_fields_val+$10 + .label form_b_pattern = form_fields_val+$11 + .label form_b_start_hi = form_fields_val+$12 + .label form_b_start_lo = form_fields_val+$13 + .label form_b_step_hi = form_fields_val+$14 + .label form_b_step_lo = form_fields_val+$15 + .label form_b_mod_hi = form_fields_val+$16 + .label form_b_mod_lo = form_fields_val+$17 + .label form_vic_screen = form_fields_val+$18 + .label form_vic_gfx = form_fields_val+$19 + .label form_vic_cols = form_fields_val+$1a + .label form_dtv_palet = form_fields_val+$1b + .label form_vic_bg0_hi = form_fields_val+$1c + .label form_vic_bg0_lo = form_fields_val+$1d + .label form_vic_bg1_hi = form_fields_val+$1e + .label form_vic_bg1_lo = form_fields_val+$1f + .label form_vic_bg2_hi = form_fields_val+$20 + .label form_vic_bg2_lo = form_fields_val+$21 + .label form_vic_bg3_hi = form_fields_val+$22 + .label form_vic_bg3_lo = form_fields_val+$23 // The number of frames to use for a full blink cycle .const FORM_CURSOR_BLINK = $28 // Number of form fields @@ -14778,8 +14435,8 @@ gfx_mode: { .label i = $c .label keyboard_event = $ee .label vic_control2 = 4 - // [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+5 + // [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_line cmp #0 beq __b1_from_gfx_mode // [17] phi from gfx_mode to gfx_mode::@10 [phi:gfx_mode->gfx_mode::@10] @@ -14801,8 +14458,8 @@ gfx_mode: { jmp __b1 // gfx_mode::@1 __b1: - // [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+8 + // [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_borof cmp #0 beq __b2_from___b1 jmp __b11 @@ -14819,8 +14476,8 @@ gfx_mode: { jmp __b2 // gfx_mode::@2 __b2: - // [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+4 + // [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_hicol cmp #0 beq __b3_from___b2 jmp __b12 @@ -14837,8 +14494,8 @@ gfx_mode: { jmp __b3 // gfx_mode::@3 __b3: - // [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+9 + // [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_overs cmp #0 beq __b4_from___b3 jmp __b13 @@ -14855,8 +14512,8 @@ gfx_mode: { jmp __b4 // gfx_mode::@4 __b4: - // [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+6 + // [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_colof cmp #0 beq __b5_from___b4 jmp __b14 @@ -14873,8 +14530,8 @@ gfx_mode: { jmp __b5 // gfx_mode::@5 __b5: - // [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+7 + // [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_chunk cmp #0 beq __b6_from___b5 jmp __b15 @@ -14894,8 +14551,8 @@ gfx_mode: { // [34] *((const byte*) DTV_CONTROL) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuz1 lda.z dtv_control sta DTV_CONTROL - // [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+3 + // [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_ecm cmp #0 beq __b7_from___b6 // [36] phi from gfx_mode::@6 to gfx_mode::@16 [phi:gfx_mode::@6->gfx_mode::@16] @@ -14917,8 +14574,8 @@ gfx_mode: { jmp __b7 // gfx_mode::@7 __b7: - // [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+1 + // [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_bmm cmp #0 beq __b8_from___b7 jmp __b17 @@ -14938,8 +14595,8 @@ gfx_mode: { // [41] *((const byte*) VIC_CONTROL) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuz1 lda.z vic_control sta VIC_CONTROL - // [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+2 + // [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_mcm cmp #0 beq __b9_from___b8 // [43] phi from gfx_mode::@8 to gfx_mode::@18 [phi:gfx_mode::@8->gfx_mode::@18] @@ -14964,19 +14621,19 @@ gfx_mode: { // [45] *((const byte*) VIC_CONTROL2) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuz1 lda.z vic_control2 sta VIC_CONTROL2 - // [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$b + // [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_a_start_hi asl asl asl asl sta.z __18 - // [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$c + // [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_a_start_lo ora.z __18 sta.z plane_a_offs - // [48] (byte) get_plane::idx#0 ← *((const byte[]) form_fields_val+(byte) $a) -- vbuz1=_deref_pbuc1 - lda form_fields_val+$a + // [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern) -- vbuz1=_deref_pbuc1 + lda form_a_pattern sta.z get_plane.idx // [49] call get_plane // [234] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] @@ -15046,29 +14703,29 @@ gfx_mode: { // [60] *((const byte*) DTV_PLANEA_START_HI) ← (byte~) gfx_mode::$27 -- _deref_pbuc1=vbuz1 lda.z __27 sta DTV_PLANEA_START_HI - // [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$d + // [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_a_step_hi asl asl asl asl sta.z __28 - // [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$e + // [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_a_step_lo ora.z __28 sta.z __29 // [63] *((const byte*) DTV_PLANEA_STEP) ← (byte~) gfx_mode::$29 -- _deref_pbuc1=vbuz1 lda.z __29 sta DTV_PLANEA_STEP - // [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$f + // [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_a_mod_hi asl asl asl asl sta.z __30 - // [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$10 + // [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_a_mod_lo ora.z __30 sta.z __31 // [66] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte~) gfx_mode::$31 -- _deref_pbuc1=vbuz1 @@ -15077,19 +14734,19 @@ gfx_mode: { // [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - // [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$12 + // [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_b_start_hi asl asl asl asl sta.z __32 - // [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$13 + // [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_b_start_lo ora.z __32 sta.z plane_b_offs - // [70] (byte) get_plane::idx#1 ← *((const byte[]) form_fields_val+(byte) $11) -- vbuz1=_deref_pbuc1 - lda form_fields_val+$11 + // [70] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern) -- vbuz1=_deref_pbuc1 + lda form_b_pattern sta.z get_plane.idx // [71] call get_plane // [234] phi from gfx_mode::@27 to get_plane [phi:gfx_mode::@27->get_plane] @@ -15159,29 +14816,29 @@ gfx_mode: { // [82] *((const byte*) DTV_PLANEB_START_HI) ← (byte~) gfx_mode::$41 -- _deref_pbuc1=vbuz1 lda.z __41 sta DTV_PLANEB_START_HI - // [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$14 + // [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_b_step_hi asl asl asl asl sta.z __42 - // [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$15 + // [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_b_step_lo ora.z __42 sta.z __43 // [85] *((const byte*) DTV_PLANEB_STEP) ← (byte~) gfx_mode::$43 -- _deref_pbuc1=vbuz1 lda.z __43 sta DTV_PLANEB_STEP - // [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$16 + // [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_b_mod_hi asl asl asl asl sta.z __44 - // [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$17 + // [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_b_mod_lo ora.z __44 sta.z __45 // [88] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte~) gfx_mode::$45 -- _deref_pbuc1=vbuz1 @@ -15198,8 +14855,8 @@ gfx_mode: { // Set VIC Bank bits to output - all others to input lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A - // [92] (byte) get_vic_screen::idx#0 ← *((const byte[]) form_fields_val+(byte) $18) -- vbuz1=_deref_pbuc1 - lda form_fields_val+$18 + // [92] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen) -- vbuz1=_deref_pbuc1 + lda form_vic_screen sta.z get_vic_screen.idx // [93] call get_vic_screen // [220] phi from gfx_mode::@28 to get_vic_screen [phi:gfx_mode::@28->get_vic_screen] @@ -15246,8 +14903,8 @@ gfx_mode: { // [98] (byte~) gfx_mode::$54 ← (byte)(word~) gfx_mode::$53 -- vbuz1=_byte_vwuz2 lda.z __53 sta.z __54 - // [99] (byte) get_vic_charset::idx#0 ← *((const byte[]) form_fields_val+(byte) $19) -- vbuz1=_deref_pbuc1 - lda form_fields_val+$19 + // [99] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx) -- vbuz1=_deref_pbuc1 + lda form_vic_gfx sta.z get_vic_charset.idx // [100] call get_vic_charset jsr get_vic_charset @@ -15288,8 +14945,8 @@ gfx_mode: { // VIC memory lda.z __60 sta VIC_MEMORY - // [108] (byte) get_vic_screen::idx#1 ← *((const byte[]) form_fields_val+(byte) $1a) -- vbuz1=_deref_pbuc1 - lda form_fields_val+$1a + // [108] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols) -- vbuz1=_deref_pbuc1 + lda form_vic_cols sta.z get_vic_screen.idx // [109] call get_vic_screen // [220] phi from gfx_mode::@30 to get_vic_screen [phi:gfx_mode::@30->get_vic_screen] @@ -15382,65 +15039,65 @@ gfx_mode: { // Background colors lda #0 sta BORDERCOL - // [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$1c + // [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_vic_bg0_hi asl asl asl asl sta.z __62 - // [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$1d + // [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_vic_bg0_lo ora.z __62 sta.z __63 // [124] *((const byte*) BGCOL1) ← (byte~) gfx_mode::$63 -- _deref_pbuc1=vbuz1 lda.z __63 sta BGCOL1 - // [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$1e + // [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_vic_bg1_hi asl asl asl asl sta.z __64 - // [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$1f + // [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_vic_bg1_lo ora.z __64 sta.z __65 // [127] *((const byte*) BGCOL2) ← (byte~) gfx_mode::$65 -- _deref_pbuc1=vbuz1 lda.z __65 sta BGCOL2 - // [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$20 + // [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_vic_bg2_hi asl asl asl asl sta.z __66 - // [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$21 + // [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_vic_bg2_lo ora.z __66 sta.z __67 // [130] *((const byte*) BGCOL3) ← (byte~) gfx_mode::$67 -- _deref_pbuc1=vbuz1 lda.z __67 sta BGCOL3 - // [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 - lda form_fields_val+$22 + // [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 + lda form_vic_bg3_hi asl asl asl asl sta.z __68 - // [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) -- vbuz1=vbuz2_bor__deref_pbuc1 - lda form_fields_val+$23 + // [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) -- vbuz1=vbuz2_bor__deref_pbuc1 + lda form_vic_bg3_lo ora.z __68 sta.z __69 // [133] *((const byte*) BGCOL4) ← (byte~) gfx_mode::$69 -- _deref_pbuc1=vbuz1 lda.z __69 sta BGCOL4 - // [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 + // [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 // DTV Palette - lda form_fields_val+$1b + lda form_dtv_palet cmp #0 beq __b24_from___b22 // [135] phi from gfx_mode::@22 to gfx_mode::@23 [phi:gfx_mode::@22->gfx_mode::@23] @@ -15481,7 +15138,7 @@ gfx_mode: { // [141] call keyboard_event_scan // [157] phi from gfx_mode::@26 to keyboard_event_scan [phi:gfx_mode::@26->keyboard_event_scan] keyboard_event_scan_from___b26: - // [157] phi (byte) keyboard_events_size#99 = (byte) keyboard_events_size#24 [phi:gfx_mode::@26->keyboard_event_scan#0] -- register_copy + // [157] phi (byte) keyboard_events_size#98 = (byte) keyboard_events_size#24 [phi:gfx_mode::@26->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan // [142] phi from gfx_mode::@26 to gfx_mode::@32 [phi:gfx_mode::@26->gfx_mode::@32] __b32_from___b26: @@ -15591,7 +15248,7 @@ keyboard_event_scan: { .label event_type = $fc // [158] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] __b7_from_keyboard_event_scan: - // [158] phi (byte) keyboard_events_size#109 = (byte) keyboard_events_size#99 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + // [158] phi (byte) keyboard_events_size#107 = (byte) keyboard_events_size#98 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy // [158] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta.z keycode @@ -15601,7 +15258,7 @@ keyboard_event_scan: { jmp __b7 // [158] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] __b7_from___b8: - // [158] phi (byte) keyboard_events_size#109 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + // [158] phi (byte) keyboard_events_size#107 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy // [158] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy // [158] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy jmp __b7 @@ -15636,7 +15293,7 @@ keyboard_event_scan: { // [165] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] __b8_from___b15: __b8_from___b16: - // [165] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#108 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + // [165] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#106 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy // [165] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy jmp __b8 // keyboard_event_scan::@8 @@ -15798,13 +15455,13 @@ keyboard_event_scan: { // Something has changed on the keyboard row - check each column // [194] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] __b9_from___b10: - // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#108 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#106 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy // [194] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy // [194] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy jmp __b9 // [194] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] __b9_from___b19: - // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#109 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#107 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy // [194] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy // [194] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuz1=vbuc1 lda #0 @@ -15860,7 +15517,7 @@ keyboard_event_scan: { __b10_from___b12: __b10_from___b14: __b10_from___b9: - // [203] phi (byte) keyboard_events_size#108 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + // [203] phi (byte) keyboard_events_size#106 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy jmp __b10 // keyboard_event_scan::@10 __b10: @@ -17278,7 +16935,7 @@ form_control: { // [369] call keyboard_event_scan // [157] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] keyboard_event_scan_from___b3: - // [157] phi (byte) keyboard_events_size#99 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy + // [157] phi (byte) keyboard_events_size#98 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan // [370] phi from form_control::@3 to form_control::@19 [phi:form_control::@3->form_control::@19] __b19_from___b3: @@ -17554,7 +17211,7 @@ form_set_screen: { print_str_lines: { .label ch = $113 .label str = $32 - // [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + // [413] (byte*~) print_char_cursor#68 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda.z print_set_screen.screen sta.z print_char_cursor lda.z print_set_screen.screen+1 @@ -17563,7 +17220,7 @@ print_str_lines: { __b1_from_print_str_lines: __b1_from___b6: // [414] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#0] -- register_copy - // [414] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#71 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#1] -- register_copy + // [414] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#68 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#1] -- register_copy // [414] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#2] -- register_copy jmp __b1 // print_str_lines::@1 @@ -17634,7 +17291,7 @@ print_str_lines: { jmp __b6 // print_str_lines::@6 __b6: - // [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 + // [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -20286,28 +19943,18 @@ keyboard_init: { rts } // File Data + // Default vallues for the palette + DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a print_hextab: .text "0123456789abcdef" + // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) + keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f + // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) + keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 // Charset ROM FORM_TEXT: .text " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @" .byte 0 FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" .byte 0 - // Default vallues for the palette - DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a - // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) - keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f - // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) - keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // Tables for the plotter - initialized by calling bitmap_draw_init(); - bitmap_plot_xlo: .fill $100, 0 - bitmap_plot_xhi: .fill $100, 0 - bitmap_plot_ylo: .fill $100, 0 - bitmap_plot_yhi: .fill $100, 0 - bitmap_plot_bit: .fill $100, 0 // Form fields x/y-positions form_fields_x: .byte 8, $c, $c, $c, $c, $c, $c, $c, $c, $c, $19, $18, $19, $18, $19, $18, $19, $19, $18, $19, $18, $19, $18, $19, $25, $25, $25, $25, $24, $25, $24, $25, $24, $25, $24, $25 form_fields_y: .byte 2, 5, 6, 7, 8, 9, $a, $b, $c, $d, 5, 6, 6, 7, 7, 8, 8, $b, $c, $c, $d, $d, $e, $e, 5, 6, 7, $a, $b, $b, $c, $c, $d, $d, $e, $e @@ -20337,6 +19984,16 @@ keyboard_init: { preset_sixsfred2: .byte 9, 1, 1, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, $a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 // Preset: 8bpp Pixel Cell preset_8bpppixelcell: .byte $a, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, $b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // Tables for the plotter - initialized by calling bitmap_draw_init(); + bitmap_plot_xlo: .fill $100, 0 + bitmap_plot_xhi: .fill $100, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 // Table with addresses of the y-lines of the form. The first line contains the address of the form screen. form_line_lo: .fill $19, 0 form_line_hi: .fill $19, 0 @@ -20346,28 +20003,28 @@ Equivalence Class zp[1]:325 [ bitmap_init::$7 ] has ALU potential. Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Removing always clobbered register reg byte a as potential for zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] -Removing always clobbered register reg byte a as potential for zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] -Statement [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] +Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] ) always clobbers reg byte a -Statement [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a +Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] ) always clobbers reg byte a -Statement [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a +Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] ) always clobbers reg byte a -Statement [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a +Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] ) always clobbers reg byte a -Statement [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a +Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] ) always clobbers reg byte a -Statement [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a +Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] ) always clobbers reg byte a -Statement [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a -Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a +Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a +Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:159 [ gfx_mode::plane_a_offs#0 ] Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ) always clobbers reg byte a @@ -20377,13 +20034,13 @@ Statement [54] (byte~) gfx_mode::$23 ← < (word~) gfx_mode::$24 [ keyboard_even Statement [56] (byte~) gfx_mode::$25 ← > (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ) always clobbers reg byte a Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] ) always clobbers reg byte a Statement [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [ keyboard_events_size#24 gfx_mode::$27 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$27 ] ) always clobbers reg byte a -Statement [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a -Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a -Statement [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a -Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a +Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a +Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a +Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a +Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a -Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a +Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a +Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:184 [ gfx_mode::plane_b_offs#0 ] Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ) always clobbers reg byte a @@ -20393,10 +20050,10 @@ Statement [76] (byte~) gfx_mode::$37 ← < (word~) gfx_mode::$38 [ keyboard_even Statement [78] (byte~) gfx_mode::$39 ← > (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ) always clobbers reg byte a Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] ) always clobbers reg byte a Statement [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [ keyboard_events_size#24 gfx_mode::$41 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$41 ] ) always clobbers reg byte a -Statement [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a -Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a -Statement [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a -Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a +Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a +Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a +Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a +Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a @@ -20416,25 +20073,25 @@ Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::retur Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Removing always clobbered register reg byte y as potential for zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] -Removing always clobbered register reg byte y as potential for zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +Removing always clobbered register reg byte y as potential for zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a -Statement [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a -Statement [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a -Statement [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a -Statement [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$66 ] ) always clobbers reg byte a -Statement [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) [ keyboard_events_size#24 gfx_mode::$67 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$67 ] ) always clobbers reg byte a -Statement [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$68 ] ) always clobbers reg byte a -Statement [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) [ keyboard_events_size#24 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$69 ] ) always clobbers reg byte a -Statement [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a +Statement [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a +Statement [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a +Statement [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a +Statement [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$66 ] ) always clobbers reg byte a +Statement [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$67 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$67 ] ) always clobbers reg byte a +Statement [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$68 ] ) always clobbers reg byte a +Statement [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$69 ] ) always clobbers reg byte a +Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] -Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] Removing always clobbered register reg byte a as potential for zp[1]:265 [ form_field_ptr::x#0 ] @@ -20447,7 +20104,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:16 [ keyboa Removing always clobbered register reg byte a as potential for zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a Statement [201] *((const byte[8]) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a -Statement [207] *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] ) always clobbers reg byte a +Statement [207] *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] ) always clobbers reg byte a Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ) always clobbers reg byte a Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:19 [ keyboard_event_pressed::keycode#4 ] @@ -20455,8 +20112,8 @@ Removing always clobbered register reg byte a as potential for zp[1]:15 [ keyboa Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:255 [ keyboard_event_pressed::row_bits#0 ] Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a -Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 ] ) always clobbers reg byte a -Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 ] ) always clobbers reg byte a +Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a @@ -20499,12 +20156,12 @@ Statement [400] (byte~) form_control::$13 ← *((byte*)(word) form_field_ptr::li Statement [401] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 ] ) always clobbers reg byte y Statement [408] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:49 [ form_set_screen::y#2 form_set_screen::y#1 ] -Statement [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] ) always clobbers reg byte a +Statement [413] (byte*~) print_char_cursor#68 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] ) always clobbers reg byte a Statement [415] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y Statement [418] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [421] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:275 [ print_str_lines::ch#0 ] -Statement [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] ) always clobbers reg byte a +Statement [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] ) always clobbers reg byte a Statement [430] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a Statement [431] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a Statement [433] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] ) always clobbers reg byte a @@ -20708,23 +20365,23 @@ Statement [858] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyb Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] ) always clobbers reg byte a -Statement [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a +Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] ) always clobbers reg byte a -Statement [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a +Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] ) always clobbers reg byte a -Statement [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a +Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] ) always clobbers reg byte a -Statement [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a +Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] ) always clobbers reg byte a -Statement [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a +Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] ) always clobbers reg byte a -Statement [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a -Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a +Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a +Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ) always clobbers reg byte a Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ) always clobbers reg byte a Statement [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$20 + (byte) gfx_mode::plane_a_offs#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 ] ) always clobbers reg byte a @@ -20733,13 +20390,13 @@ Statement [54] (byte~) gfx_mode::$23 ← < (word~) gfx_mode::$24 [ keyboard_even Statement [56] (byte~) gfx_mode::$25 ← > (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ) always clobbers reg byte a Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] ) always clobbers reg byte a Statement [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [ keyboard_events_size#24 gfx_mode::$27 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$27 ] ) always clobbers reg byte a -Statement [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a -Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a -Statement [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a -Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a +Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a +Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a +Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a +Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a -Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a +Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a +Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ) always clobbers reg byte a Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ) always clobbers reg byte a Statement [74] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$34 + (byte) gfx_mode::plane_b_offs#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 ] ) always clobbers reg byte a @@ -20748,10 +20405,10 @@ Statement [76] (byte~) gfx_mode::$37 ← < (word~) gfx_mode::$38 [ keyboard_even Statement [78] (byte~) gfx_mode::$39 ← > (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ) always clobbers reg byte a Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] ) always clobbers reg byte a Statement [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [ keyboard_events_size#24 gfx_mode::$41 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$41 ] ) always clobbers reg byte a -Statement [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a -Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a -Statement [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a -Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a +Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a +Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a +Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a +Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a @@ -20769,32 +20426,32 @@ Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::re Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] ) always clobbers reg byte a Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a -Statement [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a -Statement [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a -Statement [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a -Statement [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$66 ] ) always clobbers reg byte a -Statement [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) [ keyboard_events_size#24 gfx_mode::$67 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$67 ] ) always clobbers reg byte a -Statement [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$68 ] ) always clobbers reg byte a -Statement [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) [ keyboard_events_size#24 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$69 ] ) always clobbers reg byte a -Statement [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a +Statement [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a +Statement [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a +Statement [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a +Statement [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$66 ] ) always clobbers reg byte a +Statement [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$67 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$67 ] ) always clobbers reg byte a +Statement [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$68 ] ) always clobbers reg byte a +Statement [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$69 ] ) always clobbers reg byte a +Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] ) always clobbers reg byte a -Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_event_scan::row_scan#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_event_scan::row_scan#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a Statement [179] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT [ keyboard_events_size#100 keyboard_modifiers#3 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#3 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#3 ] ) always clobbers reg byte a Statement [185] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL [ keyboard_events_size#100 keyboard_modifiers#4 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#4 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#4 ] ) always clobbers reg byte a Statement [191] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE [ keyboard_events_size#100 keyboard_modifiers#5 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#5 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#5 ] ) always clobbers reg byte a Statement [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ) always clobbers reg byte a Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a Statement [201] *((const byte[8]) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a -Statement [207] *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] ) always clobbers reg byte a +Statement [207] *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] ) always clobbers reg byte a Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ) always clobbers reg byte a Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a -Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 ] ) always clobbers reg byte a -Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 ] ) always clobbers reg byte a +Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a @@ -20834,11 +20491,11 @@ Statement [397] *((const byte[]) form_fields_val + (byte) form_field_idx#28) ← Statement [400] (byte~) form_control::$13 ← *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) | (byte) $80 [ keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 form_control::$13 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 form_control::$13 ] ) always clobbers reg byte a reg byte y Statement [401] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 ] ) always clobbers reg byte y Statement [408] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a -Statement [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] ) always clobbers reg byte a +Statement [413] (byte*~) print_char_cursor#68 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] ) always clobbers reg byte a Statement [415] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y Statement [418] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [421] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y -Statement [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] ) always clobbers reg byte a +Statement [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] ) always clobbers reg byte a Statement [430] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a Statement [431] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a Statement [433] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] ) always clobbers reg byte a @@ -20924,23 +20581,23 @@ Statement [858] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyb Statement [5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) DTV_FEATURE) ← (const byte) DTV_FEATURE_ENABLE [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 [ keyboard_events_size#24 gfx_mode::dtv_control#14 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#14 ] ) always clobbers reg byte a Statement [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#2 ] ) always clobbers reg byte a -Statement [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a +Statement [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 [ keyboard_events_size#24 gfx_mode::dtv_control#15 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#15 ] ) always clobbers reg byte a Statement [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR [ keyboard_events_size#24 gfx_mode::dtv_control#3 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#3 ] ) always clobbers reg byte a -Statement [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a +Statement [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 [ keyboard_events_size#24 gfx_mode::dtv_control#10 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#10 ] ) always clobbers reg byte a Statement [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN [ keyboard_events_size#24 gfx_mode::dtv_control#4 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#4 ] ) always clobbers reg byte a -Statement [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a +Statement [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 [ keyboard_events_size#24 gfx_mode::dtv_control#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#11 ] ) always clobbers reg byte a Statement [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF [ keyboard_events_size#24 gfx_mode::dtv_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#5 ] ) always clobbers reg byte a -Statement [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a +Statement [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 [ keyboard_events_size#24 gfx_mode::dtv_control#13 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#13 ] ) always clobbers reg byte a Statement [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY [ keyboard_events_size#24 gfx_mode::dtv_control#6 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::dtv_control#6 ] ) always clobbers reg byte a -Statement [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a +Statement [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 [ keyboard_events_size#24 gfx_mode::vic_control#5 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#5 ] ) always clobbers reg byte a Statement [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM [ keyboard_events_size#24 gfx_mode::vic_control#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_control#2 ] ) always clobbers reg byte a -Statement [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a -Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a +Statement [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$18 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$18 ] ) always clobbers reg byte a +Statement [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 ] ) always clobbers reg byte a Statement [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 get_plane::return#16 ] ) always clobbers reg byte a Statement [51] (dword~) gfx_mode::$20 ← (dword) get_plane::return#16 [ keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a_offs#0 gfx_mode::$20 ] ) always clobbers reg byte a Statement [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$20 + (byte) gfx_mode::plane_a_offs#0 [ keyboard_events_size#24 gfx_mode::plane_a#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 ] ) always clobbers reg byte a @@ -20949,13 +20606,13 @@ Statement [54] (byte~) gfx_mode::$23 ← < (word~) gfx_mode::$24 [ keyboard_even Statement [56] (byte~) gfx_mode::$25 ← > (word~) gfx_mode::$24 [ keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_a#0 gfx_mode::$25 ] ) always clobbers reg byte a Statement [58] (word~) gfx_mode::$26 ← > (dword) gfx_mode::plane_a#0 [ keyboard_events_size#24 gfx_mode::$26 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$26 ] ) always clobbers reg byte a Statement [59] (byte~) gfx_mode::$27 ← < (word~) gfx_mode::$26 [ keyboard_events_size#24 gfx_mode::$27 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$27 ] ) always clobbers reg byte a -Statement [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a -Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a -Statement [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a -Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a +Statement [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$28 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$28 ] ) always clobbers reg byte a +Statement [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) [ keyboard_events_size#24 gfx_mode::$29 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$29 ] ) always clobbers reg byte a +Statement [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$30 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$30 ] ) always clobbers reg byte a +Statement [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) [ keyboard_events_size#24 gfx_mode::$31 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$31 ] ) always clobbers reg byte a Statement [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a -Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a +Statement [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$32 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$32 ] ) always clobbers reg byte a +Statement [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 ] ) always clobbers reg byte a Statement [72] (dword) get_plane::return#17 ← (dword) get_plane::return#14 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 get_plane::return#17 ] ) always clobbers reg byte a Statement [73] (dword~) gfx_mode::$34 ← (dword) get_plane::return#17 [ keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b_offs#0 gfx_mode::$34 ] ) always clobbers reg byte a Statement [74] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$34 + (byte) gfx_mode::plane_b_offs#0 [ keyboard_events_size#24 gfx_mode::plane_b#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 ] ) always clobbers reg byte a @@ -20964,10 +20621,10 @@ Statement [76] (byte~) gfx_mode::$37 ← < (word~) gfx_mode::$38 [ keyboard_even Statement [78] (byte~) gfx_mode::$39 ← > (word~) gfx_mode::$38 [ keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::plane_b#0 gfx_mode::$39 ] ) always clobbers reg byte a Statement [80] (word~) gfx_mode::$40 ← > (dword) gfx_mode::plane_b#0 [ keyboard_events_size#24 gfx_mode::$40 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$40 ] ) always clobbers reg byte a Statement [81] (byte~) gfx_mode::$41 ← < (word~) gfx_mode::$40 [ keyboard_events_size#24 gfx_mode::$41 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$41 ] ) always clobbers reg byte a -Statement [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a -Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a -Statement [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a -Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a +Statement [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$42 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$42 ] ) always clobbers reg byte a +Statement [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) [ keyboard_events_size#24 gfx_mode::$43 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$43 ] ) always clobbers reg byte a +Statement [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$44 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$44 ] ) always clobbers reg byte a +Statement [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) [ keyboard_events_size#24 gfx_mode::$45 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$45 ] ) always clobbers reg byte a Statement [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [90] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [91] *((const byte*) CIA2_PORT_A) ← (byte) 3^(byte)(word)(const byte*) VIC_SCREEN0/(word) $4000 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a @@ -20985,32 +20642,32 @@ Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::re Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] ) always clobbers reg byte a Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y Statement [121] *((const byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a -Statement [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a -Statement [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a -Statement [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a -Statement [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a -Statement [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$66 ] ) always clobbers reg byte a -Statement [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) [ keyboard_events_size#24 gfx_mode::$67 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$67 ] ) always clobbers reg byte a -Statement [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$68 ] ) always clobbers reg byte a -Statement [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) [ keyboard_events_size#24 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$69 ] ) always clobbers reg byte a -Statement [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a +Statement [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] ) always clobbers reg byte a +Statement [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$63 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$63 ] ) always clobbers reg byte a +Statement [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$64 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$64 ] ) always clobbers reg byte a +Statement [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) [ keyboard_events_size#24 gfx_mode::$65 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 ] ) always clobbers reg byte a +Statement [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$66 ] ) always clobbers reg byte a +Statement [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) [ keyboard_events_size#24 gfx_mode::$67 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$67 ] ) always clobbers reg byte a +Statement [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$68 ] ) always clobbers reg byte a +Statement [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$69 ] ) always clobbers reg byte a +Statement [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [139] if(*((const byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] ) always clobbers reg byte a Statement [149] *((const byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] ) always clobbers reg byte a -Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_event_scan::row_scan#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#109 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_event_scan::row_scan#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#107 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a Statement [179] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT [ keyboard_events_size#100 keyboard_modifiers#3 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#3 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#3 ] ) always clobbers reg byte a Statement [185] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL [ keyboard_events_size#100 keyboard_modifiers#4 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#4 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#4 ] ) always clobbers reg byte a Statement [191] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE [ keyboard_events_size#100 keyboard_modifiers#5 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#5 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#5 ] ) always clobbers reg byte a Statement [195] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$15 ] ) always clobbers reg byte a Statement [199] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a Statement [201] *((const byte[8]) keyboard_events + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a -Statement [207] *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#108 ] ) always clobbers reg byte a +Statement [207] *((const byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 keyboard_events_size#106 ] ) always clobbers reg byte a Statement [208] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$23 ] ) always clobbers reg byte a Statement [212] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Statement [214] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a Statement [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:169 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:169 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:175 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:175 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:181 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:181 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_event_pressed:187 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_event_pressed:187 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a -Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 ] ) always clobbers reg byte a -Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#109 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [217] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 ] ) always clobbers reg byte a +Statement [218] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141::keyboard_matrix_read:160 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:292::keyboard_event_scan:369::keyboard_matrix_read:160 [ form_mode::preset_current#6 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#107 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a Statement [270] *((const byte*) DTV_GRAPHICS_VIC_BANK) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a Statement [271] *((const byte*) DTV_COLOR_BANK_LO) ← <(word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a Statement [272] *((const byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) always clobbers reg byte a @@ -21048,11 +20705,11 @@ Statement [397] *((const byte[]) form_fields_val + (byte) form_field_idx#28) ← Statement [400] (byte~) form_control::$13 ← *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) | (byte) $80 [ keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 form_control::$13 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 form_control::$13 ] ) always clobbers reg byte a reg byte y Statement [401] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← (byte~) form_control::$13 [ keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:292 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_field_ptr::line#0 form_field_ptr::x#0 form_cursor_count#15 ] ) always clobbers reg byte y Statement [408] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte) $28 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::form_mode:13::form_set_screen:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a -Statement [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#71 print_set_screen::screen#2 ] ) always clobbers reg byte a +Statement [413] (byte*~) print_char_cursor#68 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#68 print_set_screen::screen#2 ] ) always clobbers reg byte a Statement [415] if((byte) 0!=*((byte*) print_str_lines::str#3)) goto print_str_lines::@2 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y Statement [418] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [421] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y -Statement [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#72 print_line_cursor#22 ] ) always clobbers reg byte a +Statement [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] ( main:2::form_mode:13::print_str_lines:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] main:2::form_mode:13::print_str_lines:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_char_cursor#69 print_line_cursor#22 ] ) always clobbers reg byte a Statement [430] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte) $28 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a Statement [431] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::form_mode:13::print_str_lines:257::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::form_mode:13::print_str_lines:263::print_ln:426 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a Statement [433] (void*) memset::str#0 ← (void*)(byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 memset::str#0 ] ( main:2::form_mode:13::print_cls:255 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] main:2::form_mode:13::print_cls:261 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 memset::str#0 ] ) always clobbers reg byte a @@ -21149,7 +20806,7 @@ Potential registers zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::r Potential registers zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] : zp[1]:15 , reg byte x , Potential registers zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp[1]:16 , reg byte x , reg byte y , Potential registers zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] : zp[1]:17 , reg byte x , reg byte y , -Potential registers zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] : zp[1]:18 , reg byte x , +Potential registers zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] : zp[1]:18 , reg byte x , Potential registers zp[1]:19 [ keyboard_event_pressed::keycode#4 ] : zp[1]:19 , reg byte x , reg byte y , Potential registers zp[1]:20 [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:21 [ get_vic_screen::return#5 ] : zp[2]:21 , @@ -21172,7 +20829,7 @@ Potential registers zp[1]:46 [ form_control::return#2 ] : zp[1]:46 , reg byte a Potential registers zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] : zp[2]:47 , Potential registers zp[1]:49 [ form_set_screen::y#2 form_set_screen::y#1 ] : zp[1]:49 , reg byte x , reg byte y , Potential registers zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] : zp[2]:50 , -Potential registers zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] : zp[2]:52 , +Potential registers zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] : zp[2]:52 , Potential registers zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] : zp[2]:54 , Potential registers zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:56 , Potential registers zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] : zp[4]:58 , @@ -21398,7 +21055,7 @@ Potential registers zp[1]:342 [ gfx_init_screen0::$3 ] : zp[1]:342 , reg byte a REGISTER UPLIFT SCOPES Uplift Scope [keyboard_event_scan] 200,002: zp[1]:250 [ keyboard_event_scan::$15 ] 200,002: zp[1]:251 [ keyboard_event_scan::$16 ] 200,002: zp[1]:252 [ keyboard_event_scan::event_type#0 ] 200,002: zp[1]:253 [ keyboard_event_scan::$23 ] 178,573.21: zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 119,043.1: zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] 21,001.74: zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 12,778.06: zp[1]:241 [ keyboard_event_scan::row_scan#0 ] 4: zp[1]:243 [ keyboard_event_scan::$0 ] 4: zp[1]:245 [ keyboard_event_scan::$3 ] 4: zp[1]:247 [ keyboard_event_scan::$6 ] 4: zp[1]:249 [ keyboard_event_scan::$9 ] -Uplift Scope [] 588,363.98: zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] 3,703: zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] 2,654.02: zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 289.76: zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] 107.03: zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] 16.73: zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] +Uplift Scope [] 588,363.98: zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] 3,703: zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] 2,654.02: zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 289.76: zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] 107.03: zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] 16.73: zp[1]:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] Uplift Scope [keyboard_matrix_read] 20,002: zp[1]:240 [ keyboard_matrix_read::return#2 ] 10,003: zp[1]:239 [ keyboard_matrix_read::rowid#0 ] 3,334.33: zp[1]:258 [ keyboard_matrix_read::return#0 ] Uplift Scope [gfx_init_plane_charset8] 4,004: zp[1]:89 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,002: zp[1]:296 [ gfx_init_plane_charset8::$4 ] 1,723.94: zp[1]:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,044.93: zp[1]:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 845.22: zp[2]:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 783: zp[1]:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 192.31: zp[2]:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 165.93: zp[1]:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 17.79: zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Uplift Scope [gfx_mode] 2,104.5: zp[2]:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] 2,002: zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] 1,663.27: zp[2]:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] 353.5: zp[1]:11 [ gfx_mode::j#2 gfx_mode::j#1 ] 353.5: zp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] 202: zp[1]:238 [ gfx_mode::keyboard_event#0 ] 180.36: zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] 44: zp[1]:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ] 12: zp[1]:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] 4: zp[1]:158 [ gfx_mode::$18 ] 4: zp[4]:164 [ gfx_mode::$20 ] 4: zp[1]:174 [ gfx_mode::$23 ] 4: zp[1]:175 [ gfx_mode::$25 ] 4: zp[2]:176 [ gfx_mode::$26 ] 4: zp[1]:178 [ gfx_mode::$27 ] 4: zp[1]:179 [ gfx_mode::$28 ] 4: zp[1]:180 [ gfx_mode::$29 ] 4: zp[1]:181 [ gfx_mode::$30 ] 4: zp[1]:182 [ gfx_mode::$31 ] 4: zp[1]:183 [ gfx_mode::$32 ] 4: zp[4]:189 [ gfx_mode::$34 ] 4: zp[1]:199 [ gfx_mode::$37 ] 4: zp[1]:200 [ gfx_mode::$39 ] 4: zp[2]:201 [ gfx_mode::$40 ] 4: zp[1]:203 [ gfx_mode::$41 ] 4: zp[1]:204 [ gfx_mode::$42 ] 4: zp[1]:205 [ gfx_mode::$43 ] 4: zp[1]:206 [ gfx_mode::$44 ] 4: zp[1]:207 [ gfx_mode::$45 ] 4: zp[2]:212 [ gfx_mode::$52 ] 4: zp[2]:222 [ gfx_mode::$57 ] 4: zp[1]:224 [ gfx_mode::$58 ] 4: zp[1]:225 [ gfx_mode::$59 ] 4: zp[1]:226 [ gfx_mode::$60 ] 4: zp[1]:229 [ gfx_mode::$62 ] 4: zp[1]:230 [ gfx_mode::$63 ] 4: zp[1]:231 [ gfx_mode::$64 ] 4: zp[1]:232 [ gfx_mode::$65 ] 4: zp[1]:233 [ gfx_mode::$66 ] 4: zp[1]:234 [ gfx_mode::$67 ] 4: zp[1]:235 [ gfx_mode::$68 ] 4: zp[1]:236 [ gfx_mode::$69 ] 2: zp[1]:4 [ gfx_mode::vic_control2#2 ] 2: zp[2]:172 [ gfx_mode::$24 ] 2: zp[2]:197 [ gfx_mode::$38 ] 2: zp[2]:210 [ gfx_mode::$51 ] 2: zp[2]:214 [ gfx_mode::$53 ] 2: zp[2]:220 [ gfx_mode::$56 ] 1: zp[4]:168 [ gfx_mode::plane_a#0 ] 1: zp[4]:193 [ gfx_mode::plane_b#0 ] 0.8: zp[1]:159 [ gfx_mode::plane_a_offs#0 ] 0.8: zp[1]:184 [ gfx_mode::plane_b_offs#0 ] 0.5: zp[1]:216 [ gfx_mode::$54 ] @@ -21451,7 +21108,7 @@ Uplift Scope [gfx_init_plane_full] Uplifting [keyboard_event_scan] best 15480995 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] zp[1]:252 [ keyboard_event_scan::event_type#0 ] zp[1]:253 [ keyboard_event_scan::$23 ] zp[1]:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp[1]:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp[1]:241 [ keyboard_event_scan::row_scan#0 ] zp[1]:243 [ keyboard_event_scan::$0 ] zp[1]:245 [ keyboard_event_scan::$3 ] zp[1]:247 [ keyboard_event_scan::$6 ] zp[1]:249 [ keyboard_event_scan::$9 ] Limited combination testing to 10 combinations of 5308416 possible. -Uplifting [] best 15480977 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] +Uplifting [] best 15480977 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#18 keyboard_modifiers#3 keyboard_modifiers#4 keyboard_modifiers#5 ] Limited combination testing to 10 combinations of 16 possible. Uplifting [keyboard_matrix_read] best 15390974 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] zp[1]:258 [ keyboard_matrix_read::return#0 ] Limited combination testing to 10 combinations of 64 possible. @@ -21525,8 +21182,8 @@ Uplifting [gfx_init] best 15296442 combination Uplifting [gfx_init_plane_vertical2] best 15296442 combination Uplifting [gfx_init_plane_blank] best 15296442 combination Uplifting [gfx_init_plane_full] best 15296442 combination -Attempting to uplift remaining variables inzp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] -Uplifting [] best 15296442 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +Attempting to uplift remaining variables inzp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] +Uplifting [] best 15296442 combination zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] Attempting to uplift remaining variables inzp[1]:252 [ keyboard_event_scan::event_type#0 ] Uplifting [keyboard_event_scan] best 14696442 combination reg byte a [ keyboard_event_scan::event_type#0 ] Attempting to uplift remaining variables inzp[1]:253 [ keyboard_event_scan::$23 ] @@ -21840,9 +21497,9 @@ Coalescing zero page register [ zp[2]:35 [ render_preset_name::name#13 print_str Coalescing zero page register [ zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 ] ] with [ zp[2]:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] ] Coalescing zero page register [ zp[2]:43 [ apply_preset::preset#15 ] ] with [ zp[2]:23 [ get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$56 gfx_mode::$57 ] ] Coalescing zero page register [ zp[2]:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] ] with [ zp[2]:47 [ form_set_screen::line#2 form_set_screen::line#1 ] ] -Coalescing zero page register [ zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 ] ] with [ zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] ] +Coalescing zero page register [ zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 ] ] with [ zp[2]:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] ] Coalescing zero page register [ zp[4]:58 [ gfx_init_plane_fill::plane_addr#3 ] ] with [ zp[4]:26 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$20 gfx_mode::plane_a#0 gfx_mode::$34 gfx_mode::plane_b#0 ] ] -Coalescing zero page register [ zp[1]:62 [ gfx_init_plane_fill::fill#6 ] ] with [ zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] ] +Coalescing zero page register [ zp[1]:62 [ gfx_init_plane_fill::fill#6 ] ] with [ zp[1]:18 [ keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] ] Coalescing zero page register [ zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] with [ zp[1]:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] ] Coalescing zero page register [ zp[2]:64 [ 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 ] ] with [ zp[2]:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] ] Coalescing zero page register [ zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] ] with [ zp[1]:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] ] @@ -21879,12 +21536,12 @@ Coalescing zero page register [ zp[1]:324 [ bitmap_init::$10 ] ] with [ zp[1]:25 Coalescing zero page register [ zp[1]:329 [ gfx_init_screen3::$1 ] ] with [ zp[1]:265 [ form_field_ptr::x#0 ] ] Coalescing zero page register [ zp[1]:340 [ gfx_init_screen0::$1 ] ] with [ zp[1]:334 [ gfx_init_screen2::col2#0 ] ] Coalescing zero page register [ zp[2]:50 [ 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 ] ] with [ zp[2]:35 [ 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::$51 gfx_mode::$52 gfx_mode::$53 ] ] -Coalescing zero page register [ zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 ] ] with [ zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] ] +Coalescing zero page register [ zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 ] ] with [ zp[2]:39 [ print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] ] Coalescing zero page register [ zp[2]:64 [ 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 print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] ] with [ zp[2]:43 [ apply_preset::preset#15 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$56 gfx_mode::$57 ] ] Coalescing zero page register [ zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] ] with [ zp[1]:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 gfx_mode::cy#4 gfx_mode::cy#1 ] ] Coalescing zero page register [ zp[2]:81 [ 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 ] ] with [ zp[2]:73 [ 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 ] ] Coalescing zero page register [ zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] with [ zp[1]:19 [ keyboard_event_pressed::keycode#4 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ] -Coalescing zero page register [ zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] with [ zp[1]:62 [ gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] ] +Coalescing zero page register [ zp[1]:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] with [ zp[1]:62 [ gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] ] Coalescing zero page register [ zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#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 ] ] with [ zp[1]:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] ] Coalescing zero page register [ zp[1]:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 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 ] ] with [ zp[1]:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] ] Coalescing zero page register [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] with [ zp[1]:72 [ 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 ] ] @@ -21901,7 +21558,7 @@ Coalescing zero page register [ zp[2]:313 [ bitmap_plot::plotter_y#0 ] ] with [ Coalescing zero page register [ zp[1]:340 [ gfx_init_screen0::$1 gfx_init_screen2::col2#0 ] ] with [ zp[1]:324 [ bitmap_init::$10 keyboard_event_pressed::row_bits#0 ] ] Coalescing zero page register [ zp[2]:81 [ 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 ] ] with [ zp[2]:50 [ 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::$51 gfx_mode::$52 gfx_mode::$53 ] ] Coalescing zero page register [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 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 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 ] ] with [ zp[1]:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 gfx_mode::cy#4 gfx_mode::cy#1 ] ] -Coalescing zero page register [ zp[2]:133 [ 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 ] ] with [ zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] ] +Coalescing zero page register [ zp[2]:133 [ 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 ] ] with [ zp[2]:56 [ memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] ] Coalescing zero page register [ zp[1]:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_charset::c#4 gfx_init_charset::c#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 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 bitmap_line::y0#0 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 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] with [ zp[1]:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 keyboard_event_pressed::keycode#4 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] ] Coalescing zero page register [ zp[2]:139 [ 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 ] ] with [ zp[2]:64 [ 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 print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 apply_preset::preset#15 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$56 gfx_mode::$57 ] ] Coalescing zero page register [ zp[1]:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::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::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 ] ] with [ zp[1]:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#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 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] ] @@ -21910,10 +21567,10 @@ Coalescing zero page register [ zp[2]:284 [ gfx_init_plane_fill::$1 gfx_mode::$3 Coalescing zero page register [ zp[1]:340 [ gfx_init_screen0::$1 gfx_init_screen2::col2#0 bitmap_init::$10 keyboard_event_pressed::row_bits#0 ] ] with [ zp[1]:241 [ keyboard_event_scan::row_scan#0 gfx_mode::$54 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 ] ] Allocated (was zp[4]:58) zp[4]:2 [ gfx_init_plane_fill::plane_addr#3 get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$20 gfx_mode::plane_a#0 gfx_mode::$34 gfx_mode::plane_b#0 ] Allocated (was zp[2]:81) zp[2]:6 [ 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 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::$51 gfx_mode::$52 gfx_mode::$53 ] -Allocated (was zp[1]:96) zp[1]:8 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +Allocated (was zp[1]:96) zp[1]:8 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] Allocated (was zp[1]:106) zp[1]:9 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 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 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] Allocated (was zp[1]:118) zp[1]:10 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 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 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_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 gfx_mode::cy#4 gfx_mode::cy#1 ] -Allocated (was zp[2]:133) zp[2]:11 [ 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 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] +Allocated (was zp[2]:133) zp[2]:11 [ 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 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] Allocated (was zp[1]:138) zp[1]:13 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_charset::c#4 gfx_init_charset::c#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 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 bitmap_line::y0#0 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 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 keyboard_event_pressed::keycode#4 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] Allocated (was zp[2]:139) zp[2]:14 [ 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_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 print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 apply_preset::preset#15 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$56 gfx_mode::$57 ] Allocated (was zp[1]:146) zp[1]:16 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::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::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#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 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] @@ -22058,6 +21715,41 @@ ASSEMBLER BEFORE OPTIMIZATION .label FORM_SCREEN = $400 // Charset used for the FORM .label FORM_CHARSET = $1800 + .label form_ctrl_bmm = form_fields_val+1 + .label form_ctrl_mcm = form_fields_val+2 + .label form_ctrl_ecm = form_fields_val+3 + .label form_ctrl_hicol = form_fields_val+4 + .label form_ctrl_line = form_fields_val+5 + .label form_ctrl_colof = form_fields_val+6 + .label form_ctrl_chunk = form_fields_val+7 + .label form_ctrl_borof = form_fields_val+8 + .label form_ctrl_overs = form_fields_val+9 + .label form_a_pattern = form_fields_val+$a + .label form_a_start_hi = form_fields_val+$b + .label form_a_start_lo = form_fields_val+$c + .label form_a_step_hi = form_fields_val+$d + .label form_a_step_lo = form_fields_val+$e + .label form_a_mod_hi = form_fields_val+$f + .label form_a_mod_lo = form_fields_val+$10 + .label form_b_pattern = form_fields_val+$11 + .label form_b_start_hi = form_fields_val+$12 + .label form_b_start_lo = form_fields_val+$13 + .label form_b_step_hi = form_fields_val+$14 + .label form_b_step_lo = form_fields_val+$15 + .label form_b_mod_hi = form_fields_val+$16 + .label form_b_mod_lo = form_fields_val+$17 + .label form_vic_screen = form_fields_val+$18 + .label form_vic_gfx = form_fields_val+$19 + .label form_vic_cols = form_fields_val+$1a + .label form_dtv_palet = form_fields_val+$1b + .label form_vic_bg0_hi = form_fields_val+$1c + .label form_vic_bg0_lo = form_fields_val+$1d + .label form_vic_bg1_hi = form_fields_val+$1e + .label form_vic_bg1_lo = form_fields_val+$1f + .label form_vic_bg2_hi = form_fields_val+$20 + .label form_vic_bg2_lo = form_fields_val+$21 + .label form_vic_bg3_hi = form_fields_val+$22 + .label form_vic_bg3_lo = form_fields_val+$23 // The number of frames to use for a full blink cycle .const FORM_CURSOR_BLINK = $28 // Number of form fields @@ -22165,8 +21857,8 @@ gfx_mode: { .label vic_colors = 6 .label col = $b .label cy = $a - // [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+5 + // [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_line cmp #0 beq __b1_from_gfx_mode // [17] phi from gfx_mode to gfx_mode::@10 [phi:gfx_mode->gfx_mode::@10] @@ -22186,8 +21878,8 @@ gfx_mode: { jmp __b1 // gfx_mode::@1 __b1: - // [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+8 + // [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_borof cmp #0 beq __b2_from___b1 jmp __b11 @@ -22204,8 +21896,8 @@ gfx_mode: { jmp __b2 // gfx_mode::@2 __b2: - // [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+4 + // [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_hicol cmp #0 beq __b3_from___b2 jmp __b12 @@ -22222,8 +21914,8 @@ gfx_mode: { jmp __b3 // gfx_mode::@3 __b3: - // [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+9 + // [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_overs cmp #0 beq __b4_from___b3 jmp __b13 @@ -22240,8 +21932,8 @@ gfx_mode: { jmp __b4 // gfx_mode::@4 __b4: - // [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+6 + // [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_colof cmp #0 beq __b5_from___b4 jmp __b14 @@ -22258,8 +21950,8 @@ gfx_mode: { jmp __b5 // gfx_mode::@5 __b5: - // [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+7 + // [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_chunk cmp #0 beq __b6_from___b5 jmp __b15 @@ -22278,8 +21970,8 @@ gfx_mode: { __b6: // [34] *((const byte*) DTV_CONTROL) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuxx stx DTV_CONTROL - // [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+3 + // [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_ecm cmp #0 beq __b7_from___b6 // [36] phi from gfx_mode::@6 to gfx_mode::@16 [phi:gfx_mode::@6->gfx_mode::@16] @@ -22299,8 +21991,8 @@ gfx_mode: { jmp __b7 // gfx_mode::@7 __b7: - // [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+1 + // [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_bmm cmp #0 beq __b8_from___b7 jmp __b17 @@ -22319,8 +22011,8 @@ gfx_mode: { __b8: // [41] *((const byte*) VIC_CONTROL) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuxx stx VIC_CONTROL - // [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+2 + // [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_mcm cmp #0 beq __b9_from___b8 // [43] phi from gfx_mode::@8 to gfx_mode::@18 [phi:gfx_mode::@8->gfx_mode::@18] @@ -22342,17 +22034,17 @@ gfx_mode: { __b9: // [45] *((const byte*) VIC_CONTROL2) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuaa sta VIC_CONTROL2 - // [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$b + // [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_a_start_hi asl asl asl asl - // [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) -- vbuxx=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$c + // [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) -- vbuxx=vbuaa_bor__deref_pbuc1 + ora form_a_start_lo tax - // [48] (byte) get_plane::idx#0 ← *((const byte[]) form_fields_val+(byte) $a) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$a + // [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern) -- vbuaa=_deref_pbuc1 + lda form_a_pattern // [49] call get_plane // [234] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] get_plane_from___b9: @@ -22399,40 +22091,40 @@ gfx_mode: { lda.z __26 // [60] *((const byte*) DTV_PLANEA_START_HI) ← (byte~) gfx_mode::$27 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_HI - // [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$d + // [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_a_step_hi asl asl asl asl - // [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$e + // [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_a_step_lo // [63] *((const byte*) DTV_PLANEA_STEP) ← (byte~) gfx_mode::$29 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_STEP - // [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$f + // [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_a_mod_hi asl asl asl asl - // [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$10 + // [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_a_mod_lo // [66] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte~) gfx_mode::$31 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_MODULO_LO // [67] *((const byte*) DTV_PLANEA_MODULO_HI) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta DTV_PLANEA_MODULO_HI - // [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$12 + // [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_b_start_hi asl asl asl asl - // [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) -- vbuxx=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$13 + // [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) -- vbuxx=vbuaa_bor__deref_pbuc1 + ora form_b_start_lo tax - // [70] (byte) get_plane::idx#1 ← *((const byte[]) form_fields_val+(byte) $11) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$11 + // [70] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern) -- vbuaa=_deref_pbuc1 + lda form_b_pattern // [71] call get_plane // [234] phi from gfx_mode::@27 to get_plane [phi:gfx_mode::@27->get_plane] get_plane_from___b27: @@ -22479,24 +22171,24 @@ gfx_mode: { lda.z __40 // [82] *((const byte*) DTV_PLANEB_START_HI) ← (byte~) gfx_mode::$41 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_HI - // [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$14 + // [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_b_step_hi asl asl asl asl - // [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$15 + // [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_b_step_lo // [85] *((const byte*) DTV_PLANEB_STEP) ← (byte~) gfx_mode::$43 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_STEP - // [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$16 + // [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_b_mod_hi asl asl asl asl - // [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$17 + // [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_b_mod_lo // [88] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte~) gfx_mode::$45 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_MODULO_LO // [89] *((const byte*) DTV_PLANEB_MODULO_HI) ← (byte) 0 -- _deref_pbuc1=vbuc2 @@ -22510,8 +22202,8 @@ gfx_mode: { // Set VIC Bank bits to output - all others to input lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A - // [92] (byte) get_vic_screen::idx#0 ← *((const byte[]) form_fields_val+(byte) $18) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$18 + // [92] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen) -- vbuaa=_deref_pbuc1 + lda form_vic_screen // [93] call get_vic_screen // [220] phi from gfx_mode::@28 to get_vic_screen [phi:gfx_mode::@28->get_vic_screen] get_vic_screen_from___b28: @@ -22539,8 +22231,8 @@ gfx_mode: { // [98] (byte~) gfx_mode::$54 ← (byte)(word~) gfx_mode::$53 -- vbuz1=_byte_vwuz2 lda.z __53 sta.z __54 - // [99] (byte) get_vic_charset::idx#0 ← *((const byte[]) form_fields_val+(byte) $19) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$19 + // [99] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx) -- vbuaa=_deref_pbuc1 + lda form_vic_gfx // [100] call get_vic_charset jsr get_vic_charset // [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 @@ -22566,8 +22258,8 @@ gfx_mode: { // Set VIC Bank // VIC memory sta VIC_MEMORY - // [108] (byte) get_vic_screen::idx#1 ← *((const byte[]) form_fields_val+(byte) $1a) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$1a + // [108] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols) -- vbuaa=_deref_pbuc1 + lda form_vic_cols // [109] call get_vic_screen // [220] phi from gfx_mode::@30 to get_vic_screen [phi:gfx_mode::@30->get_vic_screen] get_vic_screen_from___b30: @@ -22649,49 +22341,49 @@ gfx_mode: { // Background colors lda #0 sta BORDERCOL - // [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$1c + // [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg0_hi asl asl asl asl - // [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$1d + // [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg0_lo // [124] *((const byte*) BGCOL1) ← (byte~) gfx_mode::$63 -- _deref_pbuc1=vbuaa sta BGCOL1 - // [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$1e + // [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg1_hi asl asl asl asl - // [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$1f + // [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg1_lo // [127] *((const byte*) BGCOL2) ← (byte~) gfx_mode::$65 -- _deref_pbuc1=vbuaa sta BGCOL2 - // [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$20 + // [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg2_hi asl asl asl asl - // [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$21 + // [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg2_lo // [130] *((const byte*) BGCOL3) ← (byte~) gfx_mode::$67 -- _deref_pbuc1=vbuaa sta BGCOL3 - // [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$22 + // [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg3_hi asl asl asl asl - // [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$23 + // [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg3_lo // [133] *((const byte*) BGCOL4) ← (byte~) gfx_mode::$69 -- _deref_pbuc1=vbuaa sta BGCOL4 - // [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 + // [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 // DTV Palette - lda form_fields_val+$1b + lda form_dtv_palet cmp #0 beq __b24_from___b22 // [135] phi from gfx_mode::@22 to gfx_mode::@23 [phi:gfx_mode::@22->gfx_mode::@23] @@ -22729,7 +22421,7 @@ gfx_mode: { // [141] call keyboard_event_scan // [157] phi from gfx_mode::@26 to keyboard_event_scan [phi:gfx_mode::@26->keyboard_event_scan] keyboard_event_scan_from___b26: - // [157] phi (byte) keyboard_events_size#99 = (byte) keyboard_events_size#24 [phi:gfx_mode::@26->keyboard_event_scan#0] -- register_copy + // [157] phi (byte) keyboard_events_size#98 = (byte) keyboard_events_size#24 [phi:gfx_mode::@26->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan // [142] phi from gfx_mode::@26 to gfx_mode::@32 [phi:gfx_mode::@26->gfx_mode::@32] __b32_from___b26: @@ -22817,7 +22509,7 @@ keyboard_event_scan: { .label row = $a // [158] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] __b7_from_keyboard_event_scan: - // [158] phi (byte) keyboard_events_size#109 = (byte) keyboard_events_size#99 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + // [158] phi (byte) keyboard_events_size#107 = (byte) keyboard_events_size#98 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy // [158] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta.z keycode @@ -22827,7 +22519,7 @@ keyboard_event_scan: { jmp __b7 // [158] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] __b7_from___b8: - // [158] phi (byte) keyboard_events_size#109 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + // [158] phi (byte) keyboard_events_size#107 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy // [158] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy // [158] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy jmp __b7 @@ -22858,7 +22550,7 @@ keyboard_event_scan: { // [165] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] __b8_from___b15: __b8_from___b16: - // [165] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#108 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + // [165] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#106 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy // [165] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy jmp __b8 // keyboard_event_scan::@8 @@ -22998,13 +22690,13 @@ keyboard_event_scan: { // Something has changed on the keyboard row - check each column // [194] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] __b9_from___b10: - // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#108 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#106 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy // [194] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy // [194] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy jmp __b9 // [194] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] __b9_from___b19: - // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#109 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#107 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy // [194] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy // [194] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 ldx #0 @@ -23051,7 +22743,7 @@ keyboard_event_scan: { __b10_from___b12: __b10_from___b14: __b10_from___b9: - // [203] phi (byte) keyboard_events_size#108 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + // [203] phi (byte) keyboard_events_size#106 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy jmp __b10 // keyboard_event_scan::@10 __b10: @@ -24356,7 +24048,7 @@ form_control: { // [369] call keyboard_event_scan // [157] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] keyboard_event_scan_from___b3: - // [157] phi (byte) keyboard_events_size#99 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy + // [157] phi (byte) keyboard_events_size#98 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan // [370] phi from form_control::@3 to form_control::@19 [phi:form_control::@3->form_control::@19] __b19_from___b3: @@ -24602,7 +24294,7 @@ form_set_screen: { // print_str_lines(byte* zeropage(6) str) print_str_lines: { .label str = 6 - // [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + // [413] (byte*~) print_char_cursor#68 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda.z print_set_screen.screen sta.z print_char_cursor lda.z print_set_screen.screen+1 @@ -24611,7 +24303,7 @@ print_str_lines: { __b1_from_print_str_lines: __b1_from___b6: // [414] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#0] -- register_copy - // [414] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#71 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#1] -- register_copy + // [414] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#68 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#1] -- register_copy // [414] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#2] -- register_copy jmp __b1 // print_str_lines::@1 @@ -24678,7 +24370,7 @@ print_str_lines: { jmp __b6 // print_str_lines::@6 __b6: - // [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 + // [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -27099,28 +26791,18 @@ keyboard_init: { rts } // File Data + // Default vallues for the palette + DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a print_hextab: .text "0123456789abcdef" + // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) + keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f + // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) + keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 // Charset ROM FORM_TEXT: .text " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @" .byte 0 FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" .byte 0 - // Default vallues for the palette - DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a - // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) - keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f - // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) - keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // Tables for the plotter - initialized by calling bitmap_draw_init(); - bitmap_plot_xlo: .fill $100, 0 - bitmap_plot_xhi: .fill $100, 0 - bitmap_plot_ylo: .fill $100, 0 - bitmap_plot_yhi: .fill $100, 0 - bitmap_plot_bit: .fill $100, 0 // Form fields x/y-positions form_fields_x: .byte 8, $c, $c, $c, $c, $c, $c, $c, $c, $c, $19, $18, $19, $18, $19, $18, $19, $19, $18, $19, $18, $19, $18, $19, $25, $25, $25, $25, $24, $25, $24, $25, $24, $25, $24, $25 form_fields_y: .byte 2, 5, 6, 7, 8, 9, $a, $b, $c, $d, 5, 6, 6, 7, 7, 8, 8, $b, $c, $c, $d, $d, $e, $e, 5, 6, 7, $a, $b, $b, $c, $c, $d, $d, $e, $e @@ -27150,6 +26832,16 @@ keyboard_init: { preset_sixsfred2: .byte 9, 1, 1, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, $a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 // Preset: 8bpp Pixel Cell preset_8bpppixelcell: .byte $a, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, $b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // Tables for the plotter - initialized by calling bitmap_draw_init(); + bitmap_plot_xlo: .fill $100, 0 + bitmap_plot_xhi: .fill $100, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 // Table with addresses of the y-lines of the form. The first line contains the address of the form screen. form_line_lo: .fill $19, 0 form_line_hi: .fill $19, 0 @@ -28226,15 +27918,15 @@ Removing unreachable instruction jmp __b9 Removing unreachable instruction jmp __b14 Removing unreachable instruction jmp b1 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [706] beq b6 to bne -Fixing long branch [710] beq b7 to bne -Fixing long branch [714] beq b8 to bne -Fixing long branch [718] beq b9 to bne -Fixing long branch [722] beq b10 to bne -Fixing long branch [726] beq b11 to bne -Fixing long branch [730] beq b12 to bne -Fixing long branch [734] beq b13 to bne -Fixing long branch [1297] bmi __b2 to bpl +Fixing long branch [741] beq b6 to bne +Fixing long branch [745] beq b7 to bne +Fixing long branch [749] beq b8 to bne +Fixing long branch [753] beq b9 to bne +Fixing long branch [757] beq b10 to bne +Fixing long branch [761] beq b11 to bne +Fixing long branch [765] beq b12 to bne +Fixing long branch [769] beq b13 to bne +Fixing long branch [1332] bmi __b2 to bpl FINAL SYMBOL TABLE (label) @1 @@ -28617,6 +28309,20 @@ FINAL SYMBOL TABLE (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 202.0 (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 4.0 (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 105.0 +(const byte*) form_a_mod_hi = (const byte[]) form_fields_val+(byte) $f +(const byte*) form_a_mod_lo = (const byte[]) form_fields_val+(byte) $10 +(const byte*) form_a_pattern = (const byte[]) form_fields_val+(byte) $a +(const byte*) form_a_start_hi = (const byte[]) form_fields_val+(byte) $b +(const byte*) form_a_start_lo = (const byte[]) form_fields_val+(byte) $c +(const byte*) form_a_step_hi = (const byte[]) form_fields_val+(byte) $d +(const byte*) form_a_step_lo = (const byte[]) form_fields_val+(byte) $e +(const byte*) form_b_mod_hi = (const byte[]) form_fields_val+(byte) $16 +(const byte*) form_b_mod_lo = (const byte[]) form_fields_val+(byte) $17 +(const byte*) form_b_pattern = (const byte[]) form_fields_val+(byte) $11 +(const byte*) form_b_start_hi = (const byte[]) form_fields_val+(byte) $12 +(const byte*) form_b_start_lo = (const byte[]) form_fields_val+(byte) $13 +(const byte*) form_b_step_hi = (const byte[]) form_fields_val+(byte) $14 +(const byte*) form_b_step_lo = (const byte[]) form_fields_val+(byte) $15 (byte()) form_control() (byte~) form_control::$12 reg byte a 4.0 (byte~) form_control::$13 reg byte a 4.0 @@ -28653,12 +28359,22 @@ FINAL SYMBOL TABLE (byte) form_control::return (byte) form_control::return#0 reg byte a 2002.0 (byte) form_control::return#2 reg byte x 333.6666666666667 +(const byte*) form_ctrl_bmm = (const byte[]) form_fields_val+(byte) 1 +(const byte*) form_ctrl_borof = (const byte[]) form_fields_val+(byte) 8 +(const byte*) form_ctrl_chunk = (const byte[]) form_fields_val+(byte) 7 +(const byte*) form_ctrl_colof = (const byte[]) form_fields_val+(byte) 6 +(const byte*) form_ctrl_ecm = (const byte[]) form_fields_val+(byte) 3 +(const byte*) form_ctrl_hicol = (const byte[]) form_fields_val+(byte) 4 +(const byte*) form_ctrl_line = (const byte[]) form_fields_val+(byte) 5 +(const byte*) form_ctrl_mcm = (const byte[]) form_fields_val+(byte) 2 +(const byte*) form_ctrl_overs = (const byte[]) form_fields_val+(byte) 9 (signed byte) form_cursor_count (signed byte) form_cursor_count#1 form_cursor_count zp[1]:16 0.3333333333333333 (signed byte) form_cursor_count#15 form_cursor_count zp[1]:16 0.4 (signed byte) form_cursor_count#16 form_cursor_count zp[1]:16 65.82352941176472 (signed byte) form_cursor_count#21 form_cursor_count zp[1]:16 221.2 (signed byte) form_cursor_count#5 form_cursor_count zp[1]:16 2.0 +(const byte*) form_dtv_palet = (const byte[]) form_fields_val+(byte) $1b (byte) form_field_idx (byte) form_field_idx#1 form_field_idx zp[1]:9 0.3333333333333333 (byte) form_field_idx#18 form_field_idx zp[1]:9 65.94117647058826 @@ -28737,6 +28453,17 @@ FINAL SYMBOL TABLE (byte) form_set_screen::y (byte) form_set_screen::y#1 reg byte x 151.5 (byte) form_set_screen::y#2 reg byte x 67.33333333333333 +(const byte*) form_vic_bg0_hi = (const byte[]) form_fields_val+(byte) $1c +(const byte*) form_vic_bg0_lo = (const byte[]) form_fields_val+(byte) $1d +(const byte*) form_vic_bg1_hi = (const byte[]) form_fields_val+(byte) $1e +(const byte*) form_vic_bg1_lo = (const byte[]) form_fields_val+(byte) $1f +(const byte*) form_vic_bg2_hi = (const byte[]) form_fields_val+(byte) $20 +(const byte*) form_vic_bg2_lo = (const byte[]) form_fields_val+(byte) $21 +(const byte*) form_vic_bg3_hi = (const byte[]) form_fields_val+(byte) $22 +(const byte*) form_vic_bg3_lo = (const byte[]) form_fields_val+(byte) $23 +(const byte*) form_vic_cols = (const byte[]) form_fields_val+(byte) $1a +(const byte*) form_vic_gfx = (const byte[]) form_fields_val+(byte) $19 +(const byte*) form_vic_screen = (const byte[]) form_fields_val+(byte) $18 (dword()) get_plane((byte) get_plane::idx) (label) get_plane::@1 (label) get_plane::@10 @@ -29293,15 +29020,15 @@ FINAL SYMBOL TABLE (byte) keyboard_events_size (byte) keyboard_events_size#1 keyboard_events_size zp[1]:8 200002.0 (byte) keyboard_events_size#100 keyboard_events_size zp[1]:8 882.6176470588235 -(byte) keyboard_events_size#108 keyboard_events_size zp[1]:8 102001.2 -(byte) keyboard_events_size#109 keyboard_events_size zp[1]:8 4286.428571428572 +(byte) keyboard_events_size#106 keyboard_events_size zp[1]:8 102001.2 +(byte) keyboard_events_size#107 keyboard_events_size zp[1]:8 4286.428571428572 (byte) keyboard_events_size#18 keyboard_events_size zp[1]:8 81000.90000000001 (byte) keyboard_events_size#2 keyboard_events_size zp[1]:8 200002.0 (byte) keyboard_events_size#24 keyboard_events_size zp[1]:8 6.766666666666667 (byte) keyboard_events_size#27 keyboard_events_size zp[1]:8 0.3333333333333333 (byte) keyboard_events_size#4 keyboard_events_size zp[1]:8 3.0 (byte) keyboard_events_size#47 keyboard_events_size zp[1]:8 73.73333333333335 -(byte) keyboard_events_size#99 keyboard_events_size zp[1]:8 105.0 +(byte) keyboard_events_size#98 keyboard_events_size zp[1]:8 105.0 (void()) keyboard_init() (label) keyboard_init::@return (const byte[8]) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } @@ -29362,8 +29089,8 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#20 print_char_cursor zp[2]:11 821.0 (byte*) print_char_cursor#22 print_char_cursor zp[2]:11 102.0 (byte*) print_char_cursor#38 print_char_cursor zp[2]:11 572.0 -(byte*~) print_char_cursor#71 print_char_cursor zp[2]:11 4.0 -(byte*~) print_char_cursor#72 print_char_cursor zp[2]:11 202.0 +(byte*~) print_char_cursor#68 print_char_cursor zp[2]:11 4.0 +(byte*~) print_char_cursor#69 print_char_cursor zp[2]:11 202.0 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -29465,7 +29192,7 @@ zp[2]:6 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 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 ] -zp[1]:8 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +zp[1]:8 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[1]:9 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 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 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] @@ -29476,7 +29203,7 @@ 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 ] -zp[2]:11 [ 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 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] +zp[2]:11 [ 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 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp[1]:13 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_charset::c#4 gfx_init_charset::c#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 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 bitmap_line::y0#0 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 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 keyboard_event_pressed::keycode#4 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[2]:14 [ 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_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 print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 apply_preset::preset#15 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$56 gfx_mode::$57 ] @@ -29726,6 +29453,41 @@ Score: 10133385 .label FORM_SCREEN = $400 // Charset used for the FORM .label FORM_CHARSET = $1800 + .label form_ctrl_bmm = form_fields_val+1 + .label form_ctrl_mcm = form_fields_val+2 + .label form_ctrl_ecm = form_fields_val+3 + .label form_ctrl_hicol = form_fields_val+4 + .label form_ctrl_line = form_fields_val+5 + .label form_ctrl_colof = form_fields_val+6 + .label form_ctrl_chunk = form_fields_val+7 + .label form_ctrl_borof = form_fields_val+8 + .label form_ctrl_overs = form_fields_val+9 + .label form_a_pattern = form_fields_val+$a + .label form_a_start_hi = form_fields_val+$b + .label form_a_start_lo = form_fields_val+$c + .label form_a_step_hi = form_fields_val+$d + .label form_a_step_lo = form_fields_val+$e + .label form_a_mod_hi = form_fields_val+$f + .label form_a_mod_lo = form_fields_val+$10 + .label form_b_pattern = form_fields_val+$11 + .label form_b_start_hi = form_fields_val+$12 + .label form_b_start_lo = form_fields_val+$13 + .label form_b_step_hi = form_fields_val+$14 + .label form_b_step_lo = form_fields_val+$15 + .label form_b_mod_hi = form_fields_val+$16 + .label form_b_mod_lo = form_fields_val+$17 + .label form_vic_screen = form_fields_val+$18 + .label form_vic_gfx = form_fields_val+$19 + .label form_vic_cols = form_fields_val+$1a + .label form_dtv_palet = form_fields_val+$1b + .label form_vic_bg0_hi = form_fields_val+$1c + .label form_vic_bg0_lo = form_fields_val+$1d + .label form_vic_bg1_hi = form_fields_val+$1e + .label form_vic_bg1_lo = form_fields_val+$1f + .label form_vic_bg2_hi = form_fields_val+$20 + .label form_vic_bg2_lo = form_fields_val+$21 + .label form_vic_bg3_hi = form_fields_val+$22 + .label form_vic_bg3_lo = form_fields_val+$23 // The number of frames to use for a full blink cycle .const FORM_CURSOR_BLINK = $28 // Number of form fields @@ -29819,8 +29581,8 @@ gfx_mode: { .label col = $b .label cy = $a // if(*form_ctrl_line!=0) - // [16] if(*((const byte[]) form_fields_val+(byte) 5)==(byte) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+5 + // [16] if(*((const byte*) form_ctrl_line)==(byte) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_line cmp #0 beq b1 // [17] phi from gfx_mode to gfx_mode::@10 [phi:gfx_mode->gfx_mode::@10] @@ -29836,8 +29598,8 @@ gfx_mode: { // gfx_mode::@1 __b1: // if(*form_ctrl_borof!=0) - // [19] if(*((const byte[]) form_fields_val+(byte) 8)==(byte) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+8 + // [19] if(*((const byte*) form_ctrl_borof)==(byte) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_borof cmp #0 beq __b2 // gfx_mode::@11 @@ -29851,8 +29613,8 @@ gfx_mode: { // gfx_mode::@2 __b2: // if(*form_ctrl_hicol!=0) - // [22] if(*((const byte[]) form_fields_val+(byte) 4)==(byte) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+4 + // [22] if(*((const byte*) form_ctrl_hicol)==(byte) 0) goto gfx_mode::@3 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_hicol cmp #0 beq __b3 // gfx_mode::@12 @@ -29866,8 +29628,8 @@ gfx_mode: { // gfx_mode::@3 __b3: // if(*form_ctrl_overs!=0) - // [25] if(*((const byte[]) form_fields_val+(byte) 9)==(byte) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+9 + // [25] if(*((const byte*) form_ctrl_overs)==(byte) 0) goto gfx_mode::@4 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_overs cmp #0 beq __b4 // gfx_mode::@13 @@ -29881,8 +29643,8 @@ gfx_mode: { // gfx_mode::@4 __b4: // if(*form_ctrl_colof!=0) - // [28] if(*((const byte[]) form_fields_val+(byte) 6)==(byte) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+6 + // [28] if(*((const byte*) form_ctrl_colof)==(byte) 0) goto gfx_mode::@5 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_colof cmp #0 beq __b5 // gfx_mode::@14 @@ -29896,8 +29658,8 @@ gfx_mode: { // gfx_mode::@5 __b5: // if(*form_ctrl_chunk!=0) - // [31] if(*((const byte[]) form_fields_val+(byte) 7)==(byte) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+7 + // [31] if(*((const byte*) form_ctrl_chunk)==(byte) 0) goto gfx_mode::@6 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_chunk cmp #0 beq __b6 // gfx_mode::@15 @@ -29914,8 +29676,8 @@ gfx_mode: { // [34] *((const byte*) DTV_CONTROL) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuxx stx DTV_CONTROL // if(*form_ctrl_ecm!=0) - // [35] if(*((const byte[]) form_fields_val+(byte) 3)==(byte) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+3 + // [35] if(*((const byte*) form_ctrl_ecm)==(byte) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_ecm cmp #0 beq b2 // [36] phi from gfx_mode::@6 to gfx_mode::@16 [phi:gfx_mode::@6->gfx_mode::@16] @@ -29931,8 +29693,8 @@ gfx_mode: { // gfx_mode::@7 __b7: // if(*form_ctrl_bmm!=0) - // [38] if(*((const byte[]) form_fields_val+(byte) 1)==(byte) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+1 + // [38] if(*((const byte*) form_ctrl_bmm)==(byte) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_bmm cmp #0 beq __b8 // gfx_mode::@17 @@ -29949,8 +29711,8 @@ gfx_mode: { // [41] *((const byte*) VIC_CONTROL) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuxx stx VIC_CONTROL // if(*form_ctrl_mcm!=0) - // [42] if(*((const byte[]) form_fields_val+(byte) 2)==(byte) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 - lda form_fields_val+2 + // [42] if(*((const byte*) form_ctrl_mcm)==(byte) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 + lda form_ctrl_mcm cmp #0 beq b3 // [43] phi from gfx_mode::@8 to gfx_mode::@18 [phi:gfx_mode::@8->gfx_mode::@18] @@ -29969,19 +29731,19 @@ gfx_mode: { // [45] *((const byte*) VIC_CONTROL2) ← (byte) gfx_mode::vic_control2#2 -- _deref_pbuc1=vbuaa sta VIC_CONTROL2 // *form_a_start_hi*$10 - // [46] (byte~) gfx_mode::$18 ← *((const byte[]) form_fields_val+(byte) $b) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$b + // [46] (byte~) gfx_mode::$18 ← *((const byte*) form_a_start_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_a_start_hi asl asl asl asl // plane_a_offs = *form_a_start_hi*$10|*form_a_start_lo - // [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte[]) form_fields_val+(byte) $c) -- vbuxx=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$c + // [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$18 | *((const byte*) form_a_start_lo) -- vbuxx=vbuaa_bor__deref_pbuc1 + ora form_a_start_lo tax // get_plane(*form_a_pattern) - // [48] (byte) get_plane::idx#0 ← *((const byte[]) form_fields_val+(byte) $a) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$a + // [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern) -- vbuaa=_deref_pbuc1 + lda form_a_pattern // [49] call get_plane // [234] phi from gfx_mode::@9 to get_plane [phi:gfx_mode::@9->get_plane] // [234] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#0 [phi:gfx_mode::@9->get_plane#0] -- register_copy @@ -30036,28 +29798,28 @@ gfx_mode: { // [60] *((const byte*) DTV_PLANEA_START_HI) ← (byte~) gfx_mode::$27 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_START_HI // *form_a_step_hi*$10 - // [61] (byte~) gfx_mode::$28 ← *((const byte[]) form_fields_val+(byte) $d) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$d + // [61] (byte~) gfx_mode::$28 ← *((const byte*) form_a_step_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_a_step_hi asl asl asl asl // *form_a_step_hi*$10|*form_a_step_lo - // [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte[]) form_fields_val+(byte) $e) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$e + // [62] (byte~) gfx_mode::$29 ← (byte~) gfx_mode::$28 | *((const byte*) form_a_step_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_a_step_lo // *DTV_PLANEA_STEP = *form_a_step_hi*$10|*form_a_step_lo // [63] *((const byte*) DTV_PLANEA_STEP) ← (byte~) gfx_mode::$29 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_STEP // *form_a_mod_hi*$10 - // [64] (byte~) gfx_mode::$30 ← *((const byte[]) form_fields_val+(byte) $f) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$f + // [64] (byte~) gfx_mode::$30 ← *((const byte*) form_a_mod_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_a_mod_hi asl asl asl asl // *form_a_mod_hi*$10|*form_a_mod_lo - // [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte[]) form_fields_val+(byte) $10) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$10 + // [65] (byte~) gfx_mode::$31 ← (byte~) gfx_mode::$30 | *((const byte*) form_a_mod_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_a_mod_lo // *DTV_PLANEA_MODULO_LO = *form_a_mod_hi*$10|*form_a_mod_lo // [66] *((const byte*) DTV_PLANEA_MODULO_LO) ← (byte~) gfx_mode::$31 -- _deref_pbuc1=vbuaa sta DTV_PLANEA_MODULO_LO @@ -30066,19 +29828,19 @@ gfx_mode: { lda #0 sta DTV_PLANEA_MODULO_HI // *form_b_start_hi*$10 - // [68] (byte~) gfx_mode::$32 ← *((const byte[]) form_fields_val+(byte) $12) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$12 + // [68] (byte~) gfx_mode::$32 ← *((const byte*) form_b_start_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_b_start_hi asl asl asl asl // plane_b_offs = *form_b_start_hi*$10|*form_b_start_lo - // [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte[]) form_fields_val+(byte) $13) -- vbuxx=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$13 + // [69] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$32 | *((const byte*) form_b_start_lo) -- vbuxx=vbuaa_bor__deref_pbuc1 + ora form_b_start_lo tax // get_plane(*form_b_pattern) - // [70] (byte) get_plane::idx#1 ← *((const byte[]) form_fields_val+(byte) $11) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$11 + // [70] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern) -- vbuaa=_deref_pbuc1 + lda form_b_pattern // [71] call get_plane // [234] phi from gfx_mode::@27 to get_plane [phi:gfx_mode::@27->get_plane] // [234] phi (byte) get_plane::idx#10 = (byte) get_plane::idx#1 [phi:gfx_mode::@27->get_plane#0] -- register_copy @@ -30133,28 +29895,28 @@ gfx_mode: { // [82] *((const byte*) DTV_PLANEB_START_HI) ← (byte~) gfx_mode::$41 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_START_HI // *form_b_step_hi*$10 - // [83] (byte~) gfx_mode::$42 ← *((const byte[]) form_fields_val+(byte) $14) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$14 + // [83] (byte~) gfx_mode::$42 ← *((const byte*) form_b_step_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_b_step_hi asl asl asl asl // *form_b_step_hi*$10|*form_b_step_lo - // [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte[]) form_fields_val+(byte) $15) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$15 + // [84] (byte~) gfx_mode::$43 ← (byte~) gfx_mode::$42 | *((const byte*) form_b_step_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_b_step_lo // *DTV_PLANEB_STEP = *form_b_step_hi*$10|*form_b_step_lo // [85] *((const byte*) DTV_PLANEB_STEP) ← (byte~) gfx_mode::$43 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_STEP // *form_b_mod_hi*$10 - // [86] (byte~) gfx_mode::$44 ← *((const byte[]) form_fields_val+(byte) $16) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$16 + // [86] (byte~) gfx_mode::$44 ← *((const byte*) form_b_mod_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_b_mod_hi asl asl asl asl // *form_b_mod_hi*$10|*form_b_mod_lo - // [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte[]) form_fields_val+(byte) $17) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$17 + // [87] (byte~) gfx_mode::$45 ← (byte~) gfx_mode::$44 | *((const byte*) form_b_mod_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_b_mod_lo // *DTV_PLANEB_MODULO_LO = *form_b_mod_hi*$10|*form_b_mod_lo // [88] *((const byte*) DTV_PLANEB_MODULO_LO) ← (byte~) gfx_mode::$45 -- _deref_pbuc1=vbuaa sta DTV_PLANEB_MODULO_LO @@ -30173,8 +29935,8 @@ gfx_mode: { lda #3^VIC_SCREEN0/$4000 sta CIA2_PORT_A // get_vic_screen(*form_vic_screen) - // [92] (byte) get_vic_screen::idx#0 ← *((const byte[]) form_fields_val+(byte) $18) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$18 + // [92] (byte) get_vic_screen::idx#0 ← *((const byte*) form_vic_screen) -- vbuaa=_deref_pbuc1 + lda form_vic_screen // [93] call get_vic_screen // [220] phi from gfx_mode::@28 to get_vic_screen [phi:gfx_mode::@28->get_vic_screen] // [220] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#0 [phi:gfx_mode::@28->get_vic_screen#0] -- register_copy @@ -30204,8 +29966,8 @@ gfx_mode: { lda.z __53 sta.z __54 // get_vic_charset(*form_vic_gfx) - // [99] (byte) get_vic_charset::idx#0 ← *((const byte[]) form_fields_val+(byte) $19) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$19 + // [99] (byte) get_vic_charset::idx#0 ← *((const byte*) form_vic_gfx) -- vbuaa=_deref_pbuc1 + lda form_vic_gfx // [100] call get_vic_charset jsr get_vic_charset // [101] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::return#2 @@ -30234,8 +29996,8 @@ gfx_mode: { // VIC memory sta VIC_MEMORY // get_vic_screen(*form_vic_cols) - // [108] (byte) get_vic_screen::idx#1 ← *((const byte[]) form_fields_val+(byte) $1a) -- vbuaa=_deref_pbuc1 - lda form_fields_val+$1a + // [108] (byte) get_vic_screen::idx#1 ← *((const byte*) form_vic_cols) -- vbuaa=_deref_pbuc1 + lda form_vic_cols // [109] call get_vic_screen // [220] phi from gfx_mode::@30 to get_vic_screen [phi:gfx_mode::@30->get_vic_screen] // [220] phi (byte) get_vic_screen::idx#2 = (byte) get_vic_screen::idx#1 [phi:gfx_mode::@30->get_vic_screen#0] -- register_copy @@ -30309,61 +30071,61 @@ gfx_mode: { lda #0 sta BORDERCOL // *form_vic_bg0_hi*$10 - // [122] (byte~) gfx_mode::$62 ← *((const byte[]) form_fields_val+(byte) $1c) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$1c + // [122] (byte~) gfx_mode::$62 ← *((const byte*) form_vic_bg0_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg0_hi asl asl asl asl // *form_vic_bg0_hi*$10|*form_vic_bg0_lo - // [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte[]) form_fields_val+(byte) $1d) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$1d + // [123] (byte~) gfx_mode::$63 ← (byte~) gfx_mode::$62 | *((const byte*) form_vic_bg0_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg0_lo // *BGCOL1 = *form_vic_bg0_hi*$10|*form_vic_bg0_lo // [124] *((const byte*) BGCOL1) ← (byte~) gfx_mode::$63 -- _deref_pbuc1=vbuaa sta BGCOL1 // *form_vic_bg1_hi*$10 - // [125] (byte~) gfx_mode::$64 ← *((const byte[]) form_fields_val+(byte) $1e) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$1e + // [125] (byte~) gfx_mode::$64 ← *((const byte*) form_vic_bg1_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg1_hi asl asl asl asl // *form_vic_bg1_hi*$10|*form_vic_bg1_lo - // [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte[]) form_fields_val+(byte) $1f) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$1f + // [126] (byte~) gfx_mode::$65 ← (byte~) gfx_mode::$64 | *((const byte*) form_vic_bg1_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg1_lo // *BGCOL2 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo // [127] *((const byte*) BGCOL2) ← (byte~) gfx_mode::$65 -- _deref_pbuc1=vbuaa sta BGCOL2 // *form_vic_bg2_hi*$10 - // [128] (byte~) gfx_mode::$66 ← *((const byte[]) form_fields_val+(byte) $20) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$20 + // [128] (byte~) gfx_mode::$66 ← *((const byte*) form_vic_bg2_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg2_hi asl asl asl asl // *form_vic_bg2_hi*$10|*form_vic_bg2_lo - // [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte[]) form_fields_val+(byte) $21) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$21 + // [129] (byte~) gfx_mode::$67 ← (byte~) gfx_mode::$66 | *((const byte*) form_vic_bg2_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg2_lo // *BGCOL3 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo // [130] *((const byte*) BGCOL3) ← (byte~) gfx_mode::$67 -- _deref_pbuc1=vbuaa sta BGCOL3 // *form_vic_bg3_hi*$10 - // [131] (byte~) gfx_mode::$68 ← *((const byte[]) form_fields_val+(byte) $22) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 - lda form_fields_val+$22 + // [131] (byte~) gfx_mode::$68 ← *((const byte*) form_vic_bg3_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 + lda form_vic_bg3_hi asl asl asl asl // *form_vic_bg3_hi*$10|*form_vic_bg3_lo - // [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte[]) form_fields_val+(byte) $23) -- vbuaa=vbuaa_bor__deref_pbuc1 - ora form_fields_val+$23 + // [132] (byte~) gfx_mode::$69 ← (byte~) gfx_mode::$68 | *((const byte*) form_vic_bg3_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 + ora form_vic_bg3_lo // *BGCOL4 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo // [133] *((const byte*) BGCOL4) ← (byte~) gfx_mode::$69 -- _deref_pbuc1=vbuaa sta BGCOL4 // if(*form_dtv_palet==0) - // [134] if(*((const byte[]) form_fields_val+(byte) $1b)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 + // [134] if(*((const byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 // DTV Palette - lda form_fields_val+$1b + lda form_dtv_palet cmp #0 beq b4 // [135] phi from gfx_mode::@22 to gfx_mode::@23 [phi:gfx_mode::@22->gfx_mode::@23] @@ -30396,7 +30158,7 @@ gfx_mode: { // keyboard_event_scan() // [141] call keyboard_event_scan // [157] phi from gfx_mode::@26 to keyboard_event_scan [phi:gfx_mode::@26->keyboard_event_scan] - // [157] phi (byte) keyboard_events_size#99 = (byte) keyboard_events_size#24 [phi:gfx_mode::@26->keyboard_event_scan#0] -- register_copy + // [157] phi (byte) keyboard_events_size#98 = (byte) keyboard_events_size#24 [phi:gfx_mode::@26->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan // [142] phi from gfx_mode::@26 to gfx_mode::@32 [phi:gfx_mode::@26->gfx_mode::@32] // gfx_mode::@32 @@ -30479,14 +30241,14 @@ keyboard_event_scan: { .label keycode = $d .label row = $a // [158] phi from keyboard_event_scan to keyboard_event_scan::@7 [phi:keyboard_event_scan->keyboard_event_scan::@7] - // [158] phi (byte) keyboard_events_size#109 = (byte) keyboard_events_size#99 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy + // [158] phi (byte) keyboard_events_size#107 = (byte) keyboard_events_size#98 [phi:keyboard_event_scan->keyboard_event_scan::@7#0] -- register_copy // [158] phi (byte) keyboard_event_scan::keycode#11 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#1] -- vbuz1=vbuc1 lda #0 sta.z keycode // [158] phi (byte) keyboard_event_scan::row#2 = (byte) 0 [phi:keyboard_event_scan->keyboard_event_scan::@7#2] -- vbuz1=vbuc1 sta.z row // [158] phi from keyboard_event_scan::@8 to keyboard_event_scan::@7 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7] - // [158] phi (byte) keyboard_events_size#109 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy + // [158] phi (byte) keyboard_events_size#107 = (byte) keyboard_events_size#100 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#0] -- register_copy // [158] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#13 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#1] -- register_copy // [158] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@7#2] -- register_copy // keyboard_event_scan::@7 @@ -30513,7 +30275,7 @@ keyboard_event_scan: { axs #-[8] stx.z keycode // [165] phi from keyboard_event_scan::@15 keyboard_event_scan::@16 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8] - // [165] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#108 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy + // [165] phi (byte) keyboard_events_size#100 = (byte) keyboard_events_size#106 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#0] -- register_copy // [165] phi (byte) keyboard_event_scan::keycode#13 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@15/keyboard_event_scan::@16->keyboard_event_scan::@8#1] -- register_copy // keyboard_event_scan::@8 __b8: @@ -30633,12 +30395,12 @@ keyboard_event_scan: { rts // Something has changed on the keyboard row - check each column // [194] phi from keyboard_event_scan::@10 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9] - // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#108 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy + // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#106 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#0] -- register_copy // [194] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#1] -- register_copy // [194] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@10->keyboard_event_scan::@9#2] -- register_copy // [194] phi from keyboard_event_scan::@19 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9] b3: - // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#109 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy + // [194] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#107 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#0] -- register_copy // [194] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#1] -- register_copy // [194] phi (byte) keyboard_event_scan::col#2 = (byte) 0 [phi:keyboard_event_scan::@19->keyboard_event_scan::@9#2] -- vbuxx=vbuc1 ldx #0 @@ -30682,7 +30444,7 @@ keyboard_event_scan: { // [202] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#18 -- vbuz1=_inc_vbuz1 inc.z keyboard_events_size // [203] phi from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10] - // [203] phi (byte) keyboard_events_size#108 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy + // [203] phi (byte) keyboard_events_size#106 = (byte) keyboard_events_size#1 [phi:keyboard_event_scan::@11/keyboard_event_scan::@12/keyboard_event_scan::@14/keyboard_event_scan::@9->keyboard_event_scan::@10#0] -- register_copy // keyboard_event_scan::@10 __b10: // keycode++; @@ -31910,7 +31672,7 @@ form_control: { // keyboard_event_scan() // [369] call keyboard_event_scan // [157] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan] - // [157] phi (byte) keyboard_events_size#99 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy + // [157] phi (byte) keyboard_events_size#98 = (byte) keyboard_events_size#47 [phi:form_control::@3->keyboard_event_scan#0] -- register_copy jsr keyboard_event_scan // [370] phi from form_control::@3 to form_control::@19 [phi:form_control::@3->form_control::@19] // form_control::@19 @@ -32134,14 +31896,14 @@ form_set_screen: { // print_str_lines(byte* zeropage(6) str) print_str_lines: { .label str = 6 - // [413] (byte*~) print_char_cursor#71 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 + // [413] (byte*~) print_char_cursor#68 ← (byte*) print_set_screen::screen#2 -- pbuz1=pbuz2 lda.z print_set_screen.screen sta.z print_char_cursor lda.z print_set_screen.screen+1 sta.z print_char_cursor+1 // [414] phi from print_str_lines print_str_lines::@6 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1] // [414] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#0] -- register_copy - // [414] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#71 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#1] -- register_copy + // [414] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#68 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#1] -- register_copy // [414] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@6->print_str_lines::@1#2] -- register_copy // print_str_lines::@1 __b1: @@ -32199,7 +31961,7 @@ print_str_lines: { // [428] phi from print_str_lines::@5 to print_ln [phi:print_str_lines::@5->print_ln] jsr print_ln // print_str_lines::@6 - // [427] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 + // [427] (byte*~) print_char_cursor#69 ← (byte*) print_line_cursor#22 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -34446,28 +34208,18 @@ keyboard_init: { rts } // File Data + // Default vallues for the palette + DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a print_hextab: .text "0123456789abcdef" + // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) + keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f + // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) + keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 // Charset ROM FORM_TEXT: .text " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @" .byte 0 FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" .byte 0 - // Default vallues for the palette - DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a - // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) - keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f - // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) - keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // Tables for the plotter - initialized by calling bitmap_draw_init(); - bitmap_plot_xlo: .fill $100, 0 - bitmap_plot_xhi: .fill $100, 0 - bitmap_plot_ylo: .fill $100, 0 - bitmap_plot_yhi: .fill $100, 0 - bitmap_plot_bit: .fill $100, 0 // Form fields x/y-positions form_fields_x: .byte 8, $c, $c, $c, $c, $c, $c, $c, $c, $c, $19, $18, $19, $18, $19, $18, $19, $19, $18, $19, $18, $19, $18, $19, $25, $25, $25, $25, $24, $25, $24, $25, $24, $25, $24, $25 form_fields_y: .byte 2, 5, 6, 7, 8, 9, $a, $b, $c, $d, 5, 6, 6, 7, 7, 8, 8, $b, $c, $c, $d, $d, $e, $e, 5, 6, 7, $a, $b, $b, $c, $c, $d, $d, $e, $e @@ -34497,6 +34249,16 @@ keyboard_init: { preset_sixsfred2: .byte 9, 1, 1, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, $a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 // Preset: 8bpp Pixel Cell preset_8bpppixelcell: .byte $a, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, $b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // Tables for the plotter - initialized by calling bitmap_draw_init(); + bitmap_plot_xlo: .fill $100, 0 + bitmap_plot_xhi: .fill $100, 0 + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 // Table with addresses of the y-lines of the form. The first line contains the address of the form screen. form_line_lo: .fill $19, 0 form_line_hi: .fill $19, 0 diff --git a/src/test/ref/c64dtv-gfxexplorer.sym b/src/test/ref/c64dtv-gfxexplorer.sym index f3bc5e392..d39dd61d8 100644 --- a/src/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/ref/c64dtv-gfxexplorer.sym @@ -378,6 +378,20 @@ (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 202.0 (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 4.0 (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 105.0 +(const byte*) form_a_mod_hi = (const byte[]) form_fields_val+(byte) $f +(const byte*) form_a_mod_lo = (const byte[]) form_fields_val+(byte) $10 +(const byte*) form_a_pattern = (const byte[]) form_fields_val+(byte) $a +(const byte*) form_a_start_hi = (const byte[]) form_fields_val+(byte) $b +(const byte*) form_a_start_lo = (const byte[]) form_fields_val+(byte) $c +(const byte*) form_a_step_hi = (const byte[]) form_fields_val+(byte) $d +(const byte*) form_a_step_lo = (const byte[]) form_fields_val+(byte) $e +(const byte*) form_b_mod_hi = (const byte[]) form_fields_val+(byte) $16 +(const byte*) form_b_mod_lo = (const byte[]) form_fields_val+(byte) $17 +(const byte*) form_b_pattern = (const byte[]) form_fields_val+(byte) $11 +(const byte*) form_b_start_hi = (const byte[]) form_fields_val+(byte) $12 +(const byte*) form_b_start_lo = (const byte[]) form_fields_val+(byte) $13 +(const byte*) form_b_step_hi = (const byte[]) form_fields_val+(byte) $14 +(const byte*) form_b_step_lo = (const byte[]) form_fields_val+(byte) $15 (byte()) form_control() (byte~) form_control::$12 reg byte a 4.0 (byte~) form_control::$13 reg byte a 4.0 @@ -414,12 +428,22 @@ (byte) form_control::return (byte) form_control::return#0 reg byte a 2002.0 (byte) form_control::return#2 reg byte x 333.6666666666667 +(const byte*) form_ctrl_bmm = (const byte[]) form_fields_val+(byte) 1 +(const byte*) form_ctrl_borof = (const byte[]) form_fields_val+(byte) 8 +(const byte*) form_ctrl_chunk = (const byte[]) form_fields_val+(byte) 7 +(const byte*) form_ctrl_colof = (const byte[]) form_fields_val+(byte) 6 +(const byte*) form_ctrl_ecm = (const byte[]) form_fields_val+(byte) 3 +(const byte*) form_ctrl_hicol = (const byte[]) form_fields_val+(byte) 4 +(const byte*) form_ctrl_line = (const byte[]) form_fields_val+(byte) 5 +(const byte*) form_ctrl_mcm = (const byte[]) form_fields_val+(byte) 2 +(const byte*) form_ctrl_overs = (const byte[]) form_fields_val+(byte) 9 (signed byte) form_cursor_count (signed byte) form_cursor_count#1 form_cursor_count zp[1]:16 0.3333333333333333 (signed byte) form_cursor_count#15 form_cursor_count zp[1]:16 0.4 (signed byte) form_cursor_count#16 form_cursor_count zp[1]:16 65.82352941176472 (signed byte) form_cursor_count#21 form_cursor_count zp[1]:16 221.2 (signed byte) form_cursor_count#5 form_cursor_count zp[1]:16 2.0 +(const byte*) form_dtv_palet = (const byte[]) form_fields_val+(byte) $1b (byte) form_field_idx (byte) form_field_idx#1 form_field_idx zp[1]:9 0.3333333333333333 (byte) form_field_idx#18 form_field_idx zp[1]:9 65.94117647058826 @@ -498,6 +522,17 @@ (byte) form_set_screen::y (byte) form_set_screen::y#1 reg byte x 151.5 (byte) form_set_screen::y#2 reg byte x 67.33333333333333 +(const byte*) form_vic_bg0_hi = (const byte[]) form_fields_val+(byte) $1c +(const byte*) form_vic_bg0_lo = (const byte[]) form_fields_val+(byte) $1d +(const byte*) form_vic_bg1_hi = (const byte[]) form_fields_val+(byte) $1e +(const byte*) form_vic_bg1_lo = (const byte[]) form_fields_val+(byte) $1f +(const byte*) form_vic_bg2_hi = (const byte[]) form_fields_val+(byte) $20 +(const byte*) form_vic_bg2_lo = (const byte[]) form_fields_val+(byte) $21 +(const byte*) form_vic_bg3_hi = (const byte[]) form_fields_val+(byte) $22 +(const byte*) form_vic_bg3_lo = (const byte[]) form_fields_val+(byte) $23 +(const byte*) form_vic_cols = (const byte[]) form_fields_val+(byte) $1a +(const byte*) form_vic_gfx = (const byte[]) form_fields_val+(byte) $19 +(const byte*) form_vic_screen = (const byte[]) form_fields_val+(byte) $18 (dword()) get_plane((byte) get_plane::idx) (label) get_plane::@1 (label) get_plane::@10 @@ -1054,15 +1089,15 @@ (byte) keyboard_events_size (byte) keyboard_events_size#1 keyboard_events_size zp[1]:8 200002.0 (byte) keyboard_events_size#100 keyboard_events_size zp[1]:8 882.6176470588235 -(byte) keyboard_events_size#108 keyboard_events_size zp[1]:8 102001.2 -(byte) keyboard_events_size#109 keyboard_events_size zp[1]:8 4286.428571428572 +(byte) keyboard_events_size#106 keyboard_events_size zp[1]:8 102001.2 +(byte) keyboard_events_size#107 keyboard_events_size zp[1]:8 4286.428571428572 (byte) keyboard_events_size#18 keyboard_events_size zp[1]:8 81000.90000000001 (byte) keyboard_events_size#2 keyboard_events_size zp[1]:8 200002.0 (byte) keyboard_events_size#24 keyboard_events_size zp[1]:8 6.766666666666667 (byte) keyboard_events_size#27 keyboard_events_size zp[1]:8 0.3333333333333333 (byte) keyboard_events_size#4 keyboard_events_size zp[1]:8 3.0 (byte) keyboard_events_size#47 keyboard_events_size zp[1]:8 73.73333333333335 -(byte) keyboard_events_size#99 keyboard_events_size zp[1]:8 105.0 +(byte) keyboard_events_size#98 keyboard_events_size zp[1]:8 105.0 (void()) keyboard_init() (label) keyboard_init::@return (const byte[8]) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } @@ -1123,8 +1158,8 @@ (byte*) print_char_cursor#20 print_char_cursor zp[2]:11 821.0 (byte*) print_char_cursor#22 print_char_cursor zp[2]:11 102.0 (byte*) print_char_cursor#38 print_char_cursor zp[2]:11 572.0 -(byte*~) print_char_cursor#71 print_char_cursor zp[2]:11 4.0 -(byte*~) print_char_cursor#72 print_char_cursor zp[2]:11 202.0 +(byte*~) print_char_cursor#68 print_char_cursor zp[2]:11 4.0 +(byte*~) print_char_cursor#69 print_char_cursor zp[2]:11 202.0 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -1226,7 +1261,7 @@ zp[2]:6 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 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 ] -zp[1]:8 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#109 keyboard_events_size#99 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#108 keyboard_events_size#1 keyboard_events_size#2 ] +zp[1]:8 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 gfx_init_plane_fill::fill#6 keyboard_events_size#18 keyboard_events_size#107 keyboard_events_size#98 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#106 keyboard_events_size#1 keyboard_events_size#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[1]:9 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 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 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#31 form_field_idx#6 form_field_idx#5 ] @@ -1237,7 +1272,7 @@ 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 ] -zp[2]:11 [ 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 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#71 print_char_cursor#72 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] +zp[2]:11 [ 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 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#68 print_char_cursor#69 print_char_cursor#38 print_char_cursor#1 print_str_at::at#2 print_str_at::at#0 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp[1]:13 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_charset::c#4 gfx_init_charset::c#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 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 bitmap_line::y0#0 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 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 keyboard_event_pressed::keycode#4 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp[2]:14 [ 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_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 print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 apply_preset::preset#15 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$56 gfx_mode::$57 ] diff --git a/src/test/ref/c64dtv-gfxmodes.asm b/src/test/ref/c64dtv-gfxmodes.asm index 057310678..687baf04a 100644 --- a/src/test/ref/c64dtv-gfxmodes.asm +++ b/src/test/ref/c64dtv-gfxmodes.asm @@ -2337,14 +2337,14 @@ memset: { print_set_screen: { rts } - MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" - .byte 0 // Default vallues for the palette DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 + MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" + .byte 0 // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/c64dtv-gfxmodes.cfg b/src/test/ref/c64dtv-gfxmodes.cfg index 5d07c49ac..c63886aea 100644 --- a/src/test/ref/c64dtv-gfxmodes.cfg +++ b/src/test/ref/c64dtv-gfxmodes.cfg @@ -1559,7 +1559,7 @@ print_str_lines: scope:[print_str_lines] from menu::@30 to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@6 [865] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN print_str_lines::@6/(byte*) print_line_cursor#19 ) - [865] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN print_str_lines::@6/(byte*~) print_char_cursor#99 ) + [865] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN print_str_lines::@6/(byte*~) print_char_cursor#98 ) [865] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT print_str_lines::@6/(byte*) print_str_lines::str#0 ) [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 to:print_str_lines::@return @@ -1586,7 +1586,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3 [877] call print_ln to:print_str_lines::@6 print_str_lines::@6: scope:[print_str_lines] from print_str_lines::@5 - [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 + [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 to:print_str_lines::@1 (void()) print_ln() diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log index 21f052677..e1fffde03 100644 --- a/src/test/ref/c64dtv-gfxmodes.log +++ b/src/test/ref/c64dtv-gfxmodes.log @@ -18,6 +18,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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 @@ -63,6 +64,7 @@ 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) keyboard_matrix_read::@1 Culled Empty Block (label) @43 @@ -155,9 +157,6 @@ Culled Empty Block (label) @70 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[$10]) DTV_PALETTE_DEFAULT ← { (number) 0, (number) $f, (number) $36, (number) $be, (number) $58, (number) $db, (number) $86, (number) $ff, (number) $29, (number) $26, (number) $3b, (number) 5, (number) 7, (number) $df, (number) $9a, (number) $a } to:@17 (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) @@ -213,11 +212,11 @@ memset::@return: scope:[memset] from memset::@1 (void*) memset::return#1 ← (void*) memset::return#3 return to:@return -@17: scope:[] from @4 +@17: 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:@41 + to:@48 (void()) print_str_lines((byte*) print_str_lines::str) print_str_lines: scope:[print_str_lines] from menu::@52 @@ -342,18 +341,11 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#23 return to:@return -@41: scope:[] from @17 - (byte*) print_char_cursor#85 ← phi( @17/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#85 ← phi( @17/(byte*) print_line_cursor#0 ) - (byte*) print_screen#66 ← phi( @17/(byte*) print_screen#0 ) - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } - to:@48 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -379,7 +371,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 ) (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4 - (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) + (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3 to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2 @@ -387,10 +379,10 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#22 return to:@return -@48: scope:[] from @41 - (byte*) print_char_cursor#84 ← phi( @41/(byte*) print_char_cursor#85 ) - (byte*) print_line_cursor#84 ← phi( @41/(byte*) print_line_cursor#85 ) - (byte*) print_screen#65 ← phi( @41/(byte*) print_screen#66 ) +@48: scope:[] from @17 + (byte*) print_char_cursor#84 ← phi( @17/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#84 ← phi( @17/(byte*) print_line_cursor#0 ) + (byte*) print_screen#65 ← phi( @17/(byte*) print_screen#0 ) (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } @@ -1008,9 +1000,9 @@ main::@return: scope:[main] from main::@1 (void()) menu() menu: scope:[menu] from main::@2 (byte) dtv_control#254 ← phi( main::@2/(byte) dtv_control#98 ) - (byte*) print_char_cursor#98 ← phi( main::@2/(byte*) print_char_cursor#35 ) - (byte*) print_line_cursor#98 ← phi( main::@2/(byte*) print_line_cursor#33 ) - (byte*) print_screen#79 ← phi( main::@2/(byte*) print_screen#16 ) + (byte*) print_char_cursor#97 ← phi( main::@2/(byte*) print_char_cursor#35 ) + (byte*) print_line_cursor#97 ← phi( main::@2/(byte*) print_line_cursor#33 ) + (byte*) print_screen#78 ← phi( main::@2/(byte*) print_screen#16 ) (dword~) menu::$0 ← ((dword)) (const byte*) menu::CHARSET (number~) menu::$1 ← (dword~) menu::$0 / (number) $10000 (byte~) menu::$2 ← ((byte)) (number~) menu::$1 @@ -1043,20 +1035,20 @@ menu: scope:[menu] from main::@2 to:menu::@1 menu::@1: scope:[menu] from menu menu::@1 (byte) dtv_control#245 ← phi( menu/(byte) dtv_control#254 menu::@1/(byte) dtv_control#245 ) - (byte*) print_char_cursor#86 ← phi( menu/(byte*) print_char_cursor#98 menu::@1/(byte*) print_char_cursor#86 ) - (byte*) print_line_cursor#86 ← phi( menu/(byte*) print_line_cursor#98 menu::@1/(byte*) print_line_cursor#86 ) - (byte*) print_screen#67 ← phi( menu/(byte*) print_screen#79 menu::@1/(byte*) print_screen#67 ) + (byte*) print_char_cursor#85 ← phi( menu/(byte*) print_char_cursor#97 menu::@1/(byte*) print_char_cursor#85 ) + (byte*) print_line_cursor#85 ← phi( menu/(byte*) print_line_cursor#97 menu::@1/(byte*) print_line_cursor#85 ) + (byte*) print_screen#66 ← phi( menu/(byte*) print_screen#78 menu::@1/(byte*) print_screen#66 ) (byte) menu::i#2 ← phi( menu/(byte) menu::i#0 menu::@1/(byte) menu::i#1 ) - *((const byte*) DTV_PALETTE + (byte) menu::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) menu::i#2) + *((const byte*) DTV_PALETTE + (byte) menu::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) menu::i#2) (byte) menu::i#1 ← (byte) menu::i#2 + rangenext(0,$f) (bool~) menu::$22 ← (byte) menu::i#1 != rangelast(0,$f) if((bool~) menu::$22) goto menu::@1 to:menu::@2 menu::@2: scope:[menu] from menu::@1 (byte) dtv_control#235 ← phi( menu::@1/(byte) dtv_control#245 ) - (byte*) print_char_cursor#70 ← phi( menu::@1/(byte*) print_char_cursor#86 ) - (byte*) print_line_cursor#70 ← phi( menu::@1/(byte*) print_line_cursor#86 ) - (byte*) print_screen#50 ← phi( menu::@1/(byte*) print_screen#67 ) + (byte*) print_char_cursor#70 ← phi( menu::@1/(byte*) print_char_cursor#85 ) + (byte*) print_line_cursor#70 ← phi( menu::@1/(byte*) print_line_cursor#85 ) + (byte*) print_screen#50 ← phi( menu::@1/(byte*) print_screen#66 ) (byte*) menu::c#0 ← (const byte*) COLS to:menu::@3 menu::@3: scope:[menu] from menu::@2 menu::@4 @@ -1123,18 +1115,18 @@ menu::@9: scope:[menu] from menu::@53 menu::@75 if(true) goto menu::@10 to:menu::@return menu::@10: scope:[menu] from menu::@9 - (byte*) print_char_cursor#87 ← phi( menu::@9/(byte*) print_char_cursor#50 ) - (byte*) print_line_cursor#87 ← phi( menu::@9/(byte*) print_line_cursor#48 ) - (byte*) print_screen#68 ← phi( menu::@9/(byte*) print_screen#31 ) + (byte*) print_char_cursor#86 ← phi( menu::@9/(byte*) print_char_cursor#50 ) + (byte*) print_line_cursor#86 ← phi( menu::@9/(byte*) print_line_cursor#48 ) + (byte*) print_screen#67 ← phi( menu::@9/(byte*) print_screen#31 ) (byte) dtv_control#160 ← phi( menu::@9/(byte) dtv_control#101 ) (byte) keyboard_key_pressed::key#0 ← (const byte) KEY_1 call keyboard_key_pressed (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#1 to:menu::@54 menu::@54: scope:[menu] from menu::@10 - (byte*) print_char_cursor#72 ← phi( menu::@10/(byte*) print_char_cursor#87 ) - (byte*) print_line_cursor#72 ← phi( menu::@10/(byte*) print_line_cursor#87 ) - (byte*) print_screen#53 ← phi( menu::@10/(byte*) print_screen#68 ) + (byte*) print_char_cursor#72 ← phi( menu::@10/(byte*) print_char_cursor#86 ) + (byte*) print_line_cursor#72 ← phi( menu::@10/(byte*) print_line_cursor#86 ) + (byte*) print_screen#53 ← phi( menu::@10/(byte*) print_screen#67 ) (byte) dtv_control#133 ← phi( menu::@10/(byte) dtv_control#160 ) (byte) keyboard_key_pressed::return#23 ← phi( menu::@10/(byte) keyboard_key_pressed::return#2 ) (byte~) menu::$24 ← (byte) keyboard_key_pressed::return#23 @@ -1143,18 +1135,18 @@ menu::@54: scope:[menu] from menu::@10 if((bool~) menu::$26) goto menu::@12 to:menu::@26 menu::@12: scope:[menu] from menu::@54 - (byte*) print_char_cursor#88 ← phi( menu::@54/(byte*) print_char_cursor#72 ) - (byte*) print_line_cursor#88 ← phi( menu::@54/(byte*) print_line_cursor#72 ) - (byte*) print_screen#69 ← phi( menu::@54/(byte*) print_screen#53 ) + (byte*) print_char_cursor#87 ← phi( menu::@54/(byte*) print_char_cursor#72 ) + (byte*) print_line_cursor#87 ← phi( menu::@54/(byte*) print_line_cursor#72 ) + (byte*) print_screen#68 ← phi( menu::@54/(byte*) print_screen#53 ) (byte) dtv_control#161 ← phi( menu::@54/(byte) dtv_control#133 ) (byte) keyboard_key_pressed::key#1 ← (const byte) KEY_2 call keyboard_key_pressed (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#1 to:menu::@55 menu::@55: scope:[menu] from menu::@12 - (byte*) print_char_cursor#73 ← phi( menu::@12/(byte*) print_char_cursor#88 ) - (byte*) print_line_cursor#73 ← phi( menu::@12/(byte*) print_line_cursor#88 ) - (byte*) print_screen#54 ← phi( menu::@12/(byte*) print_screen#69 ) + (byte*) print_char_cursor#73 ← phi( menu::@12/(byte*) print_char_cursor#87 ) + (byte*) print_line_cursor#73 ← phi( menu::@12/(byte*) print_line_cursor#87 ) + (byte*) print_screen#54 ← phi( menu::@12/(byte*) print_screen#68 ) (byte) dtv_control#134 ← phi( menu::@12/(byte) dtv_control#161 ) (byte) keyboard_key_pressed::return#24 ← phi( menu::@12/(byte) keyboard_key_pressed::return#3 ) (byte~) menu::$28 ← (byte) keyboard_key_pressed::return#24 @@ -1188,18 +1180,18 @@ menu::@return: scope:[menu] from menu::@56 menu::@58 menu::@60 menu::@62 menu:: return to:@return menu::@13: scope:[menu] from menu::@55 - (byte*) print_char_cursor#89 ← phi( menu::@55/(byte*) print_char_cursor#73 ) - (byte*) print_line_cursor#89 ← phi( menu::@55/(byte*) print_line_cursor#73 ) - (byte*) print_screen#70 ← phi( menu::@55/(byte*) print_screen#54 ) + (byte*) print_char_cursor#88 ← phi( menu::@55/(byte*) print_char_cursor#73 ) + (byte*) print_line_cursor#88 ← phi( menu::@55/(byte*) print_line_cursor#73 ) + (byte*) print_screen#69 ← phi( menu::@55/(byte*) print_screen#54 ) (byte) dtv_control#162 ← phi( menu::@55/(byte) dtv_control#134 ) (byte) keyboard_key_pressed::key#2 ← (const byte) KEY_3 call keyboard_key_pressed (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#1 to:menu::@57 menu::@57: scope:[menu] from menu::@13 - (byte*) print_char_cursor#74 ← phi( menu::@13/(byte*) print_char_cursor#89 ) - (byte*) print_line_cursor#74 ← phi( menu::@13/(byte*) print_line_cursor#89 ) - (byte*) print_screen#55 ← phi( menu::@13/(byte*) print_screen#70 ) + (byte*) print_char_cursor#74 ← phi( menu::@13/(byte*) print_char_cursor#88 ) + (byte*) print_line_cursor#74 ← phi( menu::@13/(byte*) print_line_cursor#88 ) + (byte*) print_screen#55 ← phi( menu::@13/(byte*) print_screen#69 ) (byte) dtv_control#135 ← phi( menu::@13/(byte) dtv_control#162 ) (byte) keyboard_key_pressed::return#25 ← phi( menu::@13/(byte) keyboard_key_pressed::return#4 ) (byte~) menu::$32 ← (byte) keyboard_key_pressed::return#25 @@ -1222,18 +1214,18 @@ menu::@58: scope:[menu] from menu::@28 (byte) dtv_control#4 ← (byte) dtv_control#59 to:menu::@return menu::@14: scope:[menu] from menu::@57 - (byte*) print_char_cursor#90 ← phi( menu::@57/(byte*) print_char_cursor#74 ) - (byte*) print_line_cursor#90 ← phi( menu::@57/(byte*) print_line_cursor#74 ) - (byte*) print_screen#71 ← phi( menu::@57/(byte*) print_screen#55 ) + (byte*) print_char_cursor#89 ← phi( menu::@57/(byte*) print_char_cursor#74 ) + (byte*) print_line_cursor#89 ← phi( menu::@57/(byte*) print_line_cursor#74 ) + (byte*) print_screen#70 ← phi( menu::@57/(byte*) print_screen#55 ) (byte) dtv_control#163 ← phi( menu::@57/(byte) dtv_control#135 ) (byte) keyboard_key_pressed::key#3 ← (const byte) KEY_4 call keyboard_key_pressed (byte) keyboard_key_pressed::return#5 ← (byte) keyboard_key_pressed::return#1 to:menu::@59 menu::@59: scope:[menu] from menu::@14 - (byte*) print_char_cursor#75 ← phi( menu::@14/(byte*) print_char_cursor#90 ) - (byte*) print_line_cursor#75 ← phi( menu::@14/(byte*) print_line_cursor#90 ) - (byte*) print_screen#56 ← phi( menu::@14/(byte*) print_screen#71 ) + (byte*) print_char_cursor#75 ← phi( menu::@14/(byte*) print_char_cursor#89 ) + (byte*) print_line_cursor#75 ← phi( menu::@14/(byte*) print_line_cursor#89 ) + (byte*) print_screen#56 ← phi( menu::@14/(byte*) print_screen#70 ) (byte) dtv_control#136 ← phi( menu::@14/(byte) dtv_control#163 ) (byte) keyboard_key_pressed::return#26 ← phi( menu::@14/(byte) keyboard_key_pressed::return#5 ) (byte~) menu::$36 ← (byte) keyboard_key_pressed::return#26 @@ -1256,18 +1248,18 @@ menu::@60: scope:[menu] from menu::@30 (byte) dtv_control#5 ← (byte) dtv_control#60 to:menu::@return menu::@15: scope:[menu] from menu::@59 - (byte*) print_char_cursor#91 ← phi( menu::@59/(byte*) print_char_cursor#75 ) - (byte*) print_line_cursor#91 ← phi( menu::@59/(byte*) print_line_cursor#75 ) - (byte*) print_screen#72 ← phi( menu::@59/(byte*) print_screen#56 ) + (byte*) print_char_cursor#90 ← phi( menu::@59/(byte*) print_char_cursor#75 ) + (byte*) print_line_cursor#90 ← phi( menu::@59/(byte*) print_line_cursor#75 ) + (byte*) print_screen#71 ← phi( menu::@59/(byte*) print_screen#56 ) (byte) dtv_control#164 ← phi( menu::@59/(byte) dtv_control#136 ) (byte) keyboard_key_pressed::key#4 ← (const byte) KEY_6 call keyboard_key_pressed (byte) keyboard_key_pressed::return#6 ← (byte) keyboard_key_pressed::return#1 to:menu::@61 menu::@61: scope:[menu] from menu::@15 - (byte*) print_char_cursor#76 ← phi( menu::@15/(byte*) print_char_cursor#91 ) - (byte*) print_line_cursor#76 ← phi( menu::@15/(byte*) print_line_cursor#91 ) - (byte*) print_screen#57 ← phi( menu::@15/(byte*) print_screen#72 ) + (byte*) print_char_cursor#76 ← phi( menu::@15/(byte*) print_char_cursor#90 ) + (byte*) print_line_cursor#76 ← phi( menu::@15/(byte*) print_line_cursor#90 ) + (byte*) print_screen#57 ← phi( menu::@15/(byte*) print_screen#71 ) (byte) dtv_control#137 ← phi( menu::@15/(byte) dtv_control#164 ) (byte) keyboard_key_pressed::return#27 ← phi( menu::@15/(byte) keyboard_key_pressed::return#6 ) (byte~) menu::$40 ← (byte) keyboard_key_pressed::return#27 @@ -1290,18 +1282,18 @@ menu::@62: scope:[menu] from menu::@32 (byte) dtv_control#6 ← (byte) dtv_control#61 to:menu::@return menu::@16: scope:[menu] from menu::@61 - (byte*) print_char_cursor#92 ← phi( menu::@61/(byte*) print_char_cursor#76 ) - (byte*) print_line_cursor#92 ← phi( menu::@61/(byte*) print_line_cursor#76 ) - (byte*) print_screen#73 ← phi( menu::@61/(byte*) print_screen#57 ) + (byte*) print_char_cursor#91 ← phi( menu::@61/(byte*) print_char_cursor#76 ) + (byte*) print_line_cursor#91 ← phi( menu::@61/(byte*) print_line_cursor#76 ) + (byte*) print_screen#72 ← phi( menu::@61/(byte*) print_screen#57 ) (byte) dtv_control#165 ← phi( menu::@61/(byte) dtv_control#137 ) (byte) keyboard_key_pressed::key#5 ← (const byte) KEY_7 call keyboard_key_pressed (byte) keyboard_key_pressed::return#7 ← (byte) keyboard_key_pressed::return#1 to:menu::@63 menu::@63: scope:[menu] from menu::@16 - (byte*) print_char_cursor#77 ← phi( menu::@16/(byte*) print_char_cursor#92 ) - (byte*) print_line_cursor#77 ← phi( menu::@16/(byte*) print_line_cursor#92 ) - (byte*) print_screen#58 ← phi( menu::@16/(byte*) print_screen#73 ) + (byte*) print_char_cursor#77 ← phi( menu::@16/(byte*) print_char_cursor#91 ) + (byte*) print_line_cursor#77 ← phi( menu::@16/(byte*) print_line_cursor#91 ) + (byte*) print_screen#58 ← phi( menu::@16/(byte*) print_screen#72 ) (byte) dtv_control#138 ← phi( menu::@16/(byte) dtv_control#165 ) (byte) keyboard_key_pressed::return#28 ← phi( menu::@16/(byte) keyboard_key_pressed::return#7 ) (byte~) menu::$44 ← (byte) keyboard_key_pressed::return#28 @@ -1324,18 +1316,18 @@ menu::@64: scope:[menu] from menu::@34 (byte) dtv_control#7 ← (byte) dtv_control#62 to:menu::@return menu::@17: scope:[menu] from menu::@63 - (byte*) print_char_cursor#93 ← phi( menu::@63/(byte*) print_char_cursor#77 ) - (byte*) print_line_cursor#93 ← phi( menu::@63/(byte*) print_line_cursor#77 ) - (byte*) print_screen#74 ← phi( menu::@63/(byte*) print_screen#58 ) + (byte*) print_char_cursor#92 ← phi( menu::@63/(byte*) print_char_cursor#77 ) + (byte*) print_line_cursor#92 ← phi( menu::@63/(byte*) print_line_cursor#77 ) + (byte*) print_screen#73 ← phi( menu::@63/(byte*) print_screen#58 ) (byte) dtv_control#166 ← phi( menu::@63/(byte) dtv_control#138 ) (byte) keyboard_key_pressed::key#6 ← (const byte) KEY_8 call keyboard_key_pressed (byte) keyboard_key_pressed::return#8 ← (byte) keyboard_key_pressed::return#1 to:menu::@65 menu::@65: scope:[menu] from menu::@17 - (byte*) print_char_cursor#78 ← phi( menu::@17/(byte*) print_char_cursor#93 ) - (byte*) print_line_cursor#78 ← phi( menu::@17/(byte*) print_line_cursor#93 ) - (byte*) print_screen#59 ← phi( menu::@17/(byte*) print_screen#74 ) + (byte*) print_char_cursor#78 ← phi( menu::@17/(byte*) print_char_cursor#92 ) + (byte*) print_line_cursor#78 ← phi( menu::@17/(byte*) print_line_cursor#92 ) + (byte*) print_screen#59 ← phi( menu::@17/(byte*) print_screen#73 ) (byte) dtv_control#139 ← phi( menu::@17/(byte) dtv_control#166 ) (byte) keyboard_key_pressed::return#29 ← phi( menu::@17/(byte) keyboard_key_pressed::return#8 ) (byte~) menu::$48 ← (byte) keyboard_key_pressed::return#29 @@ -1358,18 +1350,18 @@ menu::@66: scope:[menu] from menu::@36 (byte) dtv_control#8 ← (byte) dtv_control#63 to:menu::@return menu::@18: scope:[menu] from menu::@65 - (byte*) print_char_cursor#94 ← phi( menu::@65/(byte*) print_char_cursor#78 ) - (byte*) print_line_cursor#94 ← phi( menu::@65/(byte*) print_line_cursor#78 ) - (byte*) print_screen#75 ← phi( menu::@65/(byte*) print_screen#59 ) + (byte*) print_char_cursor#93 ← phi( menu::@65/(byte*) print_char_cursor#78 ) + (byte*) print_line_cursor#93 ← phi( menu::@65/(byte*) print_line_cursor#78 ) + (byte*) print_screen#74 ← phi( menu::@65/(byte*) print_screen#59 ) (byte) dtv_control#167 ← phi( menu::@65/(byte) dtv_control#139 ) (byte) keyboard_key_pressed::key#7 ← (const byte) KEY_A call keyboard_key_pressed (byte) keyboard_key_pressed::return#9 ← (byte) keyboard_key_pressed::return#1 to:menu::@67 menu::@67: scope:[menu] from menu::@18 - (byte*) print_char_cursor#79 ← phi( menu::@18/(byte*) print_char_cursor#94 ) - (byte*) print_line_cursor#79 ← phi( menu::@18/(byte*) print_line_cursor#94 ) - (byte*) print_screen#60 ← phi( menu::@18/(byte*) print_screen#75 ) + (byte*) print_char_cursor#79 ← phi( menu::@18/(byte*) print_char_cursor#93 ) + (byte*) print_line_cursor#79 ← phi( menu::@18/(byte*) print_line_cursor#93 ) + (byte*) print_screen#60 ← phi( menu::@18/(byte*) print_screen#74 ) (byte) dtv_control#140 ← phi( menu::@18/(byte) dtv_control#167 ) (byte) keyboard_key_pressed::return#30 ← phi( menu::@18/(byte) keyboard_key_pressed::return#9 ) (byte~) menu::$52 ← (byte) keyboard_key_pressed::return#30 @@ -1392,18 +1384,18 @@ menu::@68: scope:[menu] from menu::@38 (byte) dtv_control#9 ← (byte) dtv_control#64 to:menu::@return menu::@19: scope:[menu] from menu::@67 - (byte*) print_char_cursor#95 ← phi( menu::@67/(byte*) print_char_cursor#79 ) - (byte*) print_line_cursor#95 ← phi( menu::@67/(byte*) print_line_cursor#79 ) - (byte*) print_screen#76 ← phi( menu::@67/(byte*) print_screen#60 ) + (byte*) print_char_cursor#94 ← phi( menu::@67/(byte*) print_char_cursor#79 ) + (byte*) print_line_cursor#94 ← phi( menu::@67/(byte*) print_line_cursor#79 ) + (byte*) print_screen#75 ← phi( menu::@67/(byte*) print_screen#60 ) (byte) dtv_control#168 ← phi( menu::@67/(byte) dtv_control#140 ) (byte) keyboard_key_pressed::key#8 ← (const byte) KEY_B call keyboard_key_pressed (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#1 to:menu::@69 menu::@69: scope:[menu] from menu::@19 - (byte*) print_char_cursor#80 ← phi( menu::@19/(byte*) print_char_cursor#95 ) - (byte*) print_line_cursor#80 ← phi( menu::@19/(byte*) print_line_cursor#95 ) - (byte*) print_screen#61 ← phi( menu::@19/(byte*) print_screen#76 ) + (byte*) print_char_cursor#80 ← phi( menu::@19/(byte*) print_char_cursor#94 ) + (byte*) print_line_cursor#80 ← phi( menu::@19/(byte*) print_line_cursor#94 ) + (byte*) print_screen#61 ← phi( menu::@19/(byte*) print_screen#75 ) (byte) dtv_control#141 ← phi( menu::@19/(byte) dtv_control#168 ) (byte) keyboard_key_pressed::return#31 ← phi( menu::@19/(byte) keyboard_key_pressed::return#10 ) (byte~) menu::$56 ← (byte) keyboard_key_pressed::return#31 @@ -1426,18 +1418,18 @@ menu::@70: scope:[menu] from menu::@40 (byte) dtv_control#10 ← (byte) dtv_control#65 to:menu::@return menu::@20: scope:[menu] from menu::@69 - (byte*) print_char_cursor#96 ← phi( menu::@69/(byte*) print_char_cursor#80 ) - (byte*) print_line_cursor#96 ← phi( menu::@69/(byte*) print_line_cursor#80 ) - (byte*) print_screen#77 ← phi( menu::@69/(byte*) print_screen#61 ) + (byte*) print_char_cursor#95 ← phi( menu::@69/(byte*) print_char_cursor#80 ) + (byte*) print_line_cursor#95 ← phi( menu::@69/(byte*) print_line_cursor#80 ) + (byte*) print_screen#76 ← phi( menu::@69/(byte*) print_screen#61 ) (byte) dtv_control#169 ← phi( menu::@69/(byte) dtv_control#141 ) (byte) keyboard_key_pressed::key#9 ← (const byte) KEY_C call keyboard_key_pressed (byte) keyboard_key_pressed::return#11 ← (byte) keyboard_key_pressed::return#1 to:menu::@71 menu::@71: scope:[menu] from menu::@20 - (byte*) print_char_cursor#81 ← phi( menu::@20/(byte*) print_char_cursor#96 ) - (byte*) print_line_cursor#81 ← phi( menu::@20/(byte*) print_line_cursor#96 ) - (byte*) print_screen#62 ← phi( menu::@20/(byte*) print_screen#77 ) + (byte*) print_char_cursor#81 ← phi( menu::@20/(byte*) print_char_cursor#95 ) + (byte*) print_line_cursor#81 ← phi( menu::@20/(byte*) print_line_cursor#95 ) + (byte*) print_screen#62 ← phi( menu::@20/(byte*) print_screen#76 ) (byte) dtv_control#142 ← phi( menu::@20/(byte) dtv_control#169 ) (byte) keyboard_key_pressed::return#32 ← phi( menu::@20/(byte) keyboard_key_pressed::return#11 ) (byte~) menu::$60 ← (byte) keyboard_key_pressed::return#32 @@ -1460,18 +1452,18 @@ menu::@72: scope:[menu] from menu::@42 (byte) dtv_control#11 ← (byte) dtv_control#66 to:menu::@return menu::@21: scope:[menu] from menu::@71 - (byte*) print_char_cursor#97 ← phi( menu::@71/(byte*) print_char_cursor#81 ) - (byte*) print_line_cursor#97 ← phi( menu::@71/(byte*) print_line_cursor#81 ) - (byte*) print_screen#78 ← phi( menu::@71/(byte*) print_screen#62 ) + (byte*) print_char_cursor#96 ← phi( menu::@71/(byte*) print_char_cursor#81 ) + (byte*) print_line_cursor#96 ← phi( menu::@71/(byte*) print_line_cursor#81 ) + (byte*) print_screen#77 ← phi( menu::@71/(byte*) print_screen#62 ) (byte) dtv_control#170 ← phi( menu::@71/(byte) dtv_control#142 ) (byte) keyboard_key_pressed::key#10 ← (const byte) KEY_D call keyboard_key_pressed (byte) keyboard_key_pressed::return#12 ← (byte) keyboard_key_pressed::return#1 to:menu::@73 menu::@73: scope:[menu] from menu::@21 - (byte*) print_char_cursor#83 ← phi( menu::@21/(byte*) print_char_cursor#97 ) - (byte*) print_line_cursor#83 ← phi( menu::@21/(byte*) print_line_cursor#97 ) - (byte*) print_screen#64 ← phi( menu::@21/(byte*) print_screen#78 ) + (byte*) print_char_cursor#83 ← phi( menu::@21/(byte*) print_char_cursor#96 ) + (byte*) print_line_cursor#83 ← phi( menu::@21/(byte*) print_line_cursor#96 ) + (byte*) print_screen#64 ← phi( menu::@21/(byte*) print_screen#77 ) (byte) dtv_control#143 ← phi( menu::@21/(byte) dtv_control#170 ) (byte) keyboard_key_pressed::return#33 ← phi( menu::@21/(byte) keyboard_key_pressed::return#12 ) (byte~) menu::$64 ← (byte) keyboard_key_pressed::return#33 @@ -1782,7 +1774,7 @@ mode_stdchar: scope:[mode_stdchar] from menu::@26 mode_stdchar::@1: scope:[mode_stdchar] from mode_stdchar mode_stdchar::@1 (byte) dtv_control#222 ← phi( mode_stdchar/(byte) dtv_control#18 mode_stdchar::@1/(byte) dtv_control#222 ) (byte) mode_stdchar::i#2 ← phi( mode_stdchar/(byte) mode_stdchar::i#0 mode_stdchar::@1/(byte) mode_stdchar::i#1 ) - *((const byte*) DTV_PALETTE + (byte) mode_stdchar::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_stdchar::i#2) + *((const byte*) DTV_PALETTE + (byte) mode_stdchar::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_stdchar::i#2) (byte) mode_stdchar::i#1 ← (byte) mode_stdchar::i#2 + rangenext(0,$f) (bool~) mode_stdchar::$20 ← (byte) mode_stdchar::i#1 != rangelast(0,$f) if((bool~) mode_stdchar::$20) goto mode_stdchar::@1 @@ -1881,7 +1873,7 @@ mode_ecmchar: scope:[mode_ecmchar] from menu::@28 mode_ecmchar::@1: scope:[mode_ecmchar] from mode_ecmchar mode_ecmchar::@1 (byte) dtv_control#223 ← phi( mode_ecmchar/(byte) dtv_control#21 mode_ecmchar::@1/(byte) dtv_control#223 ) (byte) mode_ecmchar::i#2 ← phi( mode_ecmchar/(byte) mode_ecmchar::i#0 mode_ecmchar::@1/(byte) mode_ecmchar::i#1 ) - *((const byte*) DTV_PALETTE + (byte) mode_ecmchar::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_ecmchar::i#2) + *((const byte*) DTV_PALETTE + (byte) mode_ecmchar::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_ecmchar::i#2) (byte) mode_ecmchar::i#1 ← (byte) mode_ecmchar::i#2 + rangenext(0,$f) (bool~) mode_ecmchar::$20 ← (byte) mode_ecmchar::i#1 != rangelast(0,$f) if((bool~) mode_ecmchar::$20) goto mode_ecmchar::@1 @@ -1983,7 +1975,7 @@ mode_mcchar: scope:[mode_mcchar] from menu::@30 mode_mcchar::@1: scope:[mode_mcchar] from mode_mcchar mode_mcchar::@1 (byte) dtv_control#224 ← phi( mode_mcchar/(byte) dtv_control#24 mode_mcchar::@1/(byte) dtv_control#224 ) (byte) mode_mcchar::i#2 ← phi( mode_mcchar/(byte) mode_mcchar::i#0 mode_mcchar::@1/(byte) mode_mcchar::i#1 ) - *((const byte*) DTV_PALETTE + (byte) mode_mcchar::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_mcchar::i#2) + *((const byte*) DTV_PALETTE + (byte) mode_mcchar::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_mcchar::i#2) (byte) mode_mcchar::i#1 ← (byte) mode_mcchar::i#2 + rangenext(0,$f) (bool~) mode_mcchar::$20 ← (byte) mode_mcchar::i#1 != rangelast(0,$f) if((bool~) mode_mcchar::$20) goto mode_mcchar::@1 @@ -2078,7 +2070,7 @@ mode_stdbitmap: scope:[mode_stdbitmap] from menu::@32 mode_stdbitmap::@1: scope:[mode_stdbitmap] from mode_stdbitmap mode_stdbitmap::@1 (byte) dtv_control#264 ← phi( mode_stdbitmap/(byte) dtv_control#27 mode_stdbitmap::@1/(byte) dtv_control#264 ) (byte) mode_stdbitmap::i#2 ← phi( mode_stdbitmap/(byte) mode_stdbitmap::i#0 mode_stdbitmap::@1/(byte) mode_stdbitmap::i#1 ) - *((const byte*) DTV_PALETTE + (byte) mode_stdbitmap::i#2) ← *((byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_stdbitmap::i#2) + *((const byte*) DTV_PALETTE + (byte) mode_stdbitmap::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT + (byte) mode_stdbitmap::i#2) (byte) mode_stdbitmap::i#1 ← (byte) mode_stdbitmap::i#2 + rangenext(0,$f) (bool~) mode_stdbitmap::$18 ← (byte) mode_stdbitmap::i#1 != rangelast(0,$f) if((bool~) mode_stdbitmap::$18) goto mode_stdbitmap::@1 @@ -2133,8 +2125,6 @@ mode_stdbitmap::@13: scope:[mode_stdbitmap] from mode_stdbitmap::@6 to:mode_stdbitmap::@14 mode_stdbitmap::@14: scope:[mode_stdbitmap] from mode_stdbitmap::@13 (byte) dtv_control#178 ← phi( mode_stdbitmap::@13/(byte) dtv_control#193 ) - (byte[]) mode_stdbitmap::lines_x ← { (number) 0, (number) $ff, (number) $ff, (number) 0, (number) 0, (number) $80, (number) $ff, (number) $80, (number) 0, (number) $80 } - (byte[]) mode_stdbitmap::lines_y ← { (number) 0, (number) 0, (number) $c7, (number) $c7, (number) 0, (number) 0, (number) $64, (number) $c7, (number) $64, (number) 0 } (byte) mode_stdbitmap::l#0 ← (number) 0 to:mode_stdbitmap::@7 mode_stdbitmap::@7: scope:[mode_stdbitmap] from mode_stdbitmap::@14 mode_stdbitmap::@15 @@ -2148,10 +2138,10 @@ mode_stdbitmap::@8: scope:[mode_stdbitmap] from mode_stdbitmap::@7 (byte) mode_stdbitmap::l#3 ← phi( mode_stdbitmap::@7/(byte) mode_stdbitmap::l#2 ) (number~) mode_stdbitmap::$27 ← (byte) mode_stdbitmap::l#3 + (number) 1 (number~) mode_stdbitmap::$28 ← (byte) mode_stdbitmap::l#3 + (number) 1 - (byte) bitmap_line::x0#0 ← *((byte[]) mode_stdbitmap::lines_x + (byte) mode_stdbitmap::l#3) - (byte) bitmap_line::x1#0 ← *((byte[]) mode_stdbitmap::lines_x + (number~) mode_stdbitmap::$27) - (byte) bitmap_line::y0#0 ← *((byte[]) mode_stdbitmap::lines_y + (byte) mode_stdbitmap::l#3) - (byte) bitmap_line::y1#0 ← *((byte[]) mode_stdbitmap::lines_y + (number~) mode_stdbitmap::$28) + (byte) bitmap_line::x0#0 ← *((const byte[]) mode_stdbitmap::lines_x + (byte) mode_stdbitmap::l#3) + (byte) bitmap_line::x1#0 ← *((const byte[]) mode_stdbitmap::lines_x + (number~) mode_stdbitmap::$27) + (byte) bitmap_line::y0#0 ← *((const byte[]) mode_stdbitmap::lines_y + (byte) mode_stdbitmap::l#3) + (byte) bitmap_line::y1#0 ← *((const byte[]) mode_stdbitmap::lines_y + (number~) mode_stdbitmap::$28) call bitmap_line to:mode_stdbitmap::@15 mode_stdbitmap::@15: scope:[mode_stdbitmap] from mode_stdbitmap::@8 @@ -2702,7 +2692,6 @@ mode_sixsfred::@5: scope:[mode_sixsfred] from mode_sixsfred::@4 mode_sixsfred::@6: scope:[mode_sixsfred] from mode_sixsfred::@5 (byte) dtv_control#259 ← phi( mode_sixsfred::@5/(byte) dtv_control#266 ) (byte*) mode_sixsfred::gfxa#0 ← (const byte*) mode_sixsfred::PLANEA - (byte[]) mode_sixsfred::row_bitmask ← { (number) 0, (number) $55, (number) $aa, (number) $ff } (byte) mode_sixsfred::ay#0 ← (byte) 0 to:mode_sixsfred::@7 mode_sixsfred::@7: scope:[mode_sixsfred] from mode_sixsfred::@6 mode_sixsfred::@9 @@ -2719,7 +2708,7 @@ mode_sixsfred::@8: scope:[mode_sixsfred] from mode_sixsfred::@7 mode_sixsfred:: (number~) mode_sixsfred::$6 ← (byte) mode_sixsfred::ay#2 / (number) 2 (number~) mode_sixsfred::$7 ← (number~) mode_sixsfred::$6 & (number) 3 (byte) mode_sixsfred::row#0 ← (number~) mode_sixsfred::$7 - *((byte*) mode_sixsfred::gfxa#2) ← *((byte[]) mode_sixsfred::row_bitmask + (byte) mode_sixsfred::row#0) + *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask + (byte) mode_sixsfred::row#0) (byte*) mode_sixsfred::gfxa#1 ← ++ (byte*) mode_sixsfred::gfxa#2 (byte) mode_sixsfred::ax#1 ← (byte) mode_sixsfred::ax#2 + rangenext(0,$27) (bool~) mode_sixsfred::$8 ← (byte) mode_sixsfred::ax#1 != rangelast(0,$27) @@ -2845,7 +2834,6 @@ mode_sixsfred2::@5: scope:[mode_sixsfred2] from mode_sixsfred2::@4 mode_sixsfred2::@6: scope:[mode_sixsfred2] from mode_sixsfred2::@5 (byte) dtv_control#260 ← phi( mode_sixsfred2::@5/(byte) dtv_control#267 ) (byte*) mode_sixsfred2::gfxa#0 ← (const byte*) mode_sixsfred2::PLANEA - (byte[]) mode_sixsfred2::row_bitmask ← { (number) 0, (number) $55, (number) $aa, (number) $ff } (byte) mode_sixsfred2::ay#0 ← (byte) 0 to:mode_sixsfred2::@7 mode_sixsfred2::@7: scope:[mode_sixsfred2] from mode_sixsfred2::@6 mode_sixsfred2::@9 @@ -2862,7 +2850,7 @@ mode_sixsfred2::@8: scope:[mode_sixsfred2] from mode_sixsfred2::@7 mode_sixsfre (number~) mode_sixsfred2::$8 ← (byte) mode_sixsfred2::ay#2 / (number) 2 (number~) mode_sixsfred2::$9 ← (number~) mode_sixsfred2::$8 & (number) 3 (byte) mode_sixsfred2::row#0 ← (number~) mode_sixsfred2::$9 - *((byte*) mode_sixsfred2::gfxa#2) ← *((byte[]) mode_sixsfred2::row_bitmask + (byte) mode_sixsfred2::row#0) + *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask + (byte) mode_sixsfred2::row#0) (byte*) mode_sixsfred2::gfxa#1 ← ++ (byte*) mode_sixsfred2::gfxa#2 (byte) mode_sixsfred2::ax#1 ← (byte) mode_sixsfred2::ax#2 + rangenext(0,$27) (bool~) mode_sixsfred2::$10 ← (byte) mode_sixsfred2::ax#1 != rangelast(0,$27) @@ -3225,8 +3213,6 @@ mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm SYMBOL TABLE SSA (label) @17 -(label) @4 -(label) @41 (label) @48 (label) @58 (label) @71 @@ -3260,7 +3246,7 @@ SYMBOL TABLE SSA (const byte) DTV_LINEAR = (number) 1 (const byte) DTV_OVERSCAN = (number) 8 (const byte*) DTV_PALETTE = (byte*)(number) $d200 -(byte[$10]) DTV_PALETTE_DEFAULT +(const byte[$10]) DTV_PALETTE_DEFAULT = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a } (const byte*) DTV_PLANEA_MODULO_HI = (byte*)(number) $d039 (const byte*) DTV_PLANEA_MODULO_LO = (byte*)(number) $d038 (const byte*) DTV_PLANEA_START_HI = (byte*)(number) $d045 @@ -4176,7 +4162,7 @@ SYMBOL TABLE SSA (byte) keyboard_key_pressed::return#9 (byte) keyboard_key_pressed::rowidx (byte) keyboard_key_pressed::rowidx#0 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -4191,7 +4177,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() (label) main::@1 (label) main::@2 @@ -5056,7 +5042,7 @@ SYMBOL TABLE SSA (byte) mode_sixsfred::i#2 (byte) mode_sixsfred::row (byte) mode_sixsfred::row#0 -(byte[]) mode_sixsfred::row_bitmask +(const byte[]) mode_sixsfred::row_bitmask = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff } (void()) mode_sixsfred2() (bool~) mode_sixsfred2::$1 (bool~) mode_sixsfred2::$10 @@ -5144,7 +5130,7 @@ SYMBOL TABLE SSA (byte) mode_sixsfred2::i#2 (byte) mode_sixsfred2::row (byte) mode_sixsfred2::row#0 -(byte[]) mode_sixsfred2::row_bitmask +(const byte[]) mode_sixsfred2::row_bitmask = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff } (void()) mode_stdbitmap() (dword~) mode_stdbitmap::$0 (number~) mode_stdbitmap::$1 @@ -5219,8 +5205,8 @@ SYMBOL TABLE SSA (byte) mode_stdbitmap::l#3 (byte) mode_stdbitmap::l#4 (const byte) mode_stdbitmap::lines_cnt = (byte) 9 -(byte[]) mode_stdbitmap::lines_x -(byte[]) mode_stdbitmap::lines_y +(const byte[]) mode_stdbitmap::lines_x = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 } +(const byte[]) mode_stdbitmap::lines_y = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 } (void()) mode_stdchar() (dword~) mode_stdchar::$0 (number~) mode_stdchar::$1 @@ -5484,7 +5470,6 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#95 (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 -(byte*) print_char_cursor#98 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -5587,7 +5572,6 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#95 (byte*) print_line_cursor#96 (byte*) print_line_cursor#97 -(byte*) print_line_cursor#98 (void()) print_ln() (byte*~) print_ln::$0 (bool~) print_ln::$1 @@ -5672,7 +5656,6 @@ SYMBOL TABLE SSA (byte*) print_screen#76 (byte*) print_screen#77 (byte*) print_screen#78 -(byte*) print_screen#79 (byte*) print_screen#8 (byte*) print_screen#9 (void()) print_set_screen((byte*) print_set_screen::screen) @@ -6127,14 +6110,6 @@ Adding number conversion cast (unumber) 0 in *((const byte*) BORDERCOL) ← (num Adding number conversion cast (unumber) $4000 in (byte~) mode_8bppchunkybmm::$0 ← ((byte)) (const dword) mode_8bppchunkybmm::PLANEB/(number) $4000 Adding number conversion cast (unumber) $8000 in (bool~) mode_8bppchunkybmm::$6 ← (byte*) mode_8bppchunkybmm::gfxb#3 == (number) $8000 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[$10]) DTV_PALETTE_DEFAULT ← (byte[$10]){ (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a } -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Added casts to value list in (byte[]) mode_stdbitmap::lines_x ← (byte[]){ (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 } -Added casts to value list in (byte[]) mode_stdbitmap::lines_y ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 } -Added casts to value list in (byte[]) mode_sixsfred::row_bitmask ← (byte[]){ (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff } -Added casts to value list in (byte[]) mode_sixsfred2::row_bitmask ← (byte[]){ (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -6343,56 +6318,6 @@ Simplifying constant pointer cast (byte*) 56578 Simplifying constant pointer cast (byte*) 53311 Simplifying constant pointer cast (byte*) 53308 Simplifying constant pointer cast (byte*) 53760 -Simplifying constant pointer cast (byte*) 53306 -Simplifying constant pointer cast (byte*) 53307 -Simplifying constant pointer cast (byte*) 53317 -Simplifying constant pointer cast (byte*) 53318 -Simplifying constant pointer cast (byte*) 53304 -Simplifying constant pointer cast (byte*) 53305 -Simplifying constant pointer cast (byte*) 53321 -Simplifying constant pointer cast (byte*) 53322 -Simplifying constant pointer cast (byte*) 53323 -Simplifying constant pointer cast (byte*) 53324 -Simplifying constant pointer cast (byte*) 53319 -Simplifying constant pointer cast (byte*) 53320 -Simplifying constant pointer cast (byte*) 53302 -Simplifying constant pointer cast (byte*) 53303 -Simplifying constant pointer cast (byte*) 53309 -Simplifying constant pointer cast (byte*) 255 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 38912 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 36864 -Simplifying constant pointer cast (byte*) 55296 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 36864 -Simplifying constant pointer cast (byte*) 55296 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 36864 -Simplifying constant pointer cast (byte*) 55296 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 24576 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 36864 -Simplifying constant pointer cast (byte*) 33792 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 36864 -Simplifying constant pointer cast (byte*) 33792 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 36864 -Simplifying constant pointer cast (byte*) 33792 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 24576 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 24576 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 24576 -Simplifying constant pointer cast (byte*) 32768 -Simplifying constant pointer cast (byte*) 15360 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 53248 Simplifying constant integer cast 0 Simplifying constant integer cast $f Simplifying constant integer cast $36 @@ -6409,13 +6334,22 @@ Simplifying constant integer cast 7 Simplifying constant integer cast $df Simplifying constant integer cast $9a Simplifying constant integer cast $a -Simplifying constant integer cast 0 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $28 -Simplifying constant integer cast $3e8 +Simplifying constant pointer cast (byte*) 53306 +Simplifying constant pointer cast (byte*) 53307 +Simplifying constant pointer cast (byte*) 53317 +Simplifying constant pointer cast (byte*) 53318 +Simplifying constant pointer cast (byte*) 53304 +Simplifying constant pointer cast (byte*) 53305 +Simplifying constant pointer cast (byte*) 53321 +Simplifying constant pointer cast (byte*) 53322 +Simplifying constant pointer cast (byte*) 53323 +Simplifying constant pointer cast (byte*) 53324 +Simplifying constant pointer cast (byte*) 53319 +Simplifying constant pointer cast (byte*) 53320 +Simplifying constant pointer cast (byte*) 53302 +Simplifying constant pointer cast (byte*) 53303 +Simplifying constant pointer cast (byte*) 53309 +Simplifying constant pointer cast (byte*) 255 Simplifying constant integer cast $fe Simplifying constant integer cast $fd Simplifying constant integer cast $fb @@ -6432,6 +6366,75 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 38912 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 36864 +Simplifying constant pointer cast (byte*) 55296 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 36864 +Simplifying constant pointer cast (byte*) 55296 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 36864 +Simplifying constant pointer cast (byte*) 55296 +Simplifying constant pointer cast (byte*) 16384 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant integer cast 0 +Simplifying constant integer cast $ff +Simplifying constant integer cast $ff +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast $ff +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $c7 +Simplifying constant integer cast $c7 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $64 +Simplifying constant integer cast $c7 +Simplifying constant integer cast $64 +Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 36864 +Simplifying constant pointer cast (byte*) 33792 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 36864 +Simplifying constant pointer cast (byte*) 33792 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 36864 +Simplifying constant pointer cast (byte*) 33792 +Simplifying constant pointer cast (byte*) 16384 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant pointer cast (byte*) 16384 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant integer cast 0 +Simplifying constant integer cast $55 +Simplifying constant integer cast $aa +Simplifying constant integer cast $ff +Simplifying constant pointer cast (byte*) 16384 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant pointer cast (byte*) 32768 +Simplifying constant integer cast 0 +Simplifying constant integer cast $55 +Simplifying constant integer cast $aa +Simplifying constant integer cast $ff +Simplifying constant pointer cast (byte*) 15360 +Simplifying constant pointer cast (byte*) 16384 +Simplifying constant pointer cast (byte*) 53248 +Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $28 +Simplifying constant integer cast $3e8 Simplifying constant integer cast 7 Simplifying constant integer cast 3 Simplifying constant integer cast $80 @@ -6577,26 +6580,6 @@ Simplifying constant integer cast $f Simplifying constant integer cast $f Simplifying constant integer cast $10 Simplifying constant integer cast 0 -Simplifying constant integer cast $ff -Simplifying constant integer cast $ff -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $80 -Simplifying constant integer cast $ff -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $c7 -Simplifying constant integer cast $c7 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $64 -Simplifying constant integer cast $c7 -Simplifying constant integer cast $64 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast $10000 @@ -6692,10 +6675,6 @@ Simplifying constant integer cast $400 Simplifying constant integer cast $400 Simplifying constant integer cast 0 Simplifying constant integer cast $f -Simplifying constant integer cast 0 -Simplifying constant integer cast $55 -Simplifying constant integer cast $aa -Simplifying constant integer cast $ff Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast $1b @@ -6715,10 +6694,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 3 Simplifying constant integer cast $10 Simplifying constant integer cast 3 -Simplifying constant integer cast 0 -Simplifying constant integer cast $55 -Simplifying constant integer cast $aa -Simplifying constant integer cast $ff Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast $1b @@ -7156,37 +7131,37 @@ Inferred type updated to byte in (unumber~) mode_8bpppixelcell::$8 ← (byte) mo Inferred type updated to byte in (unumber~) mode_8bpppixelcell::$11 ← (byte) mode_8bpppixelcell::bits#3 * (byte) 2 Adding pointer type conversion cast (byte*) bitmap_clear::$0 in (byte*~) bitmap_clear::$0 ← (word~) bitmap_clear::$3 Successful SSA optimization PassNAddTypeConversionAssignment -Inversing boolean not [7] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [6] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [36] (bool~) print_str_lines::$0 ← (byte) 0 == (byte) print_str_lines::ch#0 from [35] (bool~) print_str_lines::$4 ← (byte) 0 != (byte) print_str_lines::ch#0 -Inversing boolean not [131] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte) 0 from [130] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte) 0 -Inversing boolean not [150] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte) 7 from [149] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte) 7 -Inversing boolean not [291] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [290] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 -Inversing boolean not [314] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [313] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 -Inversing boolean not [337] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [336] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 -Inversing boolean not [361] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [360] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 -Inversing boolean not [462] (bool~) menu::$26 ← (byte~) menu::$24 == (byte) 0 from [461] (bool~) menu::$25 ← (byte~) menu::$24 != (byte) 0 -Inversing boolean not [471] (bool~) menu::$30 ← (byte~) menu::$28 == (byte) 0 from [470] (bool~) menu::$29 ← (byte~) menu::$28 != (byte) 0 -Inversing boolean not [490] (bool~) menu::$34 ← (byte~) menu::$32 == (byte) 0 from [489] (bool~) menu::$33 ← (byte~) menu::$32 != (byte) 0 -Inversing boolean not [503] (bool~) menu::$38 ← (byte~) menu::$36 == (byte) 0 from [502] (bool~) menu::$37 ← (byte~) menu::$36 != (byte) 0 -Inversing boolean not [516] (bool~) menu::$42 ← (byte~) menu::$40 == (byte) 0 from [515] (bool~) menu::$41 ← (byte~) menu::$40 != (byte) 0 -Inversing boolean not [529] (bool~) menu::$46 ← (byte~) menu::$44 == (byte) 0 from [528] (bool~) menu::$45 ← (byte~) menu::$44 != (byte) 0 -Inversing boolean not [542] (bool~) menu::$50 ← (byte~) menu::$48 == (byte) 0 from [541] (bool~) menu::$49 ← (byte~) menu::$48 != (byte) 0 -Inversing boolean not [555] (bool~) menu::$54 ← (byte~) menu::$52 == (byte) 0 from [554] (bool~) menu::$53 ← (byte~) menu::$52 != (byte) 0 -Inversing boolean not [568] (bool~) menu::$58 ← (byte~) menu::$56 == (byte) 0 from [567] (bool~) menu::$57 ← (byte~) menu::$56 != (byte) 0 -Inversing boolean not [581] (bool~) menu::$62 ← (byte~) menu::$60 == (byte) 0 from [580] (bool~) menu::$61 ← (byte~) menu::$60 != (byte) 0 -Inversing boolean not [594] (bool~) menu::$66 ← (byte~) menu::$64 == (byte) 0 from [593] (bool~) menu::$65 ← (byte~) menu::$64 != (byte) 0 -Inversing boolean not [607] (bool~) menu::$70 ← (byte~) menu::$68 == (byte) 0 from [606] (bool~) menu::$69 ← (byte~) menu::$68 != (byte) 0 -Inversing boolean not [632] (bool~) mode_ctrl::$3 ← (byte~) mode_ctrl::$1 == (byte) 0 from [631] (bool~) mode_ctrl::$2 ← (byte~) mode_ctrl::$1 != (byte) 0 -Inversing boolean not [642] (bool~) mode_ctrl::$6 ← (byte~) mode_ctrl::$4 == (byte) 0 from [641] (bool~) mode_ctrl::$5 ← (byte~) mode_ctrl::$4 != (byte) 0 -Inversing boolean not [654] (bool~) mode_ctrl::$10 ← (byte~) mode_ctrl::$8 == (byte) 0 from [653] (bool~) mode_ctrl::$9 ← (byte~) mode_ctrl::$8 != (byte) 0 -Inversing boolean not [666] (bool~) mode_ctrl::$14 ← (byte~) mode_ctrl::$12 == (byte) 0 from [665] (bool~) mode_ctrl::$13 ← (byte~) mode_ctrl::$12 != (byte) 0 -Inversing boolean not [678] (bool~) mode_ctrl::$18 ← (byte~) mode_ctrl::$16 == (byte) 0 from [677] (bool~) mode_ctrl::$17 ← (byte~) mode_ctrl::$16 != (byte) 0 -Inversing boolean not [690] (bool~) mode_ctrl::$22 ← (byte~) mode_ctrl::$20 == (byte) 0 from [689] (bool~) mode_ctrl::$21 ← (byte~) mode_ctrl::$20 != (byte) 0 -Inversing boolean not [702] (bool~) mode_ctrl::$26 ← (byte~) mode_ctrl::$24 == (byte) 0 from [701] (bool~) mode_ctrl::$25 ← (byte~) mode_ctrl::$24 != (byte) 0 -Inversing boolean not [714] (bool~) mode_ctrl::$30 ← (byte~) mode_ctrl::$28 == (byte) 0 from [713] (bool~) mode_ctrl::$29 ← (byte~) mode_ctrl::$28 != (byte) 0 -Inversing boolean not [721] (bool~) mode_ctrl::$32 ← (byte) mode_ctrl::ctrl#14 == (byte) dtv_control#72 from [720] (bool~) mode_ctrl::$31 ← (byte) mode_ctrl::ctrl#14 != (byte) dtv_control#72 -Inversing boolean not [1543] (bool~) mode_8bpppixelcell::$10 ← (byte~) mode_8bpppixelcell::$8 == (byte) 0 from [1542] (bool~) mode_8bpppixelcell::$9 ← (byte~) mode_8bpppixelcell::$8 != (byte) 0 -Inversing boolean not [1602] (bool~) mode_8bppchunkybmm::$7 ← (byte*) mode_8bppchunkybmm::gfxb#3 != (word) $8000 from [1601] (bool~) mode_8bppchunkybmm::$6 ← (byte*) mode_8bppchunkybmm::gfxb#3 == (word) $8000 +Inversing boolean not [6] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [5] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 +Inversing boolean not [35] (bool~) print_str_lines::$0 ← (byte) 0 == (byte) print_str_lines::ch#0 from [34] (bool~) print_str_lines::$4 ← (byte) 0 != (byte) print_str_lines::ch#0 +Inversing boolean not [127] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte) 0 from [126] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte) 0 +Inversing boolean not [146] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte) 7 from [145] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte) 7 +Inversing boolean not [287] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [286] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 +Inversing boolean not [310] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [309] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 +Inversing boolean not [333] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [332] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 +Inversing boolean not [357] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [356] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 +Inversing boolean not [458] (bool~) menu::$26 ← (byte~) menu::$24 == (byte) 0 from [457] (bool~) menu::$25 ← (byte~) menu::$24 != (byte) 0 +Inversing boolean not [467] (bool~) menu::$30 ← (byte~) menu::$28 == (byte) 0 from [466] (bool~) menu::$29 ← (byte~) menu::$28 != (byte) 0 +Inversing boolean not [486] (bool~) menu::$34 ← (byte~) menu::$32 == (byte) 0 from [485] (bool~) menu::$33 ← (byte~) menu::$32 != (byte) 0 +Inversing boolean not [499] (bool~) menu::$38 ← (byte~) menu::$36 == (byte) 0 from [498] (bool~) menu::$37 ← (byte~) menu::$36 != (byte) 0 +Inversing boolean not [512] (bool~) menu::$42 ← (byte~) menu::$40 == (byte) 0 from [511] (bool~) menu::$41 ← (byte~) menu::$40 != (byte) 0 +Inversing boolean not [525] (bool~) menu::$46 ← (byte~) menu::$44 == (byte) 0 from [524] (bool~) menu::$45 ← (byte~) menu::$44 != (byte) 0 +Inversing boolean not [538] (bool~) menu::$50 ← (byte~) menu::$48 == (byte) 0 from [537] (bool~) menu::$49 ← (byte~) menu::$48 != (byte) 0 +Inversing boolean not [551] (bool~) menu::$54 ← (byte~) menu::$52 == (byte) 0 from [550] (bool~) menu::$53 ← (byte~) menu::$52 != (byte) 0 +Inversing boolean not [564] (bool~) menu::$58 ← (byte~) menu::$56 == (byte) 0 from [563] (bool~) menu::$57 ← (byte~) menu::$56 != (byte) 0 +Inversing boolean not [577] (bool~) menu::$62 ← (byte~) menu::$60 == (byte) 0 from [576] (bool~) menu::$61 ← (byte~) menu::$60 != (byte) 0 +Inversing boolean not [590] (bool~) menu::$66 ← (byte~) menu::$64 == (byte) 0 from [589] (bool~) menu::$65 ← (byte~) menu::$64 != (byte) 0 +Inversing boolean not [603] (bool~) menu::$70 ← (byte~) menu::$68 == (byte) 0 from [602] (bool~) menu::$69 ← (byte~) menu::$68 != (byte) 0 +Inversing boolean not [628] (bool~) mode_ctrl::$3 ← (byte~) mode_ctrl::$1 == (byte) 0 from [627] (bool~) mode_ctrl::$2 ← (byte~) mode_ctrl::$1 != (byte) 0 +Inversing boolean not [638] (bool~) mode_ctrl::$6 ← (byte~) mode_ctrl::$4 == (byte) 0 from [637] (bool~) mode_ctrl::$5 ← (byte~) mode_ctrl::$4 != (byte) 0 +Inversing boolean not [650] (bool~) mode_ctrl::$10 ← (byte~) mode_ctrl::$8 == (byte) 0 from [649] (bool~) mode_ctrl::$9 ← (byte~) mode_ctrl::$8 != (byte) 0 +Inversing boolean not [662] (bool~) mode_ctrl::$14 ← (byte~) mode_ctrl::$12 == (byte) 0 from [661] (bool~) mode_ctrl::$13 ← (byte~) mode_ctrl::$12 != (byte) 0 +Inversing boolean not [674] (bool~) mode_ctrl::$18 ← (byte~) mode_ctrl::$16 == (byte) 0 from [673] (bool~) mode_ctrl::$17 ← (byte~) mode_ctrl::$16 != (byte) 0 +Inversing boolean not [686] (bool~) mode_ctrl::$22 ← (byte~) mode_ctrl::$20 == (byte) 0 from [685] (bool~) mode_ctrl::$21 ← (byte~) mode_ctrl::$20 != (byte) 0 +Inversing boolean not [698] (bool~) mode_ctrl::$26 ← (byte~) mode_ctrl::$24 == (byte) 0 from [697] (bool~) mode_ctrl::$25 ← (byte~) mode_ctrl::$24 != (byte) 0 +Inversing boolean not [710] (bool~) mode_ctrl::$30 ← (byte~) mode_ctrl::$28 == (byte) 0 from [709] (bool~) mode_ctrl::$29 ← (byte~) mode_ctrl::$28 != (byte) 0 +Inversing boolean not [717] (bool~) mode_ctrl::$32 ← (byte) mode_ctrl::ctrl#14 == (byte) dtv_control#72 from [716] (bool~) mode_ctrl::$31 ← (byte) mode_ctrl::ctrl#14 != (byte) dtv_control#72 +Inversing boolean not [1535] (bool~) mode_8bpppixelcell::$10 ← (byte~) mode_8bpppixelcell::$8 == (byte) 0 from [1534] (bool~) mode_8bpppixelcell::$9 ← (byte~) mode_8bpppixelcell::$8 != (byte) 0 +Inversing boolean not [1594] (bool~) mode_8bppchunkybmm::$7 ← (byte*) mode_8bppchunkybmm::gfxb#3 != (word) $8000 from [1593] (bool~) mode_8bppchunkybmm::$6 ← (byte*) mode_8bppchunkybmm::gfxb#3 == (word) $8000 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -7197,7 +7172,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2 Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 Alias (byte*) memset::end#1 = (byte*) memset::end#2 Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#66 (byte*) print_line_cursor#85 (byte*) print_char_cursor#85 (byte*) print_screen#65 (byte*) print_line_cursor#84 (byte*) print_char_cursor#84 (byte*) print_screen#49 (byte*) print_line_cursor#67 (byte*) print_char_cursor#69 (byte*) print_screen#32 (byte*) print_line_cursor#49 (byte*) print_char_cursor#51 +Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#65 (byte*) print_line_cursor#84 (byte*) print_char_cursor#84 (byte*) print_screen#49 (byte*) print_line_cursor#67 (byte*) print_char_cursor#69 (byte*) print_screen#32 (byte*) print_line_cursor#49 (byte*) print_char_cursor#51 Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#2 Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#31 Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#7 @@ -7286,9 +7261,9 @@ Alias (byte*) print_screen#11 = (byte*) print_screen#3 Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#9 Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#24 Alias (byte) dtv_control#0 = (byte) dtv_control#55 -Alias (byte*) print_screen#50 = (byte*) print_screen#67 -Alias (byte*) print_line_cursor#70 = (byte*) print_line_cursor#86 -Alias (byte*) print_char_cursor#70 = (byte*) print_char_cursor#86 +Alias (byte*) print_screen#50 = (byte*) print_screen#66 +Alias (byte*) print_line_cursor#70 = (byte*) print_line_cursor#85 +Alias (byte*) print_char_cursor#70 = (byte*) print_char_cursor#85 Alias (byte) dtv_control#235 = (byte) dtv_control#245 Alias (byte*) menu::c#2 = (byte*) menu::c#3 Alias (byte*) print_screen#18 = (byte*) print_screen#51 (byte*) print_screen#34 @@ -7303,9 +7278,9 @@ Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#27 Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#28 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#27 Alias (byte) dtv_control#100 = (byte) dtv_control#160 (byte) dtv_control#101 (byte) dtv_control#133 (byte) dtv_control#161 (byte) dtv_control#134 (byte) dtv_control#162 (byte) dtv_control#135 (byte) dtv_control#102 (byte) dtv_control#163 (byte) dtv_control#136 (byte) dtv_control#103 (byte) dtv_control#164 (byte) dtv_control#137 (byte) dtv_control#104 (byte) dtv_control#165 (byte) dtv_control#138 (byte) dtv_control#105 (byte) dtv_control#166 (byte) dtv_control#139 (byte) dtv_control#106 (byte) dtv_control#167 (byte) dtv_control#140 (byte) dtv_control#107 (byte) dtv_control#168 (byte) dtv_control#141 (byte) dtv_control#108 (byte) dtv_control#169 (byte) dtv_control#142 (byte) dtv_control#109 (byte) dtv_control#170 (byte) dtv_control#143 (byte) dtv_control#110 (byte) dtv_control#171 (byte) dtv_control#132 (byte) dtv_control#111 (byte) dtv_control#112 -Alias (byte*) print_screen#19 = (byte*) print_screen#68 (byte*) print_screen#31 (byte*) print_screen#53 (byte*) print_screen#69 (byte*) print_screen#54 (byte*) print_screen#37 (byte*) print_screen#70 (byte*) print_screen#55 (byte*) print_screen#38 (byte*) print_screen#20 (byte*) print_screen#71 (byte*) print_screen#56 (byte*) print_screen#39 (byte*) print_screen#21 (byte*) print_screen#72 (byte*) print_screen#57 (byte*) print_screen#40 (byte*) print_screen#22 (byte*) print_screen#73 (byte*) print_screen#58 (byte*) print_screen#41 (byte*) print_screen#23 (byte*) print_screen#74 (byte*) print_screen#59 (byte*) print_screen#42 (byte*) print_screen#24 (byte*) print_screen#75 (byte*) print_screen#60 (byte*) print_screen#43 (byte*) print_screen#25 (byte*) print_screen#76 (byte*) print_screen#61 (byte*) print_screen#44 (byte*) print_screen#26 (byte*) print_screen#77 (byte*) print_screen#62 (byte*) print_screen#45 (byte*) print_screen#27 (byte*) print_screen#78 (byte*) print_screen#64 (byte*) print_screen#46 (byte*) print_screen#28 (byte*) print_screen#63 (byte*) print_screen#36 (byte*) print_screen#47 (byte*) print_screen#29 (byte*) print_screen#48 (byte*) print_screen#30 -Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#87 (byte*) print_line_cursor#48 (byte*) print_line_cursor#72 (byte*) print_line_cursor#88 (byte*) print_line_cursor#73 (byte*) print_line_cursor#55 (byte*) print_line_cursor#89 (byte*) print_line_cursor#74 (byte*) print_line_cursor#56 (byte*) print_line_cursor#37 (byte*) print_line_cursor#90 (byte*) print_line_cursor#75 (byte*) print_line_cursor#57 (byte*) print_line_cursor#38 (byte*) print_line_cursor#91 (byte*) print_line_cursor#76 (byte*) print_line_cursor#58 (byte*) print_line_cursor#39 (byte*) print_line_cursor#92 (byte*) print_line_cursor#77 (byte*) print_line_cursor#59 (byte*) print_line_cursor#40 (byte*) print_line_cursor#93 (byte*) print_line_cursor#78 (byte*) print_line_cursor#60 (byte*) print_line_cursor#41 (byte*) print_line_cursor#94 (byte*) print_line_cursor#79 (byte*) print_line_cursor#61 (byte*) print_line_cursor#42 (byte*) print_line_cursor#95 (byte*) print_line_cursor#80 (byte*) print_line_cursor#62 (byte*) print_line_cursor#43 (byte*) print_line_cursor#96 (byte*) print_line_cursor#81 (byte*) print_line_cursor#63 (byte*) print_line_cursor#44 (byte*) print_line_cursor#97 (byte*) print_line_cursor#83 (byte*) print_line_cursor#64 (byte*) print_line_cursor#45 (byte*) print_line_cursor#82 (byte*) print_line_cursor#54 (byte*) print_line_cursor#65 (byte*) print_line_cursor#46 (byte*) print_line_cursor#66 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#87 (byte*) print_char_cursor#50 (byte*) print_char_cursor#72 (byte*) print_char_cursor#88 (byte*) print_char_cursor#73 (byte*) print_char_cursor#57 (byte*) print_char_cursor#89 (byte*) print_char_cursor#74 (byte*) print_char_cursor#58 (byte*) print_char_cursor#39 (byte*) print_char_cursor#90 (byte*) print_char_cursor#75 (byte*) print_char_cursor#59 (byte*) print_char_cursor#40 (byte*) print_char_cursor#91 (byte*) print_char_cursor#76 (byte*) print_char_cursor#60 (byte*) print_char_cursor#41 (byte*) print_char_cursor#92 (byte*) print_char_cursor#77 (byte*) print_char_cursor#61 (byte*) print_char_cursor#42 (byte*) print_char_cursor#93 (byte*) print_char_cursor#78 (byte*) print_char_cursor#62 (byte*) print_char_cursor#43 (byte*) print_char_cursor#94 (byte*) print_char_cursor#79 (byte*) print_char_cursor#63 (byte*) print_char_cursor#44 (byte*) print_char_cursor#95 (byte*) print_char_cursor#80 (byte*) print_char_cursor#64 (byte*) print_char_cursor#45 (byte*) print_char_cursor#96 (byte*) print_char_cursor#81 (byte*) print_char_cursor#65 (byte*) print_char_cursor#46 (byte*) print_char_cursor#97 (byte*) print_char_cursor#83 (byte*) print_char_cursor#66 (byte*) print_char_cursor#47 (byte*) print_char_cursor#82 (byte*) print_char_cursor#56 (byte*) print_char_cursor#67 (byte*) print_char_cursor#48 (byte*) print_char_cursor#68 (byte*) print_char_cursor#49 +Alias (byte*) print_screen#19 = (byte*) print_screen#67 (byte*) print_screen#31 (byte*) print_screen#53 (byte*) print_screen#68 (byte*) print_screen#54 (byte*) print_screen#37 (byte*) print_screen#69 (byte*) print_screen#55 (byte*) print_screen#38 (byte*) print_screen#20 (byte*) print_screen#70 (byte*) print_screen#56 (byte*) print_screen#39 (byte*) print_screen#21 (byte*) print_screen#71 (byte*) print_screen#57 (byte*) print_screen#40 (byte*) print_screen#22 (byte*) print_screen#72 (byte*) print_screen#58 (byte*) print_screen#41 (byte*) print_screen#23 (byte*) print_screen#73 (byte*) print_screen#59 (byte*) print_screen#42 (byte*) print_screen#24 (byte*) print_screen#74 (byte*) print_screen#60 (byte*) print_screen#43 (byte*) print_screen#25 (byte*) print_screen#75 (byte*) print_screen#61 (byte*) print_screen#44 (byte*) print_screen#26 (byte*) print_screen#76 (byte*) print_screen#62 (byte*) print_screen#45 (byte*) print_screen#27 (byte*) print_screen#77 (byte*) print_screen#64 (byte*) print_screen#46 (byte*) print_screen#28 (byte*) print_screen#63 (byte*) print_screen#36 (byte*) print_screen#47 (byte*) print_screen#29 (byte*) print_screen#48 (byte*) print_screen#30 +Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#86 (byte*) print_line_cursor#48 (byte*) print_line_cursor#72 (byte*) print_line_cursor#87 (byte*) print_line_cursor#73 (byte*) print_line_cursor#55 (byte*) print_line_cursor#88 (byte*) print_line_cursor#74 (byte*) print_line_cursor#56 (byte*) print_line_cursor#37 (byte*) print_line_cursor#89 (byte*) print_line_cursor#75 (byte*) print_line_cursor#57 (byte*) print_line_cursor#38 (byte*) print_line_cursor#90 (byte*) print_line_cursor#76 (byte*) print_line_cursor#58 (byte*) print_line_cursor#39 (byte*) print_line_cursor#91 (byte*) print_line_cursor#77 (byte*) print_line_cursor#59 (byte*) print_line_cursor#40 (byte*) print_line_cursor#92 (byte*) print_line_cursor#78 (byte*) print_line_cursor#60 (byte*) print_line_cursor#41 (byte*) print_line_cursor#93 (byte*) print_line_cursor#79 (byte*) print_line_cursor#61 (byte*) print_line_cursor#42 (byte*) print_line_cursor#94 (byte*) print_line_cursor#80 (byte*) print_line_cursor#62 (byte*) print_line_cursor#43 (byte*) print_line_cursor#95 (byte*) print_line_cursor#81 (byte*) print_line_cursor#63 (byte*) print_line_cursor#44 (byte*) print_line_cursor#96 (byte*) print_line_cursor#83 (byte*) print_line_cursor#64 (byte*) print_line_cursor#45 (byte*) print_line_cursor#82 (byte*) print_line_cursor#54 (byte*) print_line_cursor#65 (byte*) print_line_cursor#46 (byte*) print_line_cursor#66 (byte*) print_line_cursor#47 +Alias (byte*) print_char_cursor#38 = (byte*) print_char_cursor#86 (byte*) print_char_cursor#50 (byte*) print_char_cursor#72 (byte*) print_char_cursor#87 (byte*) print_char_cursor#73 (byte*) print_char_cursor#57 (byte*) print_char_cursor#88 (byte*) print_char_cursor#74 (byte*) print_char_cursor#58 (byte*) print_char_cursor#39 (byte*) print_char_cursor#89 (byte*) print_char_cursor#75 (byte*) print_char_cursor#59 (byte*) print_char_cursor#40 (byte*) print_char_cursor#90 (byte*) print_char_cursor#76 (byte*) print_char_cursor#60 (byte*) print_char_cursor#41 (byte*) print_char_cursor#91 (byte*) print_char_cursor#77 (byte*) print_char_cursor#61 (byte*) print_char_cursor#42 (byte*) print_char_cursor#92 (byte*) print_char_cursor#78 (byte*) print_char_cursor#62 (byte*) print_char_cursor#43 (byte*) print_char_cursor#93 (byte*) print_char_cursor#79 (byte*) print_char_cursor#63 (byte*) print_char_cursor#44 (byte*) print_char_cursor#94 (byte*) print_char_cursor#80 (byte*) print_char_cursor#64 (byte*) print_char_cursor#45 (byte*) print_char_cursor#95 (byte*) print_char_cursor#81 (byte*) print_char_cursor#65 (byte*) print_char_cursor#46 (byte*) print_char_cursor#96 (byte*) print_char_cursor#83 (byte*) print_char_cursor#66 (byte*) print_char_cursor#47 (byte*) print_char_cursor#82 (byte*) print_char_cursor#56 (byte*) print_char_cursor#67 (byte*) print_char_cursor#48 (byte*) print_char_cursor#68 (byte*) print_char_cursor#49 Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#23 Alias (byte) keyboard_key_pressed::return#24 = (byte) keyboard_key_pressed::return#3 Alias (byte) dtv_control#2 = (byte) dtv_control#57 @@ -7576,13 +7551,13 @@ Identical Phi Values (byte*) print_screen#11 (byte*) print_screen#14 Identical Phi Values (byte*) print_line_cursor#23 (byte*) print_line_cursor#14 Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#15 Identical Phi Values (byte) dtv_control#0 (byte) dtv_control#3 -Identical Phi Values (byte*) print_screen#79 (byte*) print_screen#12 -Identical Phi Values (byte*) print_line_cursor#98 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#98 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_screen#78 (byte*) print_screen#12 +Identical Phi Values (byte*) print_line_cursor#97 (byte*) print_line_cursor#10 +Identical Phi Values (byte*) print_char_cursor#97 (byte*) print_char_cursor#11 Identical Phi Values (byte) dtv_control#254 (byte) dtv_control#1 -Identical Phi Values (byte*) print_screen#50 (byte*) print_screen#79 -Identical Phi Values (byte*) print_line_cursor#70 (byte*) print_line_cursor#98 -Identical Phi Values (byte*) print_char_cursor#70 (byte*) print_char_cursor#98 +Identical Phi Values (byte*) print_screen#50 (byte*) print_screen#78 +Identical Phi Values (byte*) print_line_cursor#70 (byte*) print_line_cursor#97 +Identical Phi Values (byte*) print_char_cursor#70 (byte*) print_char_cursor#97 Identical Phi Values (byte) dtv_control#235 (byte) dtv_control#254 Identical Phi Values (byte*) print_screen#18 (byte*) print_screen#50 Identical Phi Values (byte*) print_line_cursor#35 (byte*) print_line_cursor#70 @@ -7707,183 +7682,172 @@ Identical Phi Values (byte) dtv_control#233 (byte) dtv_control#51 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (byte) dtv_control#243 (byte) dtv_control#48 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [148] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 +Identified duplicate assignment right side [144] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) memset::$1 [8] if((word) memset::num#0<=(byte) 0) goto memset::@1 -Simple Condition (bool~) memset::$4 [18] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 -Simple Condition (bool~) print_str_lines::$2 [31] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@4 -Simple Condition (bool~) print_str_lines::$0 [37] if((byte) 0==(byte) print_str_lines::ch#0) goto print_str_lines::@5 -Simple Condition (bool~) print_str_lines::$3 [40] if((byte) 0!=(byte) print_str_lines::ch#0) goto print_str_lines::@4 -Simple Condition (bool~) print_ln::$1 [58] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 -Simple Condition (bool~) bitmap_init::$4 [132] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 -Simple Condition (bool~) bitmap_init::$5 [136] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 -Simple Condition (bool~) bitmap_init::$12 [151] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@6 -Simple Condition (bool~) bitmap_init::$14 [155] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 -Simple Condition (bool~) bitmap_clear::$1 [171] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 -Simple Condition (bool~) bitmap_clear::$2 [175] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 -Simple Condition (bool~) bitmap_line::$0 [191] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -Simple Condition (bool~) bitmap_line::$12 [196] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20 -Simple Condition (bool~) bitmap_line::$2 [201] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10 -Simple Condition (bool~) bitmap_line::$8 [206] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15 -Simple Condition (bool~) bitmap_line::$4 [211] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11 -Simple Condition (bool~) bitmap_line::$18 [244] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25 -Simple Condition (bool~) bitmap_line::$14 [249] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21 -Simple Condition (bool~) bitmap_line_xdyi::$4 [292] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -Simple Condition (bool~) bitmap_line_xdyi::$7 [296] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -Simple Condition (bool~) bitmap_line_xdyd::$4 [315] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -Simple Condition (bool~) bitmap_line_xdyd::$7 [319] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -Simple Condition (bool~) bitmap_line_ydxi::$4 [338] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -Simple Condition (bool~) bitmap_line_ydxi::$7 [342] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -Simple Condition (bool~) bitmap_line_ydxd::$4 [362] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -Simple Condition (bool~) bitmap_line_ydxd::$7 [366] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -Simple Condition (bool~) menu::$22 [426] if((byte) menu::i#1!=rangelast(0,$f)) goto menu::@1 -Simple Condition (bool~) menu::$23 [431] if((byte*) menu::c#2!=(const byte*) COLS+(word) $3e8) goto menu::@4 -Simple Condition (bool~) menu::$26 [463] if((byte~) menu::$24==(byte) 0) goto menu::@12 -Simple Condition (bool~) menu::$30 [472] if((byte~) menu::$28==(byte) 0) goto menu::@13 -Simple Condition (bool~) menu::$34 [491] if((byte~) menu::$32==(byte) 0) goto menu::@14 -Simple Condition (bool~) menu::$38 [504] if((byte~) menu::$36==(byte) 0) goto menu::@15 -Simple Condition (bool~) menu::$42 [517] if((byte~) menu::$40==(byte) 0) goto menu::@16 -Simple Condition (bool~) menu::$46 [530] if((byte~) menu::$44==(byte) 0) goto menu::@17 -Simple Condition (bool~) menu::$50 [543] if((byte~) menu::$48==(byte) 0) goto menu::@18 -Simple Condition (bool~) menu::$54 [556] if((byte~) menu::$52==(byte) 0) goto menu::@19 -Simple Condition (bool~) menu::$58 [569] if((byte~) menu::$56==(byte) 0) goto menu::@20 -Simple Condition (bool~) menu::$62 [582] if((byte~) menu::$60==(byte) 0) goto menu::@21 -Simple Condition (bool~) menu::$66 [595] if((byte~) menu::$64==(byte) 0) goto menu::@22 -Simple Condition (bool~) menu::$70 [608] if((byte~) menu::$68==(byte) 0) goto menu::@9 -Simple Condition (bool~) mode_ctrl::$0 [624] if(*((const byte*) RASTER)!=(byte) $ff) goto mode_ctrl::@4 -Simple Condition (bool~) mode_ctrl::$3 [633] if((byte~) mode_ctrl::$1==(byte) 0) goto mode_ctrl::@12 -Simple Condition (bool~) mode_ctrl::$6 [643] if((byte~) mode_ctrl::$4==(byte) 0) goto mode_ctrl::@13 -Simple Condition (bool~) mode_ctrl::$10 [655] if((byte~) mode_ctrl::$8==(byte) 0) goto mode_ctrl::@14 -Simple Condition (bool~) mode_ctrl::$14 [667] if((byte~) mode_ctrl::$12==(byte) 0) goto mode_ctrl::@15 -Simple Condition (bool~) mode_ctrl::$18 [679] if((byte~) mode_ctrl::$16==(byte) 0) goto mode_ctrl::@16 -Simple Condition (bool~) mode_ctrl::$22 [691] if((byte~) mode_ctrl::$20==(byte) 0) goto mode_ctrl::@17 -Simple Condition (bool~) mode_ctrl::$26 [703] if((byte~) mode_ctrl::$24==(byte) 0) goto mode_ctrl::@18 -Simple Condition (bool~) mode_ctrl::$30 [715] if((byte~) mode_ctrl::$28==(byte) 0) goto mode_ctrl::@19 -Simple Condition (bool~) mode_ctrl::$32 [722] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 -Simple Condition (bool~) mode_stdchar::$20 [763] if((byte) mode_stdchar::i#1!=rangelast(0,$f)) goto mode_stdchar::@1 -Simple Condition (bool~) mode_stdchar::$27 [785] if((byte) mode_stdchar::cx#1!=rangelast(0,$27)) goto mode_stdchar::@4 -Simple Condition (bool~) mode_stdchar::$28 [789] if((byte) mode_stdchar::cy#1!=rangelast(0,$18)) goto mode_stdchar::@3 -Simple Condition (bool~) mode_ecmchar::$20 [831] if((byte) mode_ecmchar::i#1!=rangelast(0,$f)) goto mode_ecmchar::@1 -Simple Condition (bool~) mode_ecmchar::$27 [856] if((byte) mode_ecmchar::cx#1!=rangelast(0,$27)) goto mode_ecmchar::@4 -Simple Condition (bool~) mode_ecmchar::$28 [860] if((byte) mode_ecmchar::cy#1!=rangelast(0,$18)) goto mode_ecmchar::@3 -Simple Condition (bool~) mode_mcchar::$20 [902] if((byte) mode_mcchar::i#1!=rangelast(0,$f)) goto mode_mcchar::@1 -Simple Condition (bool~) mode_mcchar::$27 [926] if((byte) mode_mcchar::cx#1!=rangelast(0,$27)) goto mode_mcchar::@4 -Simple Condition (bool~) mode_mcchar::$28 [930] if((byte) mode_mcchar::cy#1!=rangelast(0,$18)) goto mode_mcchar::@3 -Simple Condition (bool~) mode_stdbitmap::$18 [966] if((byte) mode_stdbitmap::i#1!=rangelast(0,$f)) goto mode_stdbitmap::@1 -Simple Condition (bool~) mode_stdbitmap::$24 [986] if((byte) mode_stdbitmap::cx#1!=rangelast(0,$27)) goto mode_stdbitmap::@4 -Simple Condition (bool~) mode_stdbitmap::$25 [990] if((byte) mode_stdbitmap::cy#1!=rangelast(0,$18)) goto mode_stdbitmap::@3 -Simple Condition (bool~) mode_stdbitmap::$26 [1002] if((byte) mode_stdbitmap::l#2<(const byte) mode_stdbitmap::lines_cnt) goto mode_stdbitmap::@8 -Simple Condition (bool~) mode_hicolstdchar::$20 [1054] if((byte) mode_hicolstdchar::i#1!=rangelast(0,$f)) goto mode_hicolstdchar::@1 -Simple Condition (bool~) mode_hicolstdchar::$25 [1075] if((byte) mode_hicolstdchar::cx#1!=rangelast(0,$27)) goto mode_hicolstdchar::@4 -Simple Condition (bool~) mode_hicolstdchar::$26 [1079] if((byte) mode_hicolstdchar::cy#1!=rangelast(0,$18)) goto mode_hicolstdchar::@3 -Simple Condition (bool~) mode_hicolecmchar::$20 [1121] if((byte) mode_hicolecmchar::i#1!=rangelast(0,$f)) goto mode_hicolecmchar::@1 -Simple Condition (bool~) mode_hicolecmchar::$25 [1145] if((byte) mode_hicolecmchar::cx#1!=rangelast(0,$27)) goto mode_hicolecmchar::@4 -Simple Condition (bool~) mode_hicolecmchar::$26 [1149] if((byte) mode_hicolecmchar::cy#1!=rangelast(0,$18)) goto mode_hicolecmchar::@3 -Simple Condition (bool~) mode_hicolmcchar::$20 [1191] if((byte) mode_hicolmcchar::i#1!=rangelast(0,$f)) goto mode_hicolmcchar::@1 -Simple Condition (bool~) mode_hicolmcchar::$25 [1214] if((byte) mode_hicolmcchar::cx#1!=rangelast(0,$27)) goto mode_hicolmcchar::@4 -Simple Condition (bool~) mode_hicolmcchar::$26 [1218] if((byte) mode_hicolmcchar::cy#1!=rangelast(0,$18)) goto mode_hicolmcchar::@3 -Simple Condition (bool~) mode_twoplanebitmap::$1 [1249] if((byte) mode_twoplanebitmap::i#1!=rangelast(0,$f)) goto mode_twoplanebitmap::@1 -Simple Condition (bool~) mode_twoplanebitmap::$6 [1267] if((byte) mode_twoplanebitmap::cx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@4 -Simple Condition (bool~) mode_twoplanebitmap::$7 [1271] if((byte) mode_twoplanebitmap::cy#1!=rangelast(0,$18)) goto mode_twoplanebitmap::@3 -Simple Condition (bool~) mode_twoplanebitmap::$9 [1280] if((byte~) mode_twoplanebitmap::$8==(byte) 0) goto mode_twoplanebitmap::@9 -Simple Condition (bool~) mode_twoplanebitmap::$10 [1290] if((byte) mode_twoplanebitmap::ax#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@8 -Simple Condition (bool~) mode_twoplanebitmap::$11 [1294] if((byte) mode_twoplanebitmap::ay#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@7 -Simple Condition (bool~) mode_twoplanebitmap::$12 [1305] if((byte) mode_twoplanebitmap::bx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@16 -Simple Condition (bool~) mode_twoplanebitmap::$13 [1309] if((byte) mode_twoplanebitmap::by#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@15 -Simple Condition (bool~) mode_sixsfred::$1 [1340] if((byte) mode_sixsfred::i#1!=rangelast(0,$f)) goto mode_sixsfred::@1 -Simple Condition (bool~) mode_sixsfred::$4 [1354] if((byte) mode_sixsfred::cx#1!=rangelast(0,$27)) goto mode_sixsfred::@4 -Simple Condition (bool~) mode_sixsfred::$5 [1358] if((byte) mode_sixsfred::cy#1!=rangelast(0,$18)) goto mode_sixsfred::@3 -Simple Condition (bool~) mode_sixsfred::$8 [1373] if((byte) mode_sixsfred::ax#1!=rangelast(0,$27)) goto mode_sixsfred::@8 -Simple Condition (bool~) mode_sixsfred::$9 [1377] if((byte) mode_sixsfred::ay#1!=rangelast(0,$c7)) goto mode_sixsfred::@7 -Simple Condition (bool~) mode_sixsfred::$10 [1388] if((byte) mode_sixsfred::bx#1!=rangelast(0,$27)) goto mode_sixsfred::@12 -Simple Condition (bool~) mode_sixsfred::$11 [1392] if((byte) mode_sixsfred::by#1!=rangelast(0,$c7)) goto mode_sixsfred::@11 -Simple Condition (bool~) mode_sixsfred2::$1 [1423] if((byte) mode_sixsfred2::i#1!=rangelast(0,$f)) goto mode_sixsfred2::@1 -Simple Condition (bool~) mode_sixsfred2::$6 [1439] if((byte) mode_sixsfred2::cx#1!=rangelast(0,$27)) goto mode_sixsfred2::@4 -Simple Condition (bool~) mode_sixsfred2::$7 [1443] if((byte) mode_sixsfred2::cy#1!=rangelast(0,$18)) goto mode_sixsfred2::@3 -Simple Condition (bool~) mode_sixsfred2::$10 [1458] if((byte) mode_sixsfred2::ax#1!=rangelast(0,$27)) goto mode_sixsfred2::@8 -Simple Condition (bool~) mode_sixsfred2::$11 [1462] if((byte) mode_sixsfred2::ay#1!=rangelast(0,$c7)) goto mode_sixsfred2::@7 -Simple Condition (bool~) mode_sixsfred2::$12 [1473] if((byte) mode_sixsfred2::bx#1!=rangelast(0,$27)) goto mode_sixsfred2::@12 -Simple Condition (bool~) mode_sixsfred2::$13 [1477] if((byte) mode_sixsfred2::by#1!=rangelast(0,$c7)) goto mode_sixsfred2::@11 -Simple Condition (bool~) mode_8bpppixelcell::$1 [1507] if((byte) mode_8bpppixelcell::i#1!=rangelast(0,$f)) goto mode_8bpppixelcell::@1 -Simple Condition (bool~) mode_8bpppixelcell::$6 [1522] if((byte) mode_8bpppixelcell::ax#1!=rangelast(0,$27)) goto mode_8bpppixelcell::@4 -Simple Condition (bool~) mode_8bpppixelcell::$7 [1526] if((byte) mode_8bpppixelcell::ay#1!=rangelast(0,$18)) goto mode_8bpppixelcell::@3 -Simple Condition (bool~) mode_8bpppixelcell::$10 [1544] if((byte~) mode_8bpppixelcell::$8==(byte) 0) goto mode_8bpppixelcell::@10 -Simple Condition (bool~) mode_8bpppixelcell::$12 [1553] if((byte) mode_8bpppixelcell::cp#1!=rangelast(0,7)) goto mode_8bpppixelcell::@9 -Simple Condition (bool~) mode_8bpppixelcell::$13 [1559] if((byte) mode_8bpppixelcell::cr#1!=rangelast(0,7)) goto mode_8bpppixelcell::@8 -Simple Condition (bool~) mode_8bpppixelcell::$14 [1563] if((byte) mode_8bpppixelcell::ch#1!=rangelast(0,$ff)) goto mode_8bpppixelcell::@7 -Simple Condition (bool~) mode_8bppchunkybmm::$5 [1588] if((byte) mode_8bppchunkybmm::i#1!=rangelast(0,$f)) goto mode_8bppchunkybmm::@1 -Simple Condition (bool~) mode_8bppchunkybmm::$7 [1603] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word) $8000) goto mode_8bppchunkybmm::@5 -Simple Condition (bool~) mode_8bppchunkybmm::$11 [1612] if((word) mode_8bppchunkybmm::x#1!=rangelast(0,$13f)) goto mode_8bppchunkybmm::@4 -Simple Condition (bool~) mode_8bppchunkybmm::$12 [1622] if((byte) mode_8bppchunkybmm::y#1!=rangelast(0,$c7)) goto mode_8bppchunkybmm::@3 +Simple Condition (bool~) memset::$1 [7] if((word) memset::num#0<=(byte) 0) goto memset::@1 +Simple Condition (bool~) memset::$4 [17] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 +Simple Condition (bool~) print_str_lines::$2 [30] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@4 +Simple Condition (bool~) print_str_lines::$0 [36] if((byte) 0==(byte) print_str_lines::ch#0) goto print_str_lines::@5 +Simple Condition (bool~) print_str_lines::$3 [39] if((byte) 0!=(byte) print_str_lines::ch#0) goto print_str_lines::@4 +Simple Condition (bool~) print_ln::$1 [57] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 +Simple Condition (bool~) bitmap_init::$4 [128] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$5 [132] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$12 [147] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@6 +Simple Condition (bool~) bitmap_init::$14 [151] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 +Simple Condition (bool~) bitmap_clear::$1 [167] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 +Simple Condition (bool~) bitmap_clear::$2 [171] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 +Simple Condition (bool~) bitmap_line::$0 [187] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 +Simple Condition (bool~) bitmap_line::$12 [192] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20 +Simple Condition (bool~) bitmap_line::$2 [197] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10 +Simple Condition (bool~) bitmap_line::$8 [202] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15 +Simple Condition (bool~) bitmap_line::$4 [207] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11 +Simple Condition (bool~) bitmap_line::$18 [240] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25 +Simple Condition (bool~) bitmap_line::$14 [245] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21 +Simple Condition (bool~) bitmap_line_xdyi::$4 [288] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 +Simple Condition (bool~) bitmap_line_xdyi::$7 [292] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 +Simple Condition (bool~) bitmap_line_xdyd::$4 [311] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 +Simple Condition (bool~) bitmap_line_xdyd::$7 [315] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 +Simple Condition (bool~) bitmap_line_ydxi::$4 [334] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 +Simple Condition (bool~) bitmap_line_ydxi::$7 [338] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 +Simple Condition (bool~) bitmap_line_ydxd::$4 [358] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 +Simple Condition (bool~) bitmap_line_ydxd::$7 [362] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 +Simple Condition (bool~) menu::$22 [422] if((byte) menu::i#1!=rangelast(0,$f)) goto menu::@1 +Simple Condition (bool~) menu::$23 [427] if((byte*) menu::c#2!=(const byte*) COLS+(word) $3e8) goto menu::@4 +Simple Condition (bool~) menu::$26 [459] if((byte~) menu::$24==(byte) 0) goto menu::@12 +Simple Condition (bool~) menu::$30 [468] if((byte~) menu::$28==(byte) 0) goto menu::@13 +Simple Condition (bool~) menu::$34 [487] if((byte~) menu::$32==(byte) 0) goto menu::@14 +Simple Condition (bool~) menu::$38 [500] if((byte~) menu::$36==(byte) 0) goto menu::@15 +Simple Condition (bool~) menu::$42 [513] if((byte~) menu::$40==(byte) 0) goto menu::@16 +Simple Condition (bool~) menu::$46 [526] if((byte~) menu::$44==(byte) 0) goto menu::@17 +Simple Condition (bool~) menu::$50 [539] if((byte~) menu::$48==(byte) 0) goto menu::@18 +Simple Condition (bool~) menu::$54 [552] if((byte~) menu::$52==(byte) 0) goto menu::@19 +Simple Condition (bool~) menu::$58 [565] if((byte~) menu::$56==(byte) 0) goto menu::@20 +Simple Condition (bool~) menu::$62 [578] if((byte~) menu::$60==(byte) 0) goto menu::@21 +Simple Condition (bool~) menu::$66 [591] if((byte~) menu::$64==(byte) 0) goto menu::@22 +Simple Condition (bool~) menu::$70 [604] if((byte~) menu::$68==(byte) 0) goto menu::@9 +Simple Condition (bool~) mode_ctrl::$0 [620] if(*((const byte*) RASTER)!=(byte) $ff) goto mode_ctrl::@4 +Simple Condition (bool~) mode_ctrl::$3 [629] if((byte~) mode_ctrl::$1==(byte) 0) goto mode_ctrl::@12 +Simple Condition (bool~) mode_ctrl::$6 [639] if((byte~) mode_ctrl::$4==(byte) 0) goto mode_ctrl::@13 +Simple Condition (bool~) mode_ctrl::$10 [651] if((byte~) mode_ctrl::$8==(byte) 0) goto mode_ctrl::@14 +Simple Condition (bool~) mode_ctrl::$14 [663] if((byte~) mode_ctrl::$12==(byte) 0) goto mode_ctrl::@15 +Simple Condition (bool~) mode_ctrl::$18 [675] if((byte~) mode_ctrl::$16==(byte) 0) goto mode_ctrl::@16 +Simple Condition (bool~) mode_ctrl::$22 [687] if((byte~) mode_ctrl::$20==(byte) 0) goto mode_ctrl::@17 +Simple Condition (bool~) mode_ctrl::$26 [699] if((byte~) mode_ctrl::$24==(byte) 0) goto mode_ctrl::@18 +Simple Condition (bool~) mode_ctrl::$30 [711] if((byte~) mode_ctrl::$28==(byte) 0) goto mode_ctrl::@19 +Simple Condition (bool~) mode_ctrl::$32 [718] if((byte) mode_ctrl::ctrl#14==(byte) dtv_control#114) goto mode_ctrl::@1 +Simple Condition (bool~) mode_stdchar::$20 [759] if((byte) mode_stdchar::i#1!=rangelast(0,$f)) goto mode_stdchar::@1 +Simple Condition (bool~) mode_stdchar::$27 [781] if((byte) mode_stdchar::cx#1!=rangelast(0,$27)) goto mode_stdchar::@4 +Simple Condition (bool~) mode_stdchar::$28 [785] if((byte) mode_stdchar::cy#1!=rangelast(0,$18)) goto mode_stdchar::@3 +Simple Condition (bool~) mode_ecmchar::$20 [827] if((byte) mode_ecmchar::i#1!=rangelast(0,$f)) goto mode_ecmchar::@1 +Simple Condition (bool~) mode_ecmchar::$27 [852] if((byte) mode_ecmchar::cx#1!=rangelast(0,$27)) goto mode_ecmchar::@4 +Simple Condition (bool~) mode_ecmchar::$28 [856] if((byte) mode_ecmchar::cy#1!=rangelast(0,$18)) goto mode_ecmchar::@3 +Simple Condition (bool~) mode_mcchar::$20 [898] if((byte) mode_mcchar::i#1!=rangelast(0,$f)) goto mode_mcchar::@1 +Simple Condition (bool~) mode_mcchar::$27 [922] if((byte) mode_mcchar::cx#1!=rangelast(0,$27)) goto mode_mcchar::@4 +Simple Condition (bool~) mode_mcchar::$28 [926] if((byte) mode_mcchar::cy#1!=rangelast(0,$18)) goto mode_mcchar::@3 +Simple Condition (bool~) mode_stdbitmap::$18 [962] if((byte) mode_stdbitmap::i#1!=rangelast(0,$f)) goto mode_stdbitmap::@1 +Simple Condition (bool~) mode_stdbitmap::$24 [982] if((byte) mode_stdbitmap::cx#1!=rangelast(0,$27)) goto mode_stdbitmap::@4 +Simple Condition (bool~) mode_stdbitmap::$25 [986] if((byte) mode_stdbitmap::cy#1!=rangelast(0,$18)) goto mode_stdbitmap::@3 +Simple Condition (bool~) mode_stdbitmap::$26 [996] if((byte) mode_stdbitmap::l#2<(const byte) mode_stdbitmap::lines_cnt) goto mode_stdbitmap::@8 +Simple Condition (bool~) mode_hicolstdchar::$20 [1048] if((byte) mode_hicolstdchar::i#1!=rangelast(0,$f)) goto mode_hicolstdchar::@1 +Simple Condition (bool~) mode_hicolstdchar::$25 [1069] if((byte) mode_hicolstdchar::cx#1!=rangelast(0,$27)) goto mode_hicolstdchar::@4 +Simple Condition (bool~) mode_hicolstdchar::$26 [1073] if((byte) mode_hicolstdchar::cy#1!=rangelast(0,$18)) goto mode_hicolstdchar::@3 +Simple Condition (bool~) mode_hicolecmchar::$20 [1115] if((byte) mode_hicolecmchar::i#1!=rangelast(0,$f)) goto mode_hicolecmchar::@1 +Simple Condition (bool~) mode_hicolecmchar::$25 [1139] if((byte) mode_hicolecmchar::cx#1!=rangelast(0,$27)) goto mode_hicolecmchar::@4 +Simple Condition (bool~) mode_hicolecmchar::$26 [1143] if((byte) mode_hicolecmchar::cy#1!=rangelast(0,$18)) goto mode_hicolecmchar::@3 +Simple Condition (bool~) mode_hicolmcchar::$20 [1185] if((byte) mode_hicolmcchar::i#1!=rangelast(0,$f)) goto mode_hicolmcchar::@1 +Simple Condition (bool~) mode_hicolmcchar::$25 [1208] if((byte) mode_hicolmcchar::cx#1!=rangelast(0,$27)) goto mode_hicolmcchar::@4 +Simple Condition (bool~) mode_hicolmcchar::$26 [1212] if((byte) mode_hicolmcchar::cy#1!=rangelast(0,$18)) goto mode_hicolmcchar::@3 +Simple Condition (bool~) mode_twoplanebitmap::$1 [1243] if((byte) mode_twoplanebitmap::i#1!=rangelast(0,$f)) goto mode_twoplanebitmap::@1 +Simple Condition (bool~) mode_twoplanebitmap::$6 [1261] if((byte) mode_twoplanebitmap::cx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@4 +Simple Condition (bool~) mode_twoplanebitmap::$7 [1265] if((byte) mode_twoplanebitmap::cy#1!=rangelast(0,$18)) goto mode_twoplanebitmap::@3 +Simple Condition (bool~) mode_twoplanebitmap::$9 [1274] if((byte~) mode_twoplanebitmap::$8==(byte) 0) goto mode_twoplanebitmap::@9 +Simple Condition (bool~) mode_twoplanebitmap::$10 [1284] if((byte) mode_twoplanebitmap::ax#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@8 +Simple Condition (bool~) mode_twoplanebitmap::$11 [1288] if((byte) mode_twoplanebitmap::ay#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@7 +Simple Condition (bool~) mode_twoplanebitmap::$12 [1299] if((byte) mode_twoplanebitmap::bx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@16 +Simple Condition (bool~) mode_twoplanebitmap::$13 [1303] if((byte) mode_twoplanebitmap::by#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@15 +Simple Condition (bool~) mode_sixsfred::$1 [1334] if((byte) mode_sixsfred::i#1!=rangelast(0,$f)) goto mode_sixsfred::@1 +Simple Condition (bool~) mode_sixsfred::$4 [1348] if((byte) mode_sixsfred::cx#1!=rangelast(0,$27)) goto mode_sixsfred::@4 +Simple Condition (bool~) mode_sixsfred::$5 [1352] if((byte) mode_sixsfred::cy#1!=rangelast(0,$18)) goto mode_sixsfred::@3 +Simple Condition (bool~) mode_sixsfred::$8 [1366] if((byte) mode_sixsfred::ax#1!=rangelast(0,$27)) goto mode_sixsfred::@8 +Simple Condition (bool~) mode_sixsfred::$9 [1370] if((byte) mode_sixsfred::ay#1!=rangelast(0,$c7)) goto mode_sixsfred::@7 +Simple Condition (bool~) mode_sixsfred::$10 [1381] if((byte) mode_sixsfred::bx#1!=rangelast(0,$27)) goto mode_sixsfred::@12 +Simple Condition (bool~) mode_sixsfred::$11 [1385] if((byte) mode_sixsfred::by#1!=rangelast(0,$c7)) goto mode_sixsfred::@11 +Simple Condition (bool~) mode_sixsfred2::$1 [1416] if((byte) mode_sixsfred2::i#1!=rangelast(0,$f)) goto mode_sixsfred2::@1 +Simple Condition (bool~) mode_sixsfred2::$6 [1432] if((byte) mode_sixsfred2::cx#1!=rangelast(0,$27)) goto mode_sixsfred2::@4 +Simple Condition (bool~) mode_sixsfred2::$7 [1436] if((byte) mode_sixsfred2::cy#1!=rangelast(0,$18)) goto mode_sixsfred2::@3 +Simple Condition (bool~) mode_sixsfred2::$10 [1450] if((byte) mode_sixsfred2::ax#1!=rangelast(0,$27)) goto mode_sixsfred2::@8 +Simple Condition (bool~) mode_sixsfred2::$11 [1454] if((byte) mode_sixsfred2::ay#1!=rangelast(0,$c7)) goto mode_sixsfred2::@7 +Simple Condition (bool~) mode_sixsfred2::$12 [1465] if((byte) mode_sixsfred2::bx#1!=rangelast(0,$27)) goto mode_sixsfred2::@12 +Simple Condition (bool~) mode_sixsfred2::$13 [1469] if((byte) mode_sixsfred2::by#1!=rangelast(0,$c7)) goto mode_sixsfred2::@11 +Simple Condition (bool~) mode_8bpppixelcell::$1 [1499] if((byte) mode_8bpppixelcell::i#1!=rangelast(0,$f)) goto mode_8bpppixelcell::@1 +Simple Condition (bool~) mode_8bpppixelcell::$6 [1514] if((byte) mode_8bpppixelcell::ax#1!=rangelast(0,$27)) goto mode_8bpppixelcell::@4 +Simple Condition (bool~) mode_8bpppixelcell::$7 [1518] if((byte) mode_8bpppixelcell::ay#1!=rangelast(0,$18)) goto mode_8bpppixelcell::@3 +Simple Condition (bool~) mode_8bpppixelcell::$10 [1536] if((byte~) mode_8bpppixelcell::$8==(byte) 0) goto mode_8bpppixelcell::@10 +Simple Condition (bool~) mode_8bpppixelcell::$12 [1545] if((byte) mode_8bpppixelcell::cp#1!=rangelast(0,7)) goto mode_8bpppixelcell::@9 +Simple Condition (bool~) mode_8bpppixelcell::$13 [1551] if((byte) mode_8bpppixelcell::cr#1!=rangelast(0,7)) goto mode_8bpppixelcell::@8 +Simple Condition (bool~) mode_8bpppixelcell::$14 [1555] if((byte) mode_8bpppixelcell::ch#1!=rangelast(0,$ff)) goto mode_8bpppixelcell::@7 +Simple Condition (bool~) mode_8bppchunkybmm::$5 [1580] if((byte) mode_8bppchunkybmm::i#1!=rangelast(0,$f)) goto mode_8bppchunkybmm::@1 +Simple Condition (bool~) mode_8bppchunkybmm::$7 [1595] if((byte*) mode_8bppchunkybmm::gfxb#3!=(word) $8000) goto mode_8bppchunkybmm::@5 +Simple Condition (bool~) mode_8bppchunkybmm::$11 [1604] if((word) mode_8bppchunkybmm::x#1!=rangelast(0,$13f)) goto mode_8bppchunkybmm::@4 +Simple Condition (bool~) mode_8bppchunkybmm::$12 [1614] if((byte) mode_8bppchunkybmm::y#1!=rangelast(0,$c7)) goto mode_8bppchunkybmm::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [114] (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } -Constant right-side identified [115] (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } -Constant right-side identified [116] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } -Constant right-side identified [117] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } -Constant right-side identified [118] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } -Constant right-side identified [393] (dword~) menu::$0 ← (dword)(const byte*) menu::CHARSET -Constant right-side identified [397] (word~) menu::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [400] (word~) menu::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [405] (word~) menu::$7 ← (word)(const byte*) menu::CHARSET -Constant right-side identified [412] (word~) menu::$11 ← (word)(const byte*) menu::SCREEN -Constant right-side identified [415] (word~) menu::$14 ← (word)(const byte*) menu::CHARSET -Constant right-side identified [729] (dword~) mode_stdchar::$0 ← (dword)(const byte*) mode_stdchar::CHARSET -Constant right-side identified [733] (word~) mode_stdchar::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [736] (word~) mode_stdchar::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [742] (word~) mode_stdchar::$7 ← (word)(const byte*) mode_stdchar::CHARSET -Constant right-side identified [749] (word~) mode_stdchar::$11 ← (word)(const byte*) mode_stdchar::SCREEN -Constant right-side identified [752] (word~) mode_stdchar::$14 ← (word)(const byte*) mode_stdchar::CHARSET -Constant right-side identified [797] (dword~) mode_ecmchar::$0 ← (dword)(const byte*) mode_ecmchar::CHARSET -Constant right-side identified [801] (word~) mode_ecmchar::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [804] (word~) mode_ecmchar::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [810] (word~) mode_ecmchar::$7 ← (word)(const byte*) mode_ecmchar::CHARSET -Constant right-side identified [817] (word~) mode_ecmchar::$11 ← (word)(const byte*) mode_ecmchar::SCREEN -Constant right-side identified [820] (word~) mode_ecmchar::$14 ← (word)(const byte*) mode_ecmchar::CHARSET -Constant right-side identified [868] (dword~) mode_mcchar::$0 ← (dword)(const byte*) mode_mcchar::CHARSET -Constant right-side identified [872] (word~) mode_mcchar::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [875] (word~) mode_mcchar::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 -Constant right-side identified [881] (word~) mode_mcchar::$7 ← (word)(const byte*) mode_mcchar::CHARSET -Constant right-side identified [888] (word~) mode_mcchar::$11 ← (word)(const byte*) mode_mcchar::SCREEN -Constant right-side identified [891] (word~) mode_mcchar::$14 ← (word)(const byte*) mode_mcchar::CHARSET -Constant right-side identified [938] (dword~) mode_stdbitmap::$0 ← (dword)(const byte*) mode_stdbitmap::BITMAP -Constant right-side identified [945] (word~) mode_stdbitmap::$3 ← (word)(const byte*) mode_stdbitmap::BITMAP -Constant right-side identified [952] (word~) mode_stdbitmap::$7 ← (word)(const byte*) mode_stdbitmap::SCREEN -Constant right-side identified [955] (word~) mode_stdbitmap::$10 ← (word)(const byte*) mode_stdbitmap::BITMAP -Constant right-side identified [1020] (dword~) mode_hicolstdchar::$0 ← (dword)(const byte*) mode_hicolstdchar::CHARSET -Constant right-side identified [1024] (word~) mode_hicolstdchar::$3 ← (word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 -Constant right-side identified [1027] (word~) mode_hicolstdchar::$5 ← (word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 -Constant right-side identified [1033] (word~) mode_hicolstdchar::$7 ← (word)(const byte*) mode_hicolstdchar::CHARSET -Constant right-side identified [1040] (word~) mode_hicolstdchar::$11 ← (word)(const byte*) mode_hicolstdchar::SCREEN -Constant right-side identified [1043] (word~) mode_hicolstdchar::$14 ← (word)(const byte*) mode_hicolstdchar::CHARSET -Constant right-side identified [1087] (dword~) mode_hicolecmchar::$0 ← (dword)(const byte*) mode_hicolecmchar::CHARSET -Constant right-side identified [1091] (word~) mode_hicolecmchar::$3 ← (word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 -Constant right-side identified [1094] (word~) mode_hicolecmchar::$5 ← (word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 -Constant right-side identified [1100] (word~) mode_hicolecmchar::$7 ← (word)(const byte*) mode_hicolecmchar::CHARSET -Constant right-side identified [1107] (word~) mode_hicolecmchar::$11 ← (word)(const byte*) mode_hicolecmchar::SCREEN -Constant right-side identified [1110] (word~) mode_hicolecmchar::$14 ← (word)(const byte*) mode_hicolecmchar::CHARSET -Constant right-side identified [1157] (dword~) mode_hicolmcchar::$0 ← (dword)(const byte*) mode_hicolmcchar::CHARSET -Constant right-side identified [1161] (word~) mode_hicolmcchar::$3 ← (word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 -Constant right-side identified [1164] (word~) mode_hicolmcchar::$5 ← (word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 -Constant right-side identified [1170] (word~) mode_hicolmcchar::$7 ← (word)(const byte*) mode_hicolmcchar::CHARSET -Constant right-side identified [1177] (word~) mode_hicolmcchar::$11 ← (word)(const byte*) mode_hicolmcchar::SCREEN -Constant right-side identified [1180] (word~) mode_hicolmcchar::$14 ← (word)(const byte*) mode_hicolmcchar::CHARSET -Constant right-side identified [1590] (byte) mode_8bppchunkybmm::gfxbCpuBank#0 ← (byte)(const dword) mode_8bppchunkybmm::PLANEB/(word) $4000 -Constant right-side identified [1624] (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ← (byte)(number) $4000/(number) $4000 +Constant right-side identified [110] (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } +Constant right-side identified [111] (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } +Constant right-side identified [112] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } +Constant right-side identified [113] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } +Constant right-side identified [114] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } +Constant right-side identified [389] (dword~) menu::$0 ← (dword)(const byte*) menu::CHARSET +Constant right-side identified [393] (word~) menu::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [396] (word~) menu::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [401] (word~) menu::$7 ← (word)(const byte*) menu::CHARSET +Constant right-side identified [408] (word~) menu::$11 ← (word)(const byte*) menu::SCREEN +Constant right-side identified [411] (word~) menu::$14 ← (word)(const byte*) menu::CHARSET +Constant right-side identified [725] (dword~) mode_stdchar::$0 ← (dword)(const byte*) mode_stdchar::CHARSET +Constant right-side identified [729] (word~) mode_stdchar::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [732] (word~) mode_stdchar::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [738] (word~) mode_stdchar::$7 ← (word)(const byte*) mode_stdchar::CHARSET +Constant right-side identified [745] (word~) mode_stdchar::$11 ← (word)(const byte*) mode_stdchar::SCREEN +Constant right-side identified [748] (word~) mode_stdchar::$14 ← (word)(const byte*) mode_stdchar::CHARSET +Constant right-side identified [793] (dword~) mode_ecmchar::$0 ← (dword)(const byte*) mode_ecmchar::CHARSET +Constant right-side identified [797] (word~) mode_ecmchar::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [800] (word~) mode_ecmchar::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [806] (word~) mode_ecmchar::$7 ← (word)(const byte*) mode_ecmchar::CHARSET +Constant right-side identified [813] (word~) mode_ecmchar::$11 ← (word)(const byte*) mode_ecmchar::SCREEN +Constant right-side identified [816] (word~) mode_ecmchar::$14 ← (word)(const byte*) mode_ecmchar::CHARSET +Constant right-side identified [864] (dword~) mode_mcchar::$0 ← (dword)(const byte*) mode_mcchar::CHARSET +Constant right-side identified [868] (word~) mode_mcchar::$3 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [871] (word~) mode_mcchar::$5 ← (word)(const dword) DTV_COLOR_BANK_DEFAULT/(word) $400 +Constant right-side identified [877] (word~) mode_mcchar::$7 ← (word)(const byte*) mode_mcchar::CHARSET +Constant right-side identified [884] (word~) mode_mcchar::$11 ← (word)(const byte*) mode_mcchar::SCREEN +Constant right-side identified [887] (word~) mode_mcchar::$14 ← (word)(const byte*) mode_mcchar::CHARSET +Constant right-side identified [934] (dword~) mode_stdbitmap::$0 ← (dword)(const byte*) mode_stdbitmap::BITMAP +Constant right-side identified [941] (word~) mode_stdbitmap::$3 ← (word)(const byte*) mode_stdbitmap::BITMAP +Constant right-side identified [948] (word~) mode_stdbitmap::$7 ← (word)(const byte*) mode_stdbitmap::SCREEN +Constant right-side identified [951] (word~) mode_stdbitmap::$10 ← (word)(const byte*) mode_stdbitmap::BITMAP +Constant right-side identified [1014] (dword~) mode_hicolstdchar::$0 ← (dword)(const byte*) mode_hicolstdchar::CHARSET +Constant right-side identified [1018] (word~) mode_hicolstdchar::$3 ← (word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 +Constant right-side identified [1021] (word~) mode_hicolstdchar::$5 ← (word)(const byte*) mode_hicolstdchar::COLORS/(word) $400 +Constant right-side identified [1027] (word~) mode_hicolstdchar::$7 ← (word)(const byte*) mode_hicolstdchar::CHARSET +Constant right-side identified [1034] (word~) mode_hicolstdchar::$11 ← (word)(const byte*) mode_hicolstdchar::SCREEN +Constant right-side identified [1037] (word~) mode_hicolstdchar::$14 ← (word)(const byte*) mode_hicolstdchar::CHARSET +Constant right-side identified [1081] (dword~) mode_hicolecmchar::$0 ← (dword)(const byte*) mode_hicolecmchar::CHARSET +Constant right-side identified [1085] (word~) mode_hicolecmchar::$3 ← (word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 +Constant right-side identified [1088] (word~) mode_hicolecmchar::$5 ← (word)(const byte*) mode_hicolecmchar::COLORS/(word) $400 +Constant right-side identified [1094] (word~) mode_hicolecmchar::$7 ← (word)(const byte*) mode_hicolecmchar::CHARSET +Constant right-side identified [1101] (word~) mode_hicolecmchar::$11 ← (word)(const byte*) mode_hicolecmchar::SCREEN +Constant right-side identified [1104] (word~) mode_hicolecmchar::$14 ← (word)(const byte*) mode_hicolecmchar::CHARSET +Constant right-side identified [1151] (dword~) mode_hicolmcchar::$0 ← (dword)(const byte*) mode_hicolmcchar::CHARSET +Constant right-side identified [1155] (word~) mode_hicolmcchar::$3 ← (word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 +Constant right-side identified [1158] (word~) mode_hicolmcchar::$5 ← (word)(const byte*) mode_hicolmcchar::COLORS/(word) $400 +Constant right-side identified [1164] (word~) mode_hicolmcchar::$7 ← (word)(const byte*) mode_hicolmcchar::CHARSET +Constant right-side identified [1171] (word~) mode_hicolmcchar::$11 ← (word)(const byte*) mode_hicolmcchar::SCREEN +Constant right-side identified [1174] (word~) mode_hicolmcchar::$14 ← (word)(const byte*) mode_hicolmcchar::CHARSET +Constant right-side identified [1582] (byte) mode_8bppchunkybmm::gfxbCpuBank#0 ← (byte)(const dword) mode_8bppchunkybmm::PLANEB/(word) $4000 +Constant right-side identified [1616] (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ← (byte)(number) $4000/(number) $4000 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[$10]) { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a } -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Identified constant from value list (byte[]) { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } -Identified constant from value list (byte[]) { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[$10]) DTV_PALETTE_DEFAULT = { 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a } Constant (const byte*) print_screen#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte[$100]) bitmap_plot_xlo = { fill( $100, 0) } Constant (const byte[$100]) bitmap_plot_xhi = { fill( $100, 0) } Constant (const byte[$100]) bitmap_plot_ylo = { fill( $100, 0) } @@ -7976,8 +7940,6 @@ Constant (const byte*) mode_stdbitmap::ch#0 = mode_stdbitmap::SCREEN Constant (const byte) mode_stdbitmap::cy#0 = 0 Constant (const byte) mode_stdbitmap::cx#0 = 0 Constant (const byte*) bitmap_init::bitmap#0 = mode_stdbitmap::BITMAP -Constant (const byte[]) mode_stdbitmap::lines_x = { 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 } -Constant (const byte[]) mode_stdbitmap::lines_y = { 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } Constant (const byte) mode_stdbitmap::l#0 = 0 Constant (const dword) mode_hicolstdchar::$0 = (dword)mode_hicolstdchar::CHARSET Constant (const word) mode_hicolstdchar::$3 = (word)mode_hicolstdchar::COLORS/$400 @@ -8032,7 +7994,6 @@ Constant (const byte*) mode_sixsfred::col#0 = mode_sixsfred::COLORS Constant (const byte) mode_sixsfred::cy#0 = 0 Constant (const byte) mode_sixsfred::cx#0 = 0 Constant (const byte*) mode_sixsfred::gfxa#0 = mode_sixsfred::PLANEA -Constant (const byte[]) mode_sixsfred::row_bitmask = { 0, $55, $aa, $ff } Constant (const byte) mode_sixsfred::ay#0 = 0 Constant (const byte) mode_sixsfred::ax#0 = 0 Constant (const byte*) mode_sixsfred::gfxb#0 = mode_sixsfred::PLANEB @@ -8044,7 +8005,6 @@ Constant (const byte*) mode_sixsfred2::col#0 = mode_sixsfred2::COLORS Constant (const byte) mode_sixsfred2::cy#0 = 0 Constant (const byte) mode_sixsfred2::cx#0 = 0 Constant (const byte*) mode_sixsfred2::gfxa#0 = mode_sixsfred2::PLANEA -Constant (const byte[]) mode_sixsfred2::row_bitmask = { 0, $55, $aa, $ff } Constant (const byte) mode_sixsfred2::ay#0 = 0 Constant (const byte) mode_sixsfred2::ax#0 = 0 Constant (const byte*) mode_sixsfred2::gfxb#0 = mode_sixsfred2::PLANEB @@ -8080,138 +8040,138 @@ Constant (const byte*) memset::$2 = (byte*)memset::str#0 Constant (const byte*) memset::dst#0 = (byte*)memset::str#0 Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification -if() condition always false - eliminating [8] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -if() condition always true - replacing block destination [378] if(true) goto main::@2 +if() condition always false - eliminating [7] if((const word) memset::num#0<=(byte) 0) goto memset::@1 +if() condition always true - replacing block destination [374] if(true) goto main::@2 Removing PHI-reference to removed block (menu::@9) in block menu::@return -if() condition always true - replacing block destination [454] if(true) goto menu::@10 -if() condition always true - replacing block destination [621] if(true) goto mode_ctrl::@4 +if() condition always true - replacing block destination [450] if(true) goto menu::@10 +if() condition always true - replacing block destination [617] if(true) goto mode_ctrl::@4 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [134] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ -Resolved ranged comparison value [136] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 -Resolved ranged next value [153] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ -Resolved ranged comparison value [155] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 -Resolved ranged next value [169] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ -Resolved ranged comparison value [171] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 -Resolved ranged next value [173] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ -Resolved ranged comparison value [175] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 -Resolved ranged next value [424] menu::i#1 ← ++ menu::i#2 to ++ -Resolved ranged comparison value [426] if(menu::i#1!=rangelast(0,$f)) goto menu::@1 to (number) $10 -Resolved ranged next value [761] mode_stdchar::i#1 ← ++ mode_stdchar::i#2 to ++ -Resolved ranged comparison value [763] if(mode_stdchar::i#1!=rangelast(0,$f)) goto mode_stdchar::@1 to (number) $10 -Resolved ranged next value [783] mode_stdchar::cx#1 ← ++ mode_stdchar::cx#2 to ++ -Resolved ranged comparison value [785] if(mode_stdchar::cx#1!=rangelast(0,$27)) goto mode_stdchar::@4 to (number) $28 -Resolved ranged next value [787] mode_stdchar::cy#1 ← ++ mode_stdchar::cy#4 to ++ -Resolved ranged comparison value [789] if(mode_stdchar::cy#1!=rangelast(0,$18)) goto mode_stdchar::@3 to (number) $19 -Resolved ranged next value [829] mode_ecmchar::i#1 ← ++ mode_ecmchar::i#2 to ++ -Resolved ranged comparison value [831] if(mode_ecmchar::i#1!=rangelast(0,$f)) goto mode_ecmchar::@1 to (number) $10 -Resolved ranged next value [854] mode_ecmchar::cx#1 ← ++ mode_ecmchar::cx#2 to ++ -Resolved ranged comparison value [856] if(mode_ecmchar::cx#1!=rangelast(0,$27)) goto mode_ecmchar::@4 to (number) $28 -Resolved ranged next value [858] mode_ecmchar::cy#1 ← ++ mode_ecmchar::cy#4 to ++ -Resolved ranged comparison value [860] if(mode_ecmchar::cy#1!=rangelast(0,$18)) goto mode_ecmchar::@3 to (number) $19 -Resolved ranged next value [900] mode_mcchar::i#1 ← ++ mode_mcchar::i#2 to ++ -Resolved ranged comparison value [902] if(mode_mcchar::i#1!=rangelast(0,$f)) goto mode_mcchar::@1 to (number) $10 -Resolved ranged next value [924] mode_mcchar::cx#1 ← ++ mode_mcchar::cx#2 to ++ -Resolved ranged comparison value [926] if(mode_mcchar::cx#1!=rangelast(0,$27)) goto mode_mcchar::@4 to (number) $28 -Resolved ranged next value [928] mode_mcchar::cy#1 ← ++ mode_mcchar::cy#4 to ++ -Resolved ranged comparison value [930] if(mode_mcchar::cy#1!=rangelast(0,$18)) goto mode_mcchar::@3 to (number) $19 -Resolved ranged next value [964] mode_stdbitmap::i#1 ← ++ mode_stdbitmap::i#2 to ++ -Resolved ranged comparison value [966] if(mode_stdbitmap::i#1!=rangelast(0,$f)) goto mode_stdbitmap::@1 to (number) $10 -Resolved ranged next value [984] mode_stdbitmap::cx#1 ← ++ mode_stdbitmap::cx#2 to ++ -Resolved ranged comparison value [986] if(mode_stdbitmap::cx#1!=rangelast(0,$27)) goto mode_stdbitmap::@4 to (number) $28 -Resolved ranged next value [988] mode_stdbitmap::cy#1 ← ++ mode_stdbitmap::cy#4 to ++ -Resolved ranged comparison value [990] if(mode_stdbitmap::cy#1!=rangelast(0,$18)) goto mode_stdbitmap::@3 to (number) $19 -Resolved ranged next value [1052] mode_hicolstdchar::i#1 ← ++ mode_hicolstdchar::i#2 to ++ -Resolved ranged comparison value [1054] if(mode_hicolstdchar::i#1!=rangelast(0,$f)) goto mode_hicolstdchar::@1 to (number) $10 -Resolved ranged next value [1073] mode_hicolstdchar::cx#1 ← ++ mode_hicolstdchar::cx#2 to ++ -Resolved ranged comparison value [1075] if(mode_hicolstdchar::cx#1!=rangelast(0,$27)) goto mode_hicolstdchar::@4 to (number) $28 -Resolved ranged next value [1077] mode_hicolstdchar::cy#1 ← ++ mode_hicolstdchar::cy#4 to ++ -Resolved ranged comparison value [1079] if(mode_hicolstdchar::cy#1!=rangelast(0,$18)) goto mode_hicolstdchar::@3 to (number) $19 -Resolved ranged next value [1119] mode_hicolecmchar::i#1 ← ++ mode_hicolecmchar::i#2 to ++ -Resolved ranged comparison value [1121] if(mode_hicolecmchar::i#1!=rangelast(0,$f)) goto mode_hicolecmchar::@1 to (number) $10 -Resolved ranged next value [1143] mode_hicolecmchar::cx#1 ← ++ mode_hicolecmchar::cx#2 to ++ -Resolved ranged comparison value [1145] if(mode_hicolecmchar::cx#1!=rangelast(0,$27)) goto mode_hicolecmchar::@4 to (number) $28 -Resolved ranged next value [1147] mode_hicolecmchar::cy#1 ← ++ mode_hicolecmchar::cy#4 to ++ -Resolved ranged comparison value [1149] if(mode_hicolecmchar::cy#1!=rangelast(0,$18)) goto mode_hicolecmchar::@3 to (number) $19 -Resolved ranged next value [1189] mode_hicolmcchar::i#1 ← ++ mode_hicolmcchar::i#2 to ++ -Resolved ranged comparison value [1191] if(mode_hicolmcchar::i#1!=rangelast(0,$f)) goto mode_hicolmcchar::@1 to (number) $10 -Resolved ranged next value [1212] mode_hicolmcchar::cx#1 ← ++ mode_hicolmcchar::cx#2 to ++ -Resolved ranged comparison value [1214] if(mode_hicolmcchar::cx#1!=rangelast(0,$27)) goto mode_hicolmcchar::@4 to (number) $28 -Resolved ranged next value [1216] mode_hicolmcchar::cy#1 ← ++ mode_hicolmcchar::cy#4 to ++ -Resolved ranged comparison value [1218] if(mode_hicolmcchar::cy#1!=rangelast(0,$18)) goto mode_hicolmcchar::@3 to (number) $19 -Resolved ranged next value [1247] mode_twoplanebitmap::i#1 ← ++ mode_twoplanebitmap::i#2 to ++ -Resolved ranged comparison value [1249] if(mode_twoplanebitmap::i#1!=rangelast(0,$f)) goto mode_twoplanebitmap::@1 to (number) $10 -Resolved ranged next value [1265] mode_twoplanebitmap::cx#1 ← ++ mode_twoplanebitmap::cx#2 to ++ -Resolved ranged comparison value [1267] if(mode_twoplanebitmap::cx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@4 to (number) $28 -Resolved ranged next value [1269] mode_twoplanebitmap::cy#1 ← ++ mode_twoplanebitmap::cy#4 to ++ -Resolved ranged comparison value [1271] if(mode_twoplanebitmap::cy#1!=rangelast(0,$18)) goto mode_twoplanebitmap::@3 to (number) $19 -Resolved ranged next value [1288] mode_twoplanebitmap::ax#1 ← ++ mode_twoplanebitmap::ax#2 to ++ -Resolved ranged comparison value [1290] if(mode_twoplanebitmap::ax#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@8 to (number) $28 -Resolved ranged next value [1292] mode_twoplanebitmap::ay#1 ← ++ mode_twoplanebitmap::ay#5 to ++ -Resolved ranged comparison value [1294] if(mode_twoplanebitmap::ay#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@7 to (number) $c8 -Resolved ranged next value [1303] mode_twoplanebitmap::bx#1 ← ++ mode_twoplanebitmap::bx#2 to ++ -Resolved ranged comparison value [1305] if(mode_twoplanebitmap::bx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@16 to (number) $28 -Resolved ranged next value [1307] mode_twoplanebitmap::by#1 ← ++ mode_twoplanebitmap::by#4 to ++ -Resolved ranged comparison value [1309] if(mode_twoplanebitmap::by#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@15 to (number) $c8 -Resolved ranged next value [1338] mode_sixsfred::i#1 ← ++ mode_sixsfred::i#2 to ++ -Resolved ranged comparison value [1340] if(mode_sixsfred::i#1!=rangelast(0,$f)) goto mode_sixsfred::@1 to (number) $10 -Resolved ranged next value [1352] mode_sixsfred::cx#1 ← ++ mode_sixsfred::cx#2 to ++ -Resolved ranged comparison value [1354] if(mode_sixsfred::cx#1!=rangelast(0,$27)) goto mode_sixsfred::@4 to (number) $28 -Resolved ranged next value [1356] mode_sixsfred::cy#1 ← ++ mode_sixsfred::cy#4 to ++ -Resolved ranged comparison value [1358] if(mode_sixsfred::cy#1!=rangelast(0,$18)) goto mode_sixsfred::@3 to (number) $19 -Resolved ranged next value [1371] mode_sixsfred::ax#1 ← ++ mode_sixsfred::ax#2 to ++ -Resolved ranged comparison value [1373] if(mode_sixsfred::ax#1!=rangelast(0,$27)) goto mode_sixsfred::@8 to (number) $28 -Resolved ranged next value [1375] mode_sixsfred::ay#1 ← ++ mode_sixsfred::ay#4 to ++ -Resolved ranged comparison value [1377] if(mode_sixsfred::ay#1!=rangelast(0,$c7)) goto mode_sixsfred::@7 to (number) $c8 -Resolved ranged next value [1386] mode_sixsfred::bx#1 ← ++ mode_sixsfred::bx#2 to ++ -Resolved ranged comparison value [1388] if(mode_sixsfred::bx#1!=rangelast(0,$27)) goto mode_sixsfred::@12 to (number) $28 -Resolved ranged next value [1390] mode_sixsfred::by#1 ← ++ mode_sixsfred::by#4 to ++ -Resolved ranged comparison value [1392] if(mode_sixsfred::by#1!=rangelast(0,$c7)) goto mode_sixsfred::@11 to (number) $c8 -Resolved ranged next value [1421] mode_sixsfred2::i#1 ← ++ mode_sixsfred2::i#2 to ++ -Resolved ranged comparison value [1423] if(mode_sixsfred2::i#1!=rangelast(0,$f)) goto mode_sixsfred2::@1 to (number) $10 -Resolved ranged next value [1437] mode_sixsfred2::cx#1 ← ++ mode_sixsfred2::cx#2 to ++ -Resolved ranged comparison value [1439] if(mode_sixsfred2::cx#1!=rangelast(0,$27)) goto mode_sixsfred2::@4 to (number) $28 -Resolved ranged next value [1441] mode_sixsfred2::cy#1 ← ++ mode_sixsfred2::cy#4 to ++ -Resolved ranged comparison value [1443] if(mode_sixsfred2::cy#1!=rangelast(0,$18)) goto mode_sixsfred2::@3 to (number) $19 -Resolved ranged next value [1456] mode_sixsfred2::ax#1 ← ++ mode_sixsfred2::ax#2 to ++ -Resolved ranged comparison value [1458] if(mode_sixsfred2::ax#1!=rangelast(0,$27)) goto mode_sixsfred2::@8 to (number) $28 -Resolved ranged next value [1460] mode_sixsfred2::ay#1 ← ++ mode_sixsfred2::ay#4 to ++ -Resolved ranged comparison value [1462] if(mode_sixsfred2::ay#1!=rangelast(0,$c7)) goto mode_sixsfred2::@7 to (number) $c8 -Resolved ranged next value [1471] mode_sixsfred2::bx#1 ← ++ mode_sixsfred2::bx#2 to ++ -Resolved ranged comparison value [1473] if(mode_sixsfred2::bx#1!=rangelast(0,$27)) goto mode_sixsfred2::@12 to (number) $28 -Resolved ranged next value [1475] mode_sixsfred2::by#1 ← ++ mode_sixsfred2::by#4 to ++ -Resolved ranged comparison value [1477] if(mode_sixsfred2::by#1!=rangelast(0,$c7)) goto mode_sixsfred2::@11 to (number) $c8 -Resolved ranged next value [1505] mode_8bpppixelcell::i#1 ← ++ mode_8bpppixelcell::i#2 to ++ -Resolved ranged comparison value [1507] if(mode_8bpppixelcell::i#1!=rangelast(0,$f)) goto mode_8bpppixelcell::@1 to (number) $10 -Resolved ranged next value [1520] mode_8bpppixelcell::ax#1 ← ++ mode_8bpppixelcell::ax#2 to ++ -Resolved ranged comparison value [1522] if(mode_8bpppixelcell::ax#1!=rangelast(0,$27)) goto mode_8bpppixelcell::@4 to (number) $28 -Resolved ranged next value [1524] mode_8bpppixelcell::ay#1 ← ++ mode_8bpppixelcell::ay#4 to ++ -Resolved ranged comparison value [1526] if(mode_8bpppixelcell::ay#1!=rangelast(0,$18)) goto mode_8bpppixelcell::@3 to (number) $19 -Resolved ranged next value [1551] mode_8bpppixelcell::cp#1 ← ++ mode_8bpppixelcell::cp#2 to ++ -Resolved ranged comparison value [1553] if(mode_8bpppixelcell::cp#1!=rangelast(0,7)) goto mode_8bpppixelcell::@9 to (number) 8 -Resolved ranged next value [1557] mode_8bpppixelcell::cr#1 ← ++ mode_8bpppixelcell::cr#6 to ++ -Resolved ranged comparison value [1559] if(mode_8bpppixelcell::cr#1!=rangelast(0,7)) goto mode_8bpppixelcell::@8 to (number) 8 -Resolved ranged next value [1561] mode_8bpppixelcell::ch#1 ← ++ mode_8bpppixelcell::ch#8 to ++ -Resolved ranged comparison value [1563] if(mode_8bpppixelcell::ch#1!=rangelast(0,$ff)) goto mode_8bpppixelcell::@7 to (number) 0 -Resolved ranged next value [1586] mode_8bppchunkybmm::i#1 ← ++ mode_8bppchunkybmm::i#2 to ++ -Resolved ranged comparison value [1588] if(mode_8bppchunkybmm::i#1!=rangelast(0,$f)) goto mode_8bppchunkybmm::@1 to (number) $10 -Resolved ranged next value [1610] mode_8bppchunkybmm::x#1 ← ++ mode_8bppchunkybmm::x#2 to ++ -Resolved ranged comparison value [1612] if(mode_8bppchunkybmm::x#1!=rangelast(0,$13f)) goto mode_8bppchunkybmm::@4 to (number) $140 -Resolved ranged next value [1620] mode_8bppchunkybmm::y#1 ← ++ mode_8bppchunkybmm::y#6 to ++ -Resolved ranged comparison value [1622] if(mode_8bppchunkybmm::y#1!=rangelast(0,$c7)) goto mode_8bppchunkybmm::@3 to (number) $c8 -Simplifying constant evaluating to zero <(const byte*) mode_twoplanebitmap::PLANEA in [1230] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_twoplanebitmap::PLANEA -Simplifying constant evaluating to zero <(const byte*) mode_twoplanebitmap::PLANEB in [1236] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_twoplanebitmap::PLANEB -Simplifying constant evaluating to zero >(const byte*) mode_twoplanebitmap::COLORS/(word) $400 in [1243] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_twoplanebitmap::COLORS/(word) $400 -Simplifying constant evaluating to zero <(const byte*) mode_sixsfred::PLANEA in [1321] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_sixsfred::PLANEA -Simplifying constant evaluating to zero <(const byte*) mode_sixsfred::PLANEB in [1327] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_sixsfred::PLANEB -Simplifying constant evaluating to zero >(const byte*) mode_sixsfred::COLORS/(word) $400 in [1334] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_sixsfred::COLORS/(word) $400 -Simplifying constant evaluating to zero <(const byte*) mode_sixsfred2::PLANEA in [1404] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_sixsfred2::PLANEA -Simplifying constant evaluating to zero <(const byte*) mode_sixsfred2::PLANEB in [1410] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_sixsfred2::PLANEB -Simplifying constant evaluating to zero >(const byte*) mode_sixsfred2::COLORS/(word) $400 in [1417] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_sixsfred2::COLORS/(word) $400 -Simplifying constant evaluating to zero <(const byte*) mode_8bpppixelcell::PLANEA in [1489] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_8bpppixelcell::PLANEA -Simplifying constant evaluating to zero <(const byte*) mode_8bpppixelcell::PLANEB in [1495] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_8bpppixelcell::PLANEB +Resolved ranged next value [130] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ +Resolved ranged comparison value [132] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 +Resolved ranged next value [149] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ +Resolved ranged comparison value [151] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 +Resolved ranged next value [165] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ +Resolved ranged comparison value [167] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 +Resolved ranged next value [169] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ +Resolved ranged comparison value [171] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 +Resolved ranged next value [420] menu::i#1 ← ++ menu::i#2 to ++ +Resolved ranged comparison value [422] if(menu::i#1!=rangelast(0,$f)) goto menu::@1 to (number) $10 +Resolved ranged next value [757] mode_stdchar::i#1 ← ++ mode_stdchar::i#2 to ++ +Resolved ranged comparison value [759] if(mode_stdchar::i#1!=rangelast(0,$f)) goto mode_stdchar::@1 to (number) $10 +Resolved ranged next value [779] mode_stdchar::cx#1 ← ++ mode_stdchar::cx#2 to ++ +Resolved ranged comparison value [781] if(mode_stdchar::cx#1!=rangelast(0,$27)) goto mode_stdchar::@4 to (number) $28 +Resolved ranged next value [783] mode_stdchar::cy#1 ← ++ mode_stdchar::cy#4 to ++ +Resolved ranged comparison value [785] if(mode_stdchar::cy#1!=rangelast(0,$18)) goto mode_stdchar::@3 to (number) $19 +Resolved ranged next value [825] mode_ecmchar::i#1 ← ++ mode_ecmchar::i#2 to ++ +Resolved ranged comparison value [827] if(mode_ecmchar::i#1!=rangelast(0,$f)) goto mode_ecmchar::@1 to (number) $10 +Resolved ranged next value [850] mode_ecmchar::cx#1 ← ++ mode_ecmchar::cx#2 to ++ +Resolved ranged comparison value [852] if(mode_ecmchar::cx#1!=rangelast(0,$27)) goto mode_ecmchar::@4 to (number) $28 +Resolved ranged next value [854] mode_ecmchar::cy#1 ← ++ mode_ecmchar::cy#4 to ++ +Resolved ranged comparison value [856] if(mode_ecmchar::cy#1!=rangelast(0,$18)) goto mode_ecmchar::@3 to (number) $19 +Resolved ranged next value [896] mode_mcchar::i#1 ← ++ mode_mcchar::i#2 to ++ +Resolved ranged comparison value [898] if(mode_mcchar::i#1!=rangelast(0,$f)) goto mode_mcchar::@1 to (number) $10 +Resolved ranged next value [920] mode_mcchar::cx#1 ← ++ mode_mcchar::cx#2 to ++ +Resolved ranged comparison value [922] if(mode_mcchar::cx#1!=rangelast(0,$27)) goto mode_mcchar::@4 to (number) $28 +Resolved ranged next value [924] mode_mcchar::cy#1 ← ++ mode_mcchar::cy#4 to ++ +Resolved ranged comparison value [926] if(mode_mcchar::cy#1!=rangelast(0,$18)) goto mode_mcchar::@3 to (number) $19 +Resolved ranged next value [960] mode_stdbitmap::i#1 ← ++ mode_stdbitmap::i#2 to ++ +Resolved ranged comparison value [962] if(mode_stdbitmap::i#1!=rangelast(0,$f)) goto mode_stdbitmap::@1 to (number) $10 +Resolved ranged next value [980] mode_stdbitmap::cx#1 ← ++ mode_stdbitmap::cx#2 to ++ +Resolved ranged comparison value [982] if(mode_stdbitmap::cx#1!=rangelast(0,$27)) goto mode_stdbitmap::@4 to (number) $28 +Resolved ranged next value [984] mode_stdbitmap::cy#1 ← ++ mode_stdbitmap::cy#4 to ++ +Resolved ranged comparison value [986] if(mode_stdbitmap::cy#1!=rangelast(0,$18)) goto mode_stdbitmap::@3 to (number) $19 +Resolved ranged next value [1046] mode_hicolstdchar::i#1 ← ++ mode_hicolstdchar::i#2 to ++ +Resolved ranged comparison value [1048] if(mode_hicolstdchar::i#1!=rangelast(0,$f)) goto mode_hicolstdchar::@1 to (number) $10 +Resolved ranged next value [1067] mode_hicolstdchar::cx#1 ← ++ mode_hicolstdchar::cx#2 to ++ +Resolved ranged comparison value [1069] if(mode_hicolstdchar::cx#1!=rangelast(0,$27)) goto mode_hicolstdchar::@4 to (number) $28 +Resolved ranged next value [1071] mode_hicolstdchar::cy#1 ← ++ mode_hicolstdchar::cy#4 to ++ +Resolved ranged comparison value [1073] if(mode_hicolstdchar::cy#1!=rangelast(0,$18)) goto mode_hicolstdchar::@3 to (number) $19 +Resolved ranged next value [1113] mode_hicolecmchar::i#1 ← ++ mode_hicolecmchar::i#2 to ++ +Resolved ranged comparison value [1115] if(mode_hicolecmchar::i#1!=rangelast(0,$f)) goto mode_hicolecmchar::@1 to (number) $10 +Resolved ranged next value [1137] mode_hicolecmchar::cx#1 ← ++ mode_hicolecmchar::cx#2 to ++ +Resolved ranged comparison value [1139] if(mode_hicolecmchar::cx#1!=rangelast(0,$27)) goto mode_hicolecmchar::@4 to (number) $28 +Resolved ranged next value [1141] mode_hicolecmchar::cy#1 ← ++ mode_hicolecmchar::cy#4 to ++ +Resolved ranged comparison value [1143] if(mode_hicolecmchar::cy#1!=rangelast(0,$18)) goto mode_hicolecmchar::@3 to (number) $19 +Resolved ranged next value [1183] mode_hicolmcchar::i#1 ← ++ mode_hicolmcchar::i#2 to ++ +Resolved ranged comparison value [1185] if(mode_hicolmcchar::i#1!=rangelast(0,$f)) goto mode_hicolmcchar::@1 to (number) $10 +Resolved ranged next value [1206] mode_hicolmcchar::cx#1 ← ++ mode_hicolmcchar::cx#2 to ++ +Resolved ranged comparison value [1208] if(mode_hicolmcchar::cx#1!=rangelast(0,$27)) goto mode_hicolmcchar::@4 to (number) $28 +Resolved ranged next value [1210] mode_hicolmcchar::cy#1 ← ++ mode_hicolmcchar::cy#4 to ++ +Resolved ranged comparison value [1212] if(mode_hicolmcchar::cy#1!=rangelast(0,$18)) goto mode_hicolmcchar::@3 to (number) $19 +Resolved ranged next value [1241] mode_twoplanebitmap::i#1 ← ++ mode_twoplanebitmap::i#2 to ++ +Resolved ranged comparison value [1243] if(mode_twoplanebitmap::i#1!=rangelast(0,$f)) goto mode_twoplanebitmap::@1 to (number) $10 +Resolved ranged next value [1259] mode_twoplanebitmap::cx#1 ← ++ mode_twoplanebitmap::cx#2 to ++ +Resolved ranged comparison value [1261] if(mode_twoplanebitmap::cx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@4 to (number) $28 +Resolved ranged next value [1263] mode_twoplanebitmap::cy#1 ← ++ mode_twoplanebitmap::cy#4 to ++ +Resolved ranged comparison value [1265] if(mode_twoplanebitmap::cy#1!=rangelast(0,$18)) goto mode_twoplanebitmap::@3 to (number) $19 +Resolved ranged next value [1282] mode_twoplanebitmap::ax#1 ← ++ mode_twoplanebitmap::ax#2 to ++ +Resolved ranged comparison value [1284] if(mode_twoplanebitmap::ax#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@8 to (number) $28 +Resolved ranged next value [1286] mode_twoplanebitmap::ay#1 ← ++ mode_twoplanebitmap::ay#5 to ++ +Resolved ranged comparison value [1288] if(mode_twoplanebitmap::ay#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@7 to (number) $c8 +Resolved ranged next value [1297] mode_twoplanebitmap::bx#1 ← ++ mode_twoplanebitmap::bx#2 to ++ +Resolved ranged comparison value [1299] if(mode_twoplanebitmap::bx#1!=rangelast(0,$27)) goto mode_twoplanebitmap::@16 to (number) $28 +Resolved ranged next value [1301] mode_twoplanebitmap::by#1 ← ++ mode_twoplanebitmap::by#4 to ++ +Resolved ranged comparison value [1303] if(mode_twoplanebitmap::by#1!=rangelast(0,$c7)) goto mode_twoplanebitmap::@15 to (number) $c8 +Resolved ranged next value [1332] mode_sixsfred::i#1 ← ++ mode_sixsfred::i#2 to ++ +Resolved ranged comparison value [1334] if(mode_sixsfred::i#1!=rangelast(0,$f)) goto mode_sixsfred::@1 to (number) $10 +Resolved ranged next value [1346] mode_sixsfred::cx#1 ← ++ mode_sixsfred::cx#2 to ++ +Resolved ranged comparison value [1348] if(mode_sixsfred::cx#1!=rangelast(0,$27)) goto mode_sixsfred::@4 to (number) $28 +Resolved ranged next value [1350] mode_sixsfred::cy#1 ← ++ mode_sixsfred::cy#4 to ++ +Resolved ranged comparison value [1352] if(mode_sixsfred::cy#1!=rangelast(0,$18)) goto mode_sixsfred::@3 to (number) $19 +Resolved ranged next value [1364] mode_sixsfred::ax#1 ← ++ mode_sixsfred::ax#2 to ++ +Resolved ranged comparison value [1366] if(mode_sixsfred::ax#1!=rangelast(0,$27)) goto mode_sixsfred::@8 to (number) $28 +Resolved ranged next value [1368] mode_sixsfred::ay#1 ← ++ mode_sixsfred::ay#4 to ++ +Resolved ranged comparison value [1370] if(mode_sixsfred::ay#1!=rangelast(0,$c7)) goto mode_sixsfred::@7 to (number) $c8 +Resolved ranged next value [1379] mode_sixsfred::bx#1 ← ++ mode_sixsfred::bx#2 to ++ +Resolved ranged comparison value [1381] if(mode_sixsfred::bx#1!=rangelast(0,$27)) goto mode_sixsfred::@12 to (number) $28 +Resolved ranged next value [1383] mode_sixsfred::by#1 ← ++ mode_sixsfred::by#4 to ++ +Resolved ranged comparison value [1385] if(mode_sixsfred::by#1!=rangelast(0,$c7)) goto mode_sixsfred::@11 to (number) $c8 +Resolved ranged next value [1414] mode_sixsfred2::i#1 ← ++ mode_sixsfred2::i#2 to ++ +Resolved ranged comparison value [1416] if(mode_sixsfred2::i#1!=rangelast(0,$f)) goto mode_sixsfred2::@1 to (number) $10 +Resolved ranged next value [1430] mode_sixsfred2::cx#1 ← ++ mode_sixsfred2::cx#2 to ++ +Resolved ranged comparison value [1432] if(mode_sixsfred2::cx#1!=rangelast(0,$27)) goto mode_sixsfred2::@4 to (number) $28 +Resolved ranged next value [1434] mode_sixsfred2::cy#1 ← ++ mode_sixsfred2::cy#4 to ++ +Resolved ranged comparison value [1436] if(mode_sixsfred2::cy#1!=rangelast(0,$18)) goto mode_sixsfred2::@3 to (number) $19 +Resolved ranged next value [1448] mode_sixsfred2::ax#1 ← ++ mode_sixsfred2::ax#2 to ++ +Resolved ranged comparison value [1450] if(mode_sixsfred2::ax#1!=rangelast(0,$27)) goto mode_sixsfred2::@8 to (number) $28 +Resolved ranged next value [1452] mode_sixsfred2::ay#1 ← ++ mode_sixsfred2::ay#4 to ++ +Resolved ranged comparison value [1454] if(mode_sixsfred2::ay#1!=rangelast(0,$c7)) goto mode_sixsfred2::@7 to (number) $c8 +Resolved ranged next value [1463] mode_sixsfred2::bx#1 ← ++ mode_sixsfred2::bx#2 to ++ +Resolved ranged comparison value [1465] if(mode_sixsfred2::bx#1!=rangelast(0,$27)) goto mode_sixsfred2::@12 to (number) $28 +Resolved ranged next value [1467] mode_sixsfred2::by#1 ← ++ mode_sixsfred2::by#4 to ++ +Resolved ranged comparison value [1469] if(mode_sixsfred2::by#1!=rangelast(0,$c7)) goto mode_sixsfred2::@11 to (number) $c8 +Resolved ranged next value [1497] mode_8bpppixelcell::i#1 ← ++ mode_8bpppixelcell::i#2 to ++ +Resolved ranged comparison value [1499] if(mode_8bpppixelcell::i#1!=rangelast(0,$f)) goto mode_8bpppixelcell::@1 to (number) $10 +Resolved ranged next value [1512] mode_8bpppixelcell::ax#1 ← ++ mode_8bpppixelcell::ax#2 to ++ +Resolved ranged comparison value [1514] if(mode_8bpppixelcell::ax#1!=rangelast(0,$27)) goto mode_8bpppixelcell::@4 to (number) $28 +Resolved ranged next value [1516] mode_8bpppixelcell::ay#1 ← ++ mode_8bpppixelcell::ay#4 to ++ +Resolved ranged comparison value [1518] if(mode_8bpppixelcell::ay#1!=rangelast(0,$18)) goto mode_8bpppixelcell::@3 to (number) $19 +Resolved ranged next value [1543] mode_8bpppixelcell::cp#1 ← ++ mode_8bpppixelcell::cp#2 to ++ +Resolved ranged comparison value [1545] if(mode_8bpppixelcell::cp#1!=rangelast(0,7)) goto mode_8bpppixelcell::@9 to (number) 8 +Resolved ranged next value [1549] mode_8bpppixelcell::cr#1 ← ++ mode_8bpppixelcell::cr#6 to ++ +Resolved ranged comparison value [1551] if(mode_8bpppixelcell::cr#1!=rangelast(0,7)) goto mode_8bpppixelcell::@8 to (number) 8 +Resolved ranged next value [1553] mode_8bpppixelcell::ch#1 ← ++ mode_8bpppixelcell::ch#8 to ++ +Resolved ranged comparison value [1555] if(mode_8bpppixelcell::ch#1!=rangelast(0,$ff)) goto mode_8bpppixelcell::@7 to (number) 0 +Resolved ranged next value [1578] mode_8bppchunkybmm::i#1 ← ++ mode_8bppchunkybmm::i#2 to ++ +Resolved ranged comparison value [1580] if(mode_8bppchunkybmm::i#1!=rangelast(0,$f)) goto mode_8bppchunkybmm::@1 to (number) $10 +Resolved ranged next value [1602] mode_8bppchunkybmm::x#1 ← ++ mode_8bppchunkybmm::x#2 to ++ +Resolved ranged comparison value [1604] if(mode_8bppchunkybmm::x#1!=rangelast(0,$13f)) goto mode_8bppchunkybmm::@4 to (number) $140 +Resolved ranged next value [1612] mode_8bppchunkybmm::y#1 ← ++ mode_8bppchunkybmm::y#6 to ++ +Resolved ranged comparison value [1614] if(mode_8bppchunkybmm::y#1!=rangelast(0,$c7)) goto mode_8bppchunkybmm::@3 to (number) $c8 +Simplifying constant evaluating to zero <(const byte*) mode_twoplanebitmap::PLANEA in [1224] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_twoplanebitmap::PLANEA +Simplifying constant evaluating to zero <(const byte*) mode_twoplanebitmap::PLANEB in [1230] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_twoplanebitmap::PLANEB +Simplifying constant evaluating to zero >(const byte*) mode_twoplanebitmap::COLORS/(word) $400 in [1237] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_twoplanebitmap::COLORS/(word) $400 +Simplifying constant evaluating to zero <(const byte*) mode_sixsfred::PLANEA in [1315] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_sixsfred::PLANEA +Simplifying constant evaluating to zero <(const byte*) mode_sixsfred::PLANEB in [1321] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_sixsfred::PLANEB +Simplifying constant evaluating to zero >(const byte*) mode_sixsfred::COLORS/(word) $400 in [1328] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_sixsfred::COLORS/(word) $400 +Simplifying constant evaluating to zero <(const byte*) mode_sixsfred2::PLANEA in [1397] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_sixsfred2::PLANEA +Simplifying constant evaluating to zero <(const byte*) mode_sixsfred2::PLANEB in [1403] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_sixsfred2::PLANEB +Simplifying constant evaluating to zero >(const byte*) mode_sixsfred2::COLORS/(word) $400 in [1410] *((const byte*) DTV_COLOR_BANK_HI) ← >(const byte*) mode_sixsfred2::COLORS/(word) $400 +Simplifying constant evaluating to zero <(const byte*) mode_8bpppixelcell::PLANEA in [1481] *((const byte*) DTV_PLANEA_START_LO) ← <(const byte*) mode_8bpppixelcell::PLANEA +Simplifying constant evaluating to zero <(const byte*) mode_8bpppixelcell::PLANEB in [1487] *((const byte*) DTV_PLANEB_START_LO) ← <(const byte*) mode_8bpppixelcell::PLANEB Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero bitmap_plot_xhi in [160] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi + (byte) 0) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) -Simplifying expression containing zero bitmap_plot_xlo in [160] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) +Simplifying expression containing zero bitmap_plot_xhi in [156] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi + (byte) 0) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) +Simplifying expression containing zero bitmap_plot_xlo in [156] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_xhi) w= *((const byte[$100]) bitmap_plot_xlo + (byte) 0) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable - keeping the phi block (byte*) print_screen#12 Eliminating unused variable - keeping the phi block (byte*) print_line_cursor#10 @@ -9153,9 +9113,7 @@ Added new block during phi lifting mode_8bppchunkybmm::@14(between mode_8bppchun Added new block during phi lifting mode_8bppchunkybmm::@15(between mode_8bppchunkybmm::@5 and mode_8bppchunkybmm::@4) Added new block during phi lifting mode_8bppchunkybmm::@16(between mode_8bppchunkybmm::@4 and mode_8bppchunkybmm::@5) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @17 -Adding NOP phi() at start of @41 Adding NOP phi() at start of @48 Adding NOP phi() at start of @58 Adding NOP phi() at start of @71 @@ -9264,315 +9222,313 @@ Adding NOP phi() at start of memset::@2 Adding NOP phi() at start of memset::@1 Adding NOP phi() at start of print_set_screen CALL GRAPH -Calls in [] to main:7 -Calls in [main] to menu:16 -Calls in [menu] to print_set_screen:36 print_cls:38 print_str_lines:40 keyboard_key_pressed:44 mode_stdchar:49 keyboard_key_pressed:53 mode_ecmchar:58 keyboard_key_pressed:61 mode_mcchar:66 keyboard_key_pressed:69 mode_stdbitmap:74 keyboard_key_pressed:77 mode_hicolstdchar:82 keyboard_key_pressed:85 mode_hicolecmchar:90 keyboard_key_pressed:93 mode_hicolmcchar:98 keyboard_key_pressed:101 mode_sixsfred2:106 keyboard_key_pressed:109 mode_twoplanebitmap:114 keyboard_key_pressed:117 mode_sixsfred:122 keyboard_key_pressed:125 mode_8bpppixelcell:130 keyboard_key_pressed:133 mode_8bppchunkybmm:138 -Calls in [mode_8bppchunkybmm] to dtvSetCpuBankSegment1:159 dtvSetCpuBankSegment1:168 dtvSetCpuBankSegment1:181 mode_ctrl:183 -Calls in [mode_ctrl] to keyboard_key_pressed:200 keyboard_key_pressed:206 keyboard_key_pressed:213 keyboard_key_pressed:220 keyboard_key_pressed:227 keyboard_key_pressed:234 keyboard_key_pressed:241 keyboard_key_pressed:248 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:271 -Calls in [mode_8bpppixelcell] to mode_ctrl:344 -Calls in [mode_sixsfred] to mode_ctrl:420 -Calls in [mode_twoplanebitmap] to mode_ctrl:498 -Calls in [mode_sixsfred2] to mode_ctrl:575 -Calls in [mode_hicolmcchar] to mode_ctrl:625 -Calls in [mode_hicolecmchar] to mode_ctrl:670 -Calls in [mode_hicolstdchar] to mode_ctrl:712 -Calls in [mode_stdbitmap] to bitmap_init:750 bitmap_clear:752 mode_ctrl:757 bitmap_line:764 -Calls in [bitmap_line] to bitmap_line_ydxi:787 bitmap_line_xdyi:800 bitmap_line_ydxd:814 bitmap_line_xdyd:826 bitmap_line_ydxd:842 bitmap_line_xdyd:854 bitmap_line_ydxi:868 bitmap_line_xdyi:880 -Calls in [bitmap_line_xdyi] to bitmap_plot:892 -Calls in [bitmap_line_ydxi] to bitmap_plot:926 -Calls in [bitmap_line_xdyd] to bitmap_plot:953 -Calls in [bitmap_line_ydxd] to bitmap_plot:980 -Calls in [mode_mcchar] to mode_ctrl:1082 -Calls in [mode_ecmchar] to mode_ctrl:1129 -Calls in [mode_stdchar] to mode_ctrl:1173 -Calls in [print_str_lines] to print_ln:1199 -Calls in [print_cls] to memset:1214 +Calls in [] to main:5 +Calls in [main] to menu:14 +Calls in [menu] to print_set_screen:34 print_cls:36 print_str_lines:38 keyboard_key_pressed:42 mode_stdchar:47 keyboard_key_pressed:51 mode_ecmchar:56 keyboard_key_pressed:59 mode_mcchar:64 keyboard_key_pressed:67 mode_stdbitmap:72 keyboard_key_pressed:75 mode_hicolstdchar:80 keyboard_key_pressed:83 mode_hicolecmchar:88 keyboard_key_pressed:91 mode_hicolmcchar:96 keyboard_key_pressed:99 mode_sixsfred2:104 keyboard_key_pressed:107 mode_twoplanebitmap:112 keyboard_key_pressed:115 mode_sixsfred:120 keyboard_key_pressed:123 mode_8bpppixelcell:128 keyboard_key_pressed:131 mode_8bppchunkybmm:136 +Calls in [mode_8bppchunkybmm] to dtvSetCpuBankSegment1:157 dtvSetCpuBankSegment1:166 dtvSetCpuBankSegment1:179 mode_ctrl:181 +Calls in [mode_ctrl] to keyboard_key_pressed:198 keyboard_key_pressed:204 keyboard_key_pressed:211 keyboard_key_pressed:218 keyboard_key_pressed:225 keyboard_key_pressed:232 keyboard_key_pressed:239 keyboard_key_pressed:246 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:269 +Calls in [mode_8bpppixelcell] to mode_ctrl:342 +Calls in [mode_sixsfred] to mode_ctrl:418 +Calls in [mode_twoplanebitmap] to mode_ctrl:496 +Calls in [mode_sixsfred2] to mode_ctrl:573 +Calls in [mode_hicolmcchar] to mode_ctrl:623 +Calls in [mode_hicolecmchar] to mode_ctrl:668 +Calls in [mode_hicolstdchar] to mode_ctrl:710 +Calls in [mode_stdbitmap] to bitmap_init:748 bitmap_clear:750 mode_ctrl:755 bitmap_line:762 +Calls in [bitmap_line] to bitmap_line_ydxi:785 bitmap_line_xdyi:798 bitmap_line_ydxd:812 bitmap_line_xdyd:824 bitmap_line_ydxd:840 bitmap_line_xdyd:852 bitmap_line_ydxi:866 bitmap_line_xdyi:878 +Calls in [bitmap_line_xdyi] to bitmap_plot:890 +Calls in [bitmap_line_ydxi] to bitmap_plot:924 +Calls in [bitmap_line_xdyd] to bitmap_plot:951 +Calls in [bitmap_line_ydxd] to bitmap_plot:978 +Calls in [mode_mcchar] to mode_ctrl:1080 +Calls in [mode_ecmchar] to mode_ctrl:1127 +Calls in [mode_stdchar] to mode_ctrl:1171 +Calls in [print_str_lines] to print_ln:1197 +Calls in [print_cls] to memset:1212 Created 188 initial phi equivalence classes -Coalesced [142] menu::c#4 ← menu::c#1 -Coalesced [143] menu::i#3 ← menu::i#1 -Coalesced [162] mode_8bppchunkybmm::gfxb#8 ← mode_8bppchunkybmm::gfxb#5 -Coalesced [163] mode_8bppchunkybmm::gfxbCpuBank#11 ← mode_8bppchunkybmm::gfxbCpuBank#7 -Coalesced [167] dtvSetCpuBankSegment1::cpuBankIdx#4 ← dtvSetCpuBankSegment1::cpuBankIdx#1 -Coalesced [170] mode_8bppchunkybmm::gfxbCpuBank#13 ← mode_8bppchunkybmm::gfxbCpuBank#2 -Coalesced [186] mode_8bppchunkybmm::gfxb#7 ← mode_8bppchunkybmm::gfxb#1 -Coalesced [187] mode_8bppchunkybmm::y#8 ← mode_8bppchunkybmm::y#1 -Coalesced [188] mode_8bppchunkybmm::gfxbCpuBank#10 ← mode_8bppchunkybmm::gfxbCpuBank#8 -Coalesced (already) [189] mode_8bppchunkybmm::gfxb#9 ← mode_8bppchunkybmm::gfxb#1 -Coalesced [190] mode_8bppchunkybmm::x#6 ← mode_8bppchunkybmm::x#1 -Coalesced (already) [191] mode_8bppchunkybmm::gfxbCpuBank#12 ← mode_8bppchunkybmm::gfxbCpuBank#8 -Coalesced [192] mode_8bppchunkybmm::gfxb#10 ← mode_8bppchunkybmm::gfxb#3 -Coalesced (already) [193] mode_8bppchunkybmm::gfxbCpuBank#14 ← mode_8bppchunkybmm::gfxbCpuBank#4 -Coalesced [194] mode_8bppchunkybmm::i#3 ← mode_8bppchunkybmm::i#1 -Coalesced [196] dtv_control#291 ← dtv_control#144 -Coalesced [211] mode_ctrl::ctrl#29 ← mode_ctrl::ctrl#1 -Coalesced [218] mode_ctrl::ctrl#31 ← mode_ctrl::ctrl#2 -Coalesced [225] mode_ctrl::ctrl#33 ← mode_ctrl::ctrl#3 -Coalesced [232] mode_ctrl::ctrl#35 ← mode_ctrl::ctrl#4 -Coalesced [239] mode_ctrl::ctrl#37 ← mode_ctrl::ctrl#5 -Coalesced [246] mode_ctrl::ctrl#39 ← mode_ctrl::ctrl#6 -Coalesced [258] dtv_control#293 ← dtv_control#17 -Coalesced (already) [259] dtv_control#292 ← dtv_control#114 -Coalesced [260] mode_ctrl::ctrl#41 ← mode_ctrl::ctrl#22 -Coalesced [261] mode_ctrl::ctrl#40 ← mode_ctrl::ctrl#13 -Coalesced [262] mode_ctrl::ctrl#38 ← mode_ctrl::ctrl#12 -Coalesced [263] mode_ctrl::ctrl#36 ← mode_ctrl::ctrl#11 -Coalesced [264] mode_ctrl::ctrl#34 ← mode_ctrl::ctrl#10 -Coalesced [265] mode_ctrl::ctrl#32 ← mode_ctrl::ctrl#17 -Coalesced [266] mode_ctrl::ctrl#30 ← mode_ctrl::ctrl#0 -Coalesced [305] mode_8bpppixelcell::gfxa#6 ← mode_8bpppixelcell::gfxa#3 -Coalesced [319] mode_8bpppixelcell::chargen#11 ← mode_8bpppixelcell::chargen#4 -Coalesced [320] mode_8bpppixelcell::gfxb#11 ← mode_8bpppixelcell::gfxb#7 -Coalesced [321] mode_8bpppixelcell::col#11 ← mode_8bpppixelcell::col#7 -Coalesced [325] mode_8bpppixelcell::bits#6 ← mode_8bpppixelcell::bits#0 -Coalesced [326] mode_8bpppixelcell::gfxb#13 ← mode_8bpppixelcell::gfxb#5 -Coalesced [327] mode_8bpppixelcell::col#13 ← mode_8bpppixelcell::col#5 -Not coalescing [331] mode_8bpppixelcell::c#3 ← mode_8bpppixelcell::col#2 -Coalesced [347] mode_8bpppixelcell::chargen#9 ← mode_8bpppixelcell::chargen#1 -Coalesced [348] mode_8bpppixelcell::gfxb#9 ← mode_8bpppixelcell::gfxb#1 -Coalesced [349] mode_8bpppixelcell::col#9 ← mode_8bpppixelcell::col#1 -Coalesced [350] mode_8bpppixelcell::ch#9 ← mode_8bpppixelcell::ch#1 -Coalesced (already) [351] mode_8bpppixelcell::chargen#10 ← mode_8bpppixelcell::chargen#1 -Coalesced (already) [352] mode_8bpppixelcell::gfxb#10 ← mode_8bpppixelcell::gfxb#1 -Coalesced (already) [353] mode_8bpppixelcell::col#10 ← mode_8bpppixelcell::col#1 -Coalesced [354] mode_8bpppixelcell::cr#7 ← mode_8bpppixelcell::cr#1 -Coalesced [355] mode_8bpppixelcell::bits#5 ← mode_8bpppixelcell::bits#1 -Coalesced (already) [356] mode_8bpppixelcell::gfxb#12 ← mode_8bpppixelcell::gfxb#1 -Coalesced (already) [357] mode_8bpppixelcell::col#12 ← mode_8bpppixelcell::col#1 -Coalesced [358] mode_8bpppixelcell::cp#5 ← mode_8bpppixelcell::cp#1 -Coalesced [359] mode_8bpppixelcell::ay#5 ← mode_8bpppixelcell::ay#1 -Coalesced [360] mode_8bpppixelcell::gfxa#5 ← mode_8bpppixelcell::gfxa#1 -Coalesced [361] mode_8bpppixelcell::ax#3 ← mode_8bpppixelcell::ax#1 -Coalesced (already) [362] mode_8bpppixelcell::gfxa#7 ← mode_8bpppixelcell::gfxa#1 -Coalesced [363] mode_8bpppixelcell::i#3 ← mode_8bpppixelcell::i#1 -Coalesced [387] mode_sixsfred::col#6 ← mode_sixsfred::col#3 -Coalesced [399] mode_sixsfred::gfxa#6 ← mode_sixsfred::gfxa#3 -Coalesced [411] mode_sixsfred::gfxb#6 ← mode_sixsfred::gfxb#3 -Coalesced [423] mode_sixsfred::gfxb#5 ← mode_sixsfred::gfxb#1 -Coalesced [424] mode_sixsfred::by#5 ← mode_sixsfred::by#1 -Coalesced (already) [425] mode_sixsfred::gfxb#7 ← mode_sixsfred::gfxb#1 -Coalesced [426] mode_sixsfred::bx#3 ← mode_sixsfred::bx#1 -Coalesced [427] mode_sixsfred::ay#5 ← mode_sixsfred::ay#1 -Coalesced [428] mode_sixsfred::gfxa#5 ← mode_sixsfred::gfxa#1 -Coalesced (already) [429] mode_sixsfred::gfxa#7 ← mode_sixsfred::gfxa#1 -Coalesced [430] mode_sixsfred::ax#3 ← mode_sixsfred::ax#1 -Coalesced [431] mode_sixsfred::cy#5 ← mode_sixsfred::cy#1 -Coalesced [432] mode_sixsfred::col#5 ← mode_sixsfred::col#1 -Coalesced [433] mode_sixsfred::cx#3 ← mode_sixsfred::cx#1 -Coalesced (already) [434] mode_sixsfred::col#7 ← mode_sixsfred::col#1 -Coalesced [435] mode_sixsfred::i#3 ← mode_sixsfred::i#1 -Coalesced [461] mode_twoplanebitmap::col#6 ← mode_twoplanebitmap::col#3 -Coalesced [475] mode_twoplanebitmap::gfxa#11 ← mode_twoplanebitmap::gfxa#7 -Coalesced [481] mode_twoplanebitmap::gfxa#12 ← mode_twoplanebitmap::gfxa#2 -Coalesced [489] mode_twoplanebitmap::gfxb#6 ← mode_twoplanebitmap::gfxb#3 -Coalesced [501] mode_twoplanebitmap::gfxb#5 ← mode_twoplanebitmap::gfxb#1 -Coalesced [502] mode_twoplanebitmap::by#5 ← mode_twoplanebitmap::by#1 -Coalesced (already) [503] mode_twoplanebitmap::gfxb#7 ← mode_twoplanebitmap::gfxb#1 -Coalesced [504] mode_twoplanebitmap::bx#3 ← mode_twoplanebitmap::bx#1 -Coalesced [505] mode_twoplanebitmap::ay#8 ← mode_twoplanebitmap::ay#1 -Coalesced [506] mode_twoplanebitmap::gfxa#9 ← mode_twoplanebitmap::gfxa#6 -Coalesced (already) [507] mode_twoplanebitmap::gfxa#10 ← mode_twoplanebitmap::gfxa#6 -Coalesced [508] mode_twoplanebitmap::ax#6 ← mode_twoplanebitmap::ax#1 -Coalesced [511] mode_twoplanebitmap::gfxa#13 ← mode_twoplanebitmap::gfxa#1 -Coalesced [512] mode_twoplanebitmap::cy#5 ← mode_twoplanebitmap::cy#1 -Coalesced [513] mode_twoplanebitmap::col#5 ← mode_twoplanebitmap::col#1 -Coalesced [514] mode_twoplanebitmap::cx#3 ← mode_twoplanebitmap::cx#1 -Coalesced (already) [515] mode_twoplanebitmap::col#7 ← mode_twoplanebitmap::col#1 -Coalesced [516] mode_twoplanebitmap::i#3 ← mode_twoplanebitmap::i#1 -Coalesced [540] mode_sixsfred2::col#6 ← mode_sixsfred2::col#3 -Coalesced [554] mode_sixsfred2::gfxa#6 ← mode_sixsfred2::gfxa#3 -Coalesced [566] mode_sixsfred2::gfxb#6 ← mode_sixsfred2::gfxb#3 -Coalesced [578] mode_sixsfred2::gfxb#5 ← mode_sixsfred2::gfxb#1 -Coalesced [579] mode_sixsfred2::by#5 ← mode_sixsfred2::by#1 -Coalesced (already) [580] mode_sixsfred2::gfxb#7 ← mode_sixsfred2::gfxb#1 -Coalesced [581] mode_sixsfred2::bx#3 ← mode_sixsfred2::bx#1 -Coalesced [582] mode_sixsfred2::ay#5 ← mode_sixsfred2::ay#1 -Coalesced [583] mode_sixsfred2::gfxa#5 ← mode_sixsfred2::gfxa#1 -Coalesced (already) [584] mode_sixsfred2::gfxa#7 ← mode_sixsfred2::gfxa#1 -Coalesced [585] mode_sixsfred2::ax#3 ← mode_sixsfred2::ax#1 -Coalesced [586] mode_sixsfred2::cy#5 ← mode_sixsfred2::cy#1 -Coalesced [587] mode_sixsfred2::col#5 ← mode_sixsfred2::col#1 -Coalesced [588] mode_sixsfred2::cx#3 ← mode_sixsfred2::cx#1 -Coalesced (already) [589] mode_sixsfred2::col#7 ← mode_sixsfred2::col#1 -Coalesced [590] mode_sixsfred2::i#3 ← mode_sixsfred2::i#1 -Coalesced [609] mode_hicolmcchar::col#6 ← mode_hicolmcchar::col#3 -Coalesced [610] mode_hicolmcchar::ch#6 ← mode_hicolmcchar::ch#3 -Coalesced [628] mode_hicolmcchar::cy#5 ← mode_hicolmcchar::cy#1 -Coalesced [629] mode_hicolmcchar::col#5 ← mode_hicolmcchar::col#1 -Coalesced [630] mode_hicolmcchar::ch#5 ← mode_hicolmcchar::ch#1 -Coalesced [631] mode_hicolmcchar::cx#3 ← mode_hicolmcchar::cx#1 -Coalesced (already) [632] mode_hicolmcchar::col#7 ← mode_hicolmcchar::col#1 -Coalesced (already) [633] mode_hicolmcchar::ch#7 ← mode_hicolmcchar::ch#1 -Coalesced [634] mode_hicolmcchar::i#3 ← mode_hicolmcchar::i#1 -Coalesced [654] mode_hicolecmchar::col#6 ← mode_hicolecmchar::col#3 -Coalesced [655] mode_hicolecmchar::ch#6 ← mode_hicolecmchar::ch#3 -Coalesced [673] mode_hicolecmchar::cy#5 ← mode_hicolecmchar::cy#1 -Coalesced [674] mode_hicolecmchar::col#5 ← mode_hicolecmchar::col#1 -Coalesced [675] mode_hicolecmchar::ch#5 ← mode_hicolecmchar::ch#1 -Coalesced [676] mode_hicolecmchar::cx#3 ← mode_hicolecmchar::cx#1 -Coalesced (already) [677] mode_hicolecmchar::col#7 ← mode_hicolecmchar::col#1 -Coalesced (already) [678] mode_hicolecmchar::ch#7 ← mode_hicolecmchar::ch#1 -Coalesced [679] mode_hicolecmchar::i#3 ← mode_hicolecmchar::i#1 -Coalesced [696] mode_hicolstdchar::col#6 ← mode_hicolstdchar::col#3 -Coalesced [697] mode_hicolstdchar::ch#6 ← mode_hicolstdchar::ch#3 -Coalesced [715] mode_hicolstdchar::cy#5 ← mode_hicolstdchar::cy#1 -Coalesced [716] mode_hicolstdchar::col#5 ← mode_hicolstdchar::col#1 -Coalesced [717] mode_hicolstdchar::ch#5 ← mode_hicolstdchar::ch#1 -Coalesced [718] mode_hicolstdchar::cx#3 ← mode_hicolstdchar::cx#1 -Coalesced (already) [719] mode_hicolstdchar::col#7 ← mode_hicolstdchar::col#1 -Coalesced (already) [720] mode_hicolstdchar::ch#7 ← mode_hicolstdchar::ch#1 -Coalesced [721] mode_hicolstdchar::i#3 ← mode_hicolstdchar::i#1 -Coalesced [736] mode_stdbitmap::ch#6 ← mode_stdbitmap::ch#3 -Coalesced [766] mode_stdbitmap::l#5 ← mode_stdbitmap::l#1 -Coalesced [767] mode_stdbitmap::cy#5 ← mode_stdbitmap::cy#1 -Coalesced [768] mode_stdbitmap::ch#5 ← mode_stdbitmap::ch#1 -Coalesced [769] mode_stdbitmap::cx#3 ← mode_stdbitmap::cx#1 -Coalesced (already) [770] mode_stdbitmap::ch#7 ← mode_stdbitmap::ch#1 -Coalesced [771] mode_stdbitmap::i#3 ← mode_stdbitmap::i#1 -Coalesced [782] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#0 -Coalesced [783] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#0 -Coalesced [784] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#0 -Coalesced [785] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#0 -Coalesced [786] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#0 -Coalesced [795] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#0 -Coalesced [796] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#0 -Coalesced [797] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#0 -Coalesced [798] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#0 -Coalesced [799] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#0 -Coalesced [809] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 -Coalesced [810] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 -Coalesced [811] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 -Coalesced [812] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 -Coalesced [813] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 -Coalesced [821] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#0 -Coalesced [822] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 -Coalesced [823] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#0 -Coalesced [824] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#0 -Coalesced [825] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#0 -Coalesced [837] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 -Coalesced [838] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 -Coalesced [839] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 -Coalesced [840] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 -Coalesced [841] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 -Coalesced [849] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#1 -Coalesced [850] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#1 -Coalesced [851] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#1 -Coalesced [852] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#1 -Coalesced [853] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#1 -Coalesced [863] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#1 -Coalesced [864] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#1 -Coalesced [865] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#1 -Coalesced [866] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#1 -Coalesced [867] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#1 -Coalesced [875] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#1 -Coalesced [876] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#1 -Coalesced [877] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#1 -Coalesced [878] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#1 -Coalesced [879] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#1 -Coalesced [884] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 -Coalesced [885] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 -Coalesced [886] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 -Coalesced [890] bitmap_plot::x#6 ← bitmap_plot::x#0 -Coalesced [891] bitmap_plot::y#6 ← bitmap_plot::y#0 -Coalesced [898] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 -Coalesced [899] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 -Coalesced [904] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 -Coalesced [905] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 -Coalesced [906] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 -Coalesced (already) [907] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 -Coalesced [908] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 -Coalesced [918] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 -Coalesced [919] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 -Coalesced [920] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 -Coalesced [924] bitmap_plot::x#8 ← bitmap_plot::x#2 -Coalesced [925] bitmap_plot::y#8 ← bitmap_plot::y#2 -Coalesced [932] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 -Coalesced [933] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 -Coalesced [938] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 -Coalesced [939] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 -Coalesced [940] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 -Coalesced (already) [941] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 -Coalesced [942] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 -Coalesced [945] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 -Coalesced [946] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 -Coalesced [947] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 -Coalesced [951] bitmap_plot::x#5 ← bitmap_plot::x#1 -Coalesced [952] bitmap_plot::y#5 ← bitmap_plot::y#1 -Coalesced [959] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 -Coalesced [960] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 -Coalesced [965] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 -Coalesced [966] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 -Coalesced [967] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 -Coalesced (already) [968] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 -Coalesced [969] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 -Coalesced [972] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 -Coalesced [973] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 -Coalesced [974] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 -Coalesced [978] bitmap_plot::x#7 ← bitmap_plot::x#3 -Coalesced [979] bitmap_plot::y#7 ← bitmap_plot::y#3 -Coalesced [986] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 -Coalesced [987] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 -Coalesced [992] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 -Coalesced [993] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 -Coalesced [994] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 -Coalesced (already) [995] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 -Coalesced [996] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 -Coalesced [1000] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [1009] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [1010] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [1011] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [1012] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [1035] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [1040] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [1041] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [1042] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [1043] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [1044] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [1045] bitmap_init::bits#6 ← bitmap_init::bits#1 -Coalesced [1064] mode_mcchar::col#6 ← mode_mcchar::col#3 -Coalesced [1065] mode_mcchar::ch#6 ← mode_mcchar::ch#3 -Coalesced [1085] mode_mcchar::cy#5 ← mode_mcchar::cy#1 -Coalesced [1086] mode_mcchar::col#5 ← mode_mcchar::col#1 -Coalesced [1087] mode_mcchar::ch#5 ← mode_mcchar::ch#1 -Coalesced [1088] mode_mcchar::cx#3 ← mode_mcchar::cx#1 -Coalesced (already) [1089] mode_mcchar::col#7 ← mode_mcchar::col#1 -Coalesced (already) [1090] mode_mcchar::ch#7 ← mode_mcchar::ch#1 -Coalesced [1091] mode_mcchar::i#3 ← mode_mcchar::i#1 -Coalesced [1111] mode_ecmchar::col#6 ← mode_ecmchar::col#3 -Coalesced [1112] mode_ecmchar::ch#6 ← mode_ecmchar::ch#3 -Coalesced [1132] mode_ecmchar::cy#5 ← mode_ecmchar::cy#1 -Coalesced [1133] mode_ecmchar::col#5 ← mode_ecmchar::col#1 -Coalesced [1134] mode_ecmchar::ch#5 ← mode_ecmchar::ch#1 -Coalesced [1135] mode_ecmchar::cx#3 ← mode_ecmchar::cx#1 -Coalesced (already) [1136] mode_ecmchar::col#7 ← mode_ecmchar::col#1 -Coalesced (already) [1137] mode_ecmchar::ch#7 ← mode_ecmchar::ch#1 -Coalesced [1138] mode_ecmchar::i#3 ← mode_ecmchar::i#1 -Coalesced [1155] mode_stdchar::col#6 ← mode_stdchar::col#3 -Coalesced [1156] mode_stdchar::ch#6 ← mode_stdchar::ch#3 -Coalesced [1176] mode_stdchar::cy#5 ← mode_stdchar::cy#1 -Coalesced [1177] mode_stdchar::col#5 ← mode_stdchar::col#1 -Coalesced [1178] mode_stdchar::ch#5 ← mode_stdchar::ch#1 -Coalesced [1179] mode_stdchar::cx#3 ← mode_stdchar::cx#1 -Coalesced (already) [1180] mode_stdchar::col#7 ← mode_stdchar::col#1 -Coalesced (already) [1181] mode_stdchar::ch#7 ← mode_stdchar::ch#1 -Coalesced [1182] mode_stdchar::i#3 ← mode_stdchar::i#1 -Coalesced [1187] print_str_lines::str#10 ← print_str_lines::str#2 -Coalesced [1188] print_char_cursor#100 ← print_char_cursor#19 -Coalesced [1195] print_char_cursor#103 ← print_char_cursor#1 -Coalesced [1200] print_str_lines::str#9 ← print_str_lines::str#0 -Not coalescing [1201] print_char_cursor#99 ← print_line_cursor#19 -Coalesced [1202] print_line_cursor#99 ← print_line_cursor#19 -Coalesced (already) [1203] print_str_lines::str#11 ← print_str_lines::str#0 -Coalesced [1204] print_char_cursor#101 ← print_char_cursor#32 -Coalesced (already) [1205] print_char_cursor#102 ← print_char_cursor#17 -Coalesced [1206] print_line_cursor#100 ← print_line_cursor#17 -Coalesced (already) [1212] print_line_cursor#101 ← print_line_cursor#19 -Coalesced [1225] memset::dst#4 ← memset::dst#1 +Coalesced [140] menu::c#4 ← menu::c#1 +Coalesced [141] menu::i#3 ← menu::i#1 +Coalesced [160] mode_8bppchunkybmm::gfxb#8 ← mode_8bppchunkybmm::gfxb#5 +Coalesced [161] mode_8bppchunkybmm::gfxbCpuBank#11 ← mode_8bppchunkybmm::gfxbCpuBank#7 +Coalesced [165] dtvSetCpuBankSegment1::cpuBankIdx#4 ← dtvSetCpuBankSegment1::cpuBankIdx#1 +Coalesced [168] mode_8bppchunkybmm::gfxbCpuBank#13 ← mode_8bppchunkybmm::gfxbCpuBank#2 +Coalesced [184] mode_8bppchunkybmm::gfxb#7 ← mode_8bppchunkybmm::gfxb#1 +Coalesced [185] mode_8bppchunkybmm::y#8 ← mode_8bppchunkybmm::y#1 +Coalesced [186] mode_8bppchunkybmm::gfxbCpuBank#10 ← mode_8bppchunkybmm::gfxbCpuBank#8 +Coalesced (already) [187] mode_8bppchunkybmm::gfxb#9 ← mode_8bppchunkybmm::gfxb#1 +Coalesced [188] mode_8bppchunkybmm::x#6 ← mode_8bppchunkybmm::x#1 +Coalesced (already) [189] mode_8bppchunkybmm::gfxbCpuBank#12 ← mode_8bppchunkybmm::gfxbCpuBank#8 +Coalesced [190] mode_8bppchunkybmm::gfxb#10 ← mode_8bppchunkybmm::gfxb#3 +Coalesced (already) [191] mode_8bppchunkybmm::gfxbCpuBank#14 ← mode_8bppchunkybmm::gfxbCpuBank#4 +Coalesced [192] mode_8bppchunkybmm::i#3 ← mode_8bppchunkybmm::i#1 +Coalesced [194] dtv_control#291 ← dtv_control#144 +Coalesced [209] mode_ctrl::ctrl#29 ← mode_ctrl::ctrl#1 +Coalesced [216] mode_ctrl::ctrl#31 ← mode_ctrl::ctrl#2 +Coalesced [223] mode_ctrl::ctrl#33 ← mode_ctrl::ctrl#3 +Coalesced [230] mode_ctrl::ctrl#35 ← mode_ctrl::ctrl#4 +Coalesced [237] mode_ctrl::ctrl#37 ← mode_ctrl::ctrl#5 +Coalesced [244] mode_ctrl::ctrl#39 ← mode_ctrl::ctrl#6 +Coalesced [256] dtv_control#293 ← dtv_control#17 +Coalesced (already) [257] dtv_control#292 ← dtv_control#114 +Coalesced [258] mode_ctrl::ctrl#41 ← mode_ctrl::ctrl#22 +Coalesced [259] mode_ctrl::ctrl#40 ← mode_ctrl::ctrl#13 +Coalesced [260] mode_ctrl::ctrl#38 ← mode_ctrl::ctrl#12 +Coalesced [261] mode_ctrl::ctrl#36 ← mode_ctrl::ctrl#11 +Coalesced [262] mode_ctrl::ctrl#34 ← mode_ctrl::ctrl#10 +Coalesced [263] mode_ctrl::ctrl#32 ← mode_ctrl::ctrl#17 +Coalesced [264] mode_ctrl::ctrl#30 ← mode_ctrl::ctrl#0 +Coalesced [303] mode_8bpppixelcell::gfxa#6 ← mode_8bpppixelcell::gfxa#3 +Coalesced [317] mode_8bpppixelcell::chargen#11 ← mode_8bpppixelcell::chargen#4 +Coalesced [318] mode_8bpppixelcell::gfxb#11 ← mode_8bpppixelcell::gfxb#7 +Coalesced [319] mode_8bpppixelcell::col#11 ← mode_8bpppixelcell::col#7 +Coalesced [323] mode_8bpppixelcell::bits#6 ← mode_8bpppixelcell::bits#0 +Coalesced [324] mode_8bpppixelcell::gfxb#13 ← mode_8bpppixelcell::gfxb#5 +Coalesced [325] mode_8bpppixelcell::col#13 ← mode_8bpppixelcell::col#5 +Not coalescing [329] mode_8bpppixelcell::c#3 ← mode_8bpppixelcell::col#2 +Coalesced [345] mode_8bpppixelcell::chargen#9 ← mode_8bpppixelcell::chargen#1 +Coalesced [346] mode_8bpppixelcell::gfxb#9 ← mode_8bpppixelcell::gfxb#1 +Coalesced [347] mode_8bpppixelcell::col#9 ← mode_8bpppixelcell::col#1 +Coalesced [348] mode_8bpppixelcell::ch#9 ← mode_8bpppixelcell::ch#1 +Coalesced (already) [349] mode_8bpppixelcell::chargen#10 ← mode_8bpppixelcell::chargen#1 +Coalesced (already) [350] mode_8bpppixelcell::gfxb#10 ← mode_8bpppixelcell::gfxb#1 +Coalesced (already) [351] mode_8bpppixelcell::col#10 ← mode_8bpppixelcell::col#1 +Coalesced [352] mode_8bpppixelcell::cr#7 ← mode_8bpppixelcell::cr#1 +Coalesced [353] mode_8bpppixelcell::bits#5 ← mode_8bpppixelcell::bits#1 +Coalesced (already) [354] mode_8bpppixelcell::gfxb#12 ← mode_8bpppixelcell::gfxb#1 +Coalesced (already) [355] mode_8bpppixelcell::col#12 ← mode_8bpppixelcell::col#1 +Coalesced [356] mode_8bpppixelcell::cp#5 ← mode_8bpppixelcell::cp#1 +Coalesced [357] mode_8bpppixelcell::ay#5 ← mode_8bpppixelcell::ay#1 +Coalesced [358] mode_8bpppixelcell::gfxa#5 ← mode_8bpppixelcell::gfxa#1 +Coalesced [359] mode_8bpppixelcell::ax#3 ← mode_8bpppixelcell::ax#1 +Coalesced (already) [360] mode_8bpppixelcell::gfxa#7 ← mode_8bpppixelcell::gfxa#1 +Coalesced [361] mode_8bpppixelcell::i#3 ← mode_8bpppixelcell::i#1 +Coalesced [385] mode_sixsfred::col#6 ← mode_sixsfred::col#3 +Coalesced [397] mode_sixsfred::gfxa#6 ← mode_sixsfred::gfxa#3 +Coalesced [409] mode_sixsfred::gfxb#6 ← mode_sixsfred::gfxb#3 +Coalesced [421] mode_sixsfred::gfxb#5 ← mode_sixsfred::gfxb#1 +Coalesced [422] mode_sixsfred::by#5 ← mode_sixsfred::by#1 +Coalesced (already) [423] mode_sixsfred::gfxb#7 ← mode_sixsfred::gfxb#1 +Coalesced [424] mode_sixsfred::bx#3 ← mode_sixsfred::bx#1 +Coalesced [425] mode_sixsfred::ay#5 ← mode_sixsfred::ay#1 +Coalesced [426] mode_sixsfred::gfxa#5 ← mode_sixsfred::gfxa#1 +Coalesced (already) [427] mode_sixsfred::gfxa#7 ← mode_sixsfred::gfxa#1 +Coalesced [428] mode_sixsfred::ax#3 ← mode_sixsfred::ax#1 +Coalesced [429] mode_sixsfred::cy#5 ← mode_sixsfred::cy#1 +Coalesced [430] mode_sixsfred::col#5 ← mode_sixsfred::col#1 +Coalesced [431] mode_sixsfred::cx#3 ← mode_sixsfred::cx#1 +Coalesced (already) [432] mode_sixsfred::col#7 ← mode_sixsfred::col#1 +Coalesced [433] mode_sixsfred::i#3 ← mode_sixsfred::i#1 +Coalesced [459] mode_twoplanebitmap::col#6 ← mode_twoplanebitmap::col#3 +Coalesced [473] mode_twoplanebitmap::gfxa#11 ← mode_twoplanebitmap::gfxa#7 +Coalesced [479] mode_twoplanebitmap::gfxa#12 ← mode_twoplanebitmap::gfxa#2 +Coalesced [487] mode_twoplanebitmap::gfxb#6 ← mode_twoplanebitmap::gfxb#3 +Coalesced [499] mode_twoplanebitmap::gfxb#5 ← mode_twoplanebitmap::gfxb#1 +Coalesced [500] mode_twoplanebitmap::by#5 ← mode_twoplanebitmap::by#1 +Coalesced (already) [501] mode_twoplanebitmap::gfxb#7 ← mode_twoplanebitmap::gfxb#1 +Coalesced [502] mode_twoplanebitmap::bx#3 ← mode_twoplanebitmap::bx#1 +Coalesced [503] mode_twoplanebitmap::ay#8 ← mode_twoplanebitmap::ay#1 +Coalesced [504] mode_twoplanebitmap::gfxa#9 ← mode_twoplanebitmap::gfxa#6 +Coalesced (already) [505] mode_twoplanebitmap::gfxa#10 ← mode_twoplanebitmap::gfxa#6 +Coalesced [506] mode_twoplanebitmap::ax#6 ← mode_twoplanebitmap::ax#1 +Coalesced [509] mode_twoplanebitmap::gfxa#13 ← mode_twoplanebitmap::gfxa#1 +Coalesced [510] mode_twoplanebitmap::cy#5 ← mode_twoplanebitmap::cy#1 +Coalesced [511] mode_twoplanebitmap::col#5 ← mode_twoplanebitmap::col#1 +Coalesced [512] mode_twoplanebitmap::cx#3 ← mode_twoplanebitmap::cx#1 +Coalesced (already) [513] mode_twoplanebitmap::col#7 ← mode_twoplanebitmap::col#1 +Coalesced [514] mode_twoplanebitmap::i#3 ← mode_twoplanebitmap::i#1 +Coalesced [538] mode_sixsfred2::col#6 ← mode_sixsfred2::col#3 +Coalesced [552] mode_sixsfred2::gfxa#6 ← mode_sixsfred2::gfxa#3 +Coalesced [564] mode_sixsfred2::gfxb#6 ← mode_sixsfred2::gfxb#3 +Coalesced [576] mode_sixsfred2::gfxb#5 ← mode_sixsfred2::gfxb#1 +Coalesced [577] mode_sixsfred2::by#5 ← mode_sixsfred2::by#1 +Coalesced (already) [578] mode_sixsfred2::gfxb#7 ← mode_sixsfred2::gfxb#1 +Coalesced [579] mode_sixsfred2::bx#3 ← mode_sixsfred2::bx#1 +Coalesced [580] mode_sixsfred2::ay#5 ← mode_sixsfred2::ay#1 +Coalesced [581] mode_sixsfred2::gfxa#5 ← mode_sixsfred2::gfxa#1 +Coalesced (already) [582] mode_sixsfred2::gfxa#7 ← mode_sixsfred2::gfxa#1 +Coalesced [583] mode_sixsfred2::ax#3 ← mode_sixsfred2::ax#1 +Coalesced [584] mode_sixsfred2::cy#5 ← mode_sixsfred2::cy#1 +Coalesced [585] mode_sixsfred2::col#5 ← mode_sixsfred2::col#1 +Coalesced [586] mode_sixsfred2::cx#3 ← mode_sixsfred2::cx#1 +Coalesced (already) [587] mode_sixsfred2::col#7 ← mode_sixsfred2::col#1 +Coalesced [588] mode_sixsfred2::i#3 ← mode_sixsfred2::i#1 +Coalesced [607] mode_hicolmcchar::col#6 ← mode_hicolmcchar::col#3 +Coalesced [608] mode_hicolmcchar::ch#6 ← mode_hicolmcchar::ch#3 +Coalesced [626] mode_hicolmcchar::cy#5 ← mode_hicolmcchar::cy#1 +Coalesced [627] mode_hicolmcchar::col#5 ← mode_hicolmcchar::col#1 +Coalesced [628] mode_hicolmcchar::ch#5 ← mode_hicolmcchar::ch#1 +Coalesced [629] mode_hicolmcchar::cx#3 ← mode_hicolmcchar::cx#1 +Coalesced (already) [630] mode_hicolmcchar::col#7 ← mode_hicolmcchar::col#1 +Coalesced (already) [631] mode_hicolmcchar::ch#7 ← mode_hicolmcchar::ch#1 +Coalesced [632] mode_hicolmcchar::i#3 ← mode_hicolmcchar::i#1 +Coalesced [652] mode_hicolecmchar::col#6 ← mode_hicolecmchar::col#3 +Coalesced [653] mode_hicolecmchar::ch#6 ← mode_hicolecmchar::ch#3 +Coalesced [671] mode_hicolecmchar::cy#5 ← mode_hicolecmchar::cy#1 +Coalesced [672] mode_hicolecmchar::col#5 ← mode_hicolecmchar::col#1 +Coalesced [673] mode_hicolecmchar::ch#5 ← mode_hicolecmchar::ch#1 +Coalesced [674] mode_hicolecmchar::cx#3 ← mode_hicolecmchar::cx#1 +Coalesced (already) [675] mode_hicolecmchar::col#7 ← mode_hicolecmchar::col#1 +Coalesced (already) [676] mode_hicolecmchar::ch#7 ← mode_hicolecmchar::ch#1 +Coalesced [677] mode_hicolecmchar::i#3 ← mode_hicolecmchar::i#1 +Coalesced [694] mode_hicolstdchar::col#6 ← mode_hicolstdchar::col#3 +Coalesced [695] mode_hicolstdchar::ch#6 ← mode_hicolstdchar::ch#3 +Coalesced [713] mode_hicolstdchar::cy#5 ← mode_hicolstdchar::cy#1 +Coalesced [714] mode_hicolstdchar::col#5 ← mode_hicolstdchar::col#1 +Coalesced [715] mode_hicolstdchar::ch#5 ← mode_hicolstdchar::ch#1 +Coalesced [716] mode_hicolstdchar::cx#3 ← mode_hicolstdchar::cx#1 +Coalesced (already) [717] mode_hicolstdchar::col#7 ← mode_hicolstdchar::col#1 +Coalesced (already) [718] mode_hicolstdchar::ch#7 ← mode_hicolstdchar::ch#1 +Coalesced [719] mode_hicolstdchar::i#3 ← mode_hicolstdchar::i#1 +Coalesced [734] mode_stdbitmap::ch#6 ← mode_stdbitmap::ch#3 +Coalesced [764] mode_stdbitmap::l#5 ← mode_stdbitmap::l#1 +Coalesced [765] mode_stdbitmap::cy#5 ← mode_stdbitmap::cy#1 +Coalesced [766] mode_stdbitmap::ch#5 ← mode_stdbitmap::ch#1 +Coalesced [767] mode_stdbitmap::cx#3 ← mode_stdbitmap::cx#1 +Coalesced (already) [768] mode_stdbitmap::ch#7 ← mode_stdbitmap::ch#1 +Coalesced [769] mode_stdbitmap::i#3 ← mode_stdbitmap::i#1 +Coalesced [780] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#0 +Coalesced [781] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#0 +Coalesced [782] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#0 +Coalesced [783] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#0 +Coalesced [784] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#0 +Coalesced [793] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#0 +Coalesced [794] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#0 +Coalesced [795] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#0 +Coalesced [796] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#0 +Coalesced [797] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#0 +Coalesced [807] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 +Coalesced [808] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 +Coalesced [809] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 +Coalesced [810] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 +Coalesced [811] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 +Coalesced [819] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#0 +Coalesced [820] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 +Coalesced [821] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#0 +Coalesced [822] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#0 +Coalesced [823] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#0 +Coalesced [835] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 +Coalesced [836] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 +Coalesced [837] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 +Coalesced [838] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 +Coalesced [839] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 +Coalesced [847] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#1 +Coalesced [848] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#1 +Coalesced [849] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#1 +Coalesced [850] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#1 +Coalesced [851] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#1 +Coalesced [861] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#1 +Coalesced [862] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#1 +Coalesced [863] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#1 +Coalesced [864] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#1 +Coalesced [865] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#1 +Coalesced [873] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#1 +Coalesced [874] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#1 +Coalesced [875] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#1 +Coalesced [876] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#1 +Coalesced [877] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#1 +Coalesced [882] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 +Coalesced [883] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 +Coalesced [884] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 +Coalesced [888] bitmap_plot::x#6 ← bitmap_plot::x#0 +Coalesced [889] bitmap_plot::y#6 ← bitmap_plot::y#0 +Coalesced [896] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 +Coalesced [897] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 +Coalesced [902] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 +Coalesced [903] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 +Coalesced [904] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 +Coalesced (already) [905] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 +Coalesced [906] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 +Coalesced [916] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 +Coalesced [917] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 +Coalesced [918] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 +Coalesced [922] bitmap_plot::x#8 ← bitmap_plot::x#2 +Coalesced [923] bitmap_plot::y#8 ← bitmap_plot::y#2 +Coalesced [930] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 +Coalesced [931] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 +Coalesced [936] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 +Coalesced [937] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 +Coalesced [938] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 +Coalesced (already) [939] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 +Coalesced [940] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 +Coalesced [943] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 +Coalesced [944] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 +Coalesced [945] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 +Coalesced [949] bitmap_plot::x#5 ← bitmap_plot::x#1 +Coalesced [950] bitmap_plot::y#5 ← bitmap_plot::y#1 +Coalesced [957] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 +Coalesced [958] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 +Coalesced [963] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 +Coalesced [964] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 +Coalesced [965] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 +Coalesced (already) [966] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 +Coalesced [967] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 +Coalesced [970] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 +Coalesced [971] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 +Coalesced [972] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 +Coalesced [976] bitmap_plot::x#7 ← bitmap_plot::x#3 +Coalesced [977] bitmap_plot::y#7 ← bitmap_plot::y#3 +Coalesced [984] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 +Coalesced [985] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 +Coalesced [990] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 +Coalesced [991] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 +Coalesced [992] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 +Coalesced (already) [993] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 +Coalesced [994] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 +Coalesced [998] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [1007] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [1008] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [1009] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [1010] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [1033] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [1038] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [1039] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [1040] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [1041] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [1042] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [1043] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [1062] mode_mcchar::col#6 ← mode_mcchar::col#3 +Coalesced [1063] mode_mcchar::ch#6 ← mode_mcchar::ch#3 +Coalesced [1083] mode_mcchar::cy#5 ← mode_mcchar::cy#1 +Coalesced [1084] mode_mcchar::col#5 ← mode_mcchar::col#1 +Coalesced [1085] mode_mcchar::ch#5 ← mode_mcchar::ch#1 +Coalesced [1086] mode_mcchar::cx#3 ← mode_mcchar::cx#1 +Coalesced (already) [1087] mode_mcchar::col#7 ← mode_mcchar::col#1 +Coalesced (already) [1088] mode_mcchar::ch#7 ← mode_mcchar::ch#1 +Coalesced [1089] mode_mcchar::i#3 ← mode_mcchar::i#1 +Coalesced [1109] mode_ecmchar::col#6 ← mode_ecmchar::col#3 +Coalesced [1110] mode_ecmchar::ch#6 ← mode_ecmchar::ch#3 +Coalesced [1130] mode_ecmchar::cy#5 ← mode_ecmchar::cy#1 +Coalesced [1131] mode_ecmchar::col#5 ← mode_ecmchar::col#1 +Coalesced [1132] mode_ecmchar::ch#5 ← mode_ecmchar::ch#1 +Coalesced [1133] mode_ecmchar::cx#3 ← mode_ecmchar::cx#1 +Coalesced (already) [1134] mode_ecmchar::col#7 ← mode_ecmchar::col#1 +Coalesced (already) [1135] mode_ecmchar::ch#7 ← mode_ecmchar::ch#1 +Coalesced [1136] mode_ecmchar::i#3 ← mode_ecmchar::i#1 +Coalesced [1153] mode_stdchar::col#6 ← mode_stdchar::col#3 +Coalesced [1154] mode_stdchar::ch#6 ← mode_stdchar::ch#3 +Coalesced [1174] mode_stdchar::cy#5 ← mode_stdchar::cy#1 +Coalesced [1175] mode_stdchar::col#5 ← mode_stdchar::col#1 +Coalesced [1176] mode_stdchar::ch#5 ← mode_stdchar::ch#1 +Coalesced [1177] mode_stdchar::cx#3 ← mode_stdchar::cx#1 +Coalesced (already) [1178] mode_stdchar::col#7 ← mode_stdchar::col#1 +Coalesced (already) [1179] mode_stdchar::ch#7 ← mode_stdchar::ch#1 +Coalesced [1180] mode_stdchar::i#3 ← mode_stdchar::i#1 +Coalesced [1185] print_str_lines::str#10 ← print_str_lines::str#2 +Coalesced [1186] print_char_cursor#99 ← print_char_cursor#19 +Coalesced [1193] print_char_cursor#102 ← print_char_cursor#1 +Coalesced [1198] print_str_lines::str#9 ← print_str_lines::str#0 +Not coalescing [1199] print_char_cursor#98 ← print_line_cursor#19 +Coalesced [1200] print_line_cursor#98 ← print_line_cursor#19 +Coalesced (already) [1201] print_str_lines::str#11 ← print_str_lines::str#0 +Coalesced [1202] print_char_cursor#100 ← print_char_cursor#32 +Coalesced (already) [1203] print_char_cursor#101 ← print_char_cursor#17 +Coalesced [1204] print_line_cursor#99 ← print_line_cursor#17 +Coalesced (already) [1210] print_line_cursor#100 ← print_line_cursor#19 +Coalesced [1223] memset::dst#4 ← memset::dst#1 Coalesced down to 125 phi equivalence classes -Culled Empty Block (label) @4 Culled Empty Block (label) @17 -Culled Empty Block (label) @41 Culled Empty Block (label) @48 Culled Empty Block (label) @58 Culled Empty Block (label) @72 @@ -11462,7 +11418,7 @@ print_str_lines: scope:[print_str_lines] from menu::@30 to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@6 [865] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN print_str_lines::@6/(byte*) print_line_cursor#19 ) - [865] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN print_str_lines::@6/(byte*~) print_char_cursor#99 ) + [865] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN print_str_lines::@6/(byte*~) print_char_cursor#98 ) [865] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT print_str_lines::@6/(byte*) print_str_lines::str#0 ) [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 to:print_str_lines::@return @@ -11489,7 +11445,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3 [877] call print_ln to:print_str_lines::@6 print_str_lines::@6: scope:[print_str_lines] from print_str_lines::@5 - [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 + [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 to:print_str_lines::@1 (void()) print_ln() @@ -12236,7 +12192,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#17 821.0 (byte*) print_char_cursor#19 101.0 (byte*) print_char_cursor#32 572.0 -(byte*~) print_char_cursor#99 202.0 +(byte*~) print_char_cursor#98 202.0 (void()) print_cls() (byte*) print_line_cursor (byte*) print_line_cursor#17 8.583333333333332 @@ -12377,7 +12333,7 @@ Initial phi equivalence classes [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] -[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] +[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] [ memset::dst#2 memset::dst#1 ] Added variable keyboard_key_pressed::return#2 to zero page equivalence class [ keyboard_key_pressed::return#2 ] @@ -12632,7 +12588,7 @@ Complete equivalence classes [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] -[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] +[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] [ memset::dst#2 memset::dst#1 ] [ keyboard_key_pressed::return#2 ] @@ -12886,7 +12842,7 @@ Allocated zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] Allocated zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] Allocated zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] Allocated zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] -Allocated zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] +Allocated zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] Allocated zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] Allocated zp[2]:159 [ memset::dst#2 memset::dst#1 ] Allocated zp[1]:161 [ keyboard_key_pressed::return#2 ] @@ -18235,7 +18191,7 @@ print_str_lines: { jmp __b6 // print_str_lines::@6 __b6: - // [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + // [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -18243,7 +18199,7 @@ print_str_lines: { // [865] phi from print_str_lines::@6 to print_str_lines::@1 [phi:print_str_lines::@6->print_str_lines::@1] __b1_from___b6: // [865] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@6->print_str_lines::@1#0] -- register_copy - // [865] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#99 [phi:print_str_lines::@6->print_str_lines::@1#1] -- register_copy + // [865] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#98 [phi:print_str_lines::@6->print_str_lines::@1#1] -- register_copy // [865] phi (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#0 [phi:print_str_lines::@6->print_str_lines::@1#2] -- register_copy jmp __b1 } @@ -18349,14 +18305,14 @@ print_set_screen: { rts } // File Data - MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" - .byte 0 // Default vallues for the palette DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 + MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" + .byte 0 // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 @@ -18828,7 +18784,7 @@ Statement [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_l Statement [869] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [872] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp[1]:294 [ print_str_lines::ch#0 ] -Statement [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#99 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#99 print_line_cursor#19 ] ) always clobbers reg byte a +Statement [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#98 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#98 print_line_cursor#19 ] ) always clobbers reg byte a Statement [881] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte) $28 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [882] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [889] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] ) always clobbers reg byte a @@ -19136,7 +19092,7 @@ Statement [855] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$26 [ mo Statement [866] if((byte) 0!=*((byte*) print_str_lines::str#2)) goto print_str_lines::@2 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) always clobbers reg byte a reg byte y Statement [869] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [872] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:31 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte y -Statement [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#99 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#99 print_line_cursor#19 ] ) always clobbers reg byte a +Statement [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#98 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:31 [ print_str_lines::str#0 print_char_cursor#98 print_line_cursor#19 ] ) always clobbers reg byte a Statement [881] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte) $28 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [882] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:31::print_ln:877 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [889] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::menu:9::print_cls:29::memset:885 [ memset::dst#2 ] ) always clobbers reg byte a @@ -19263,7 +19219,7 @@ Potential registers zp[1]:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] : zp[1]: Potential registers zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] : zp[2]:149 , Potential registers zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] : zp[2]:151 , Potential registers zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] : zp[2]:153 , -Potential registers zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] : zp[2]:155 , +Potential registers zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] : zp[2]:155 , Potential registers zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] : zp[2]:157 , Potential registers zp[2]:159 [ memset::dst#2 memset::dst#1 ] : zp[2]:159 , Potential registers zp[1]:161 [ keyboard_key_pressed::return#2 ] : zp[1]:161 , reg byte a , reg byte x , reg byte y , @@ -19416,7 +19372,7 @@ Uplift Scope [bitmap_line_ydxd] 4,742.47: zp[1]:122 [ bitmap_line_ydxd::e#3 bitm Uplift Scope [mode_hicolstdchar] 2,002: zp[1]:239 [ mode_hicolstdchar::$21 ] 2,002: zp[1]:241 [ mode_hicolstdchar::$23 ] 1,835.17: zp[1]:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] 1,019.76: zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] 1,010.6: zp[2]:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] 1,001: zp[1]:240 [ mode_hicolstdchar::$22 ] 1,001: zp[1]:242 [ mode_hicolstdchar::v#0 ] 353.5: zp[1]:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] 251.75: zp[1]:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] Uplift Scope [mode_hicolecmchar] 2,002: zp[1]:235 [ mode_hicolecmchar::$21 ] 2,002: zp[1]:237 [ mode_hicolecmchar::$23 ] 1,835.17: zp[1]:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] 1,019.76: zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] 1,010.6: zp[2]:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] 1,001: zp[1]:236 [ mode_hicolecmchar::$22 ] 1,001: zp[1]:238 [ mode_hicolecmchar::v#0 ] 353.5: zp[1]:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] 251.75: zp[1]:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] Uplift Scope [mode_hicolmcchar] 2,002: zp[1]:231 [ mode_hicolmcchar::$21 ] 2,002: zp[1]:233 [ mode_hicolmcchar::$23 ] 1,835.17: zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] 1,019.76: zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] 1,010.6: zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] 1,001: zp[1]:232 [ mode_hicolmcchar::$22 ] 1,001: zp[1]:234 [ mode_hicolmcchar::v#0 ] 353.5: zp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] 251.75: zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] -Uplift Scope [] 3,698: zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] 2,653.58: zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] 149.86: zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] +Uplift Scope [] 3,698: zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] 2,653.58: zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] 149.86: zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] Uplift Scope [bitmap_clear] 2,180.6: zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 2,168.83: zp[1]:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 185.17: zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp[2]:269 [ bitmap_clear::bitmap#0 ] Uplift Scope [menu] 353.5: zp[1]:2 [ menu::i#2 menu::i#1 ] 336.67: zp[2]:3 [ menu::c#2 menu::c#1 ] 202: zp[1]:162 [ menu::$24 ] 202: zp[1]:164 [ menu::$28 ] 202: zp[1]:166 [ menu::$32 ] 202: zp[1]:168 [ menu::$36 ] 202: zp[1]:170 [ menu::$40 ] 202: zp[1]:172 [ menu::$44 ] 202: zp[1]:174 [ menu::$48 ] 202: zp[1]:176 [ menu::$52 ] 202: zp[1]:178 [ menu::$56 ] 202: zp[1]:180 [ menu::$60 ] 202: zp[1]:182 [ menu::$64 ] 202: zp[1]:184 [ menu::$68 ] Uplift Scope [dtvSetCpuBankSegment1] 3,005: zp[1]:15 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] @@ -19467,7 +19423,7 @@ Uplifting [mode_hicolecmchar] best 3406499 combination reg byte a [ mode_hicolec Limited combination testing to 10 combinations of 2304 possible. Uplifting [mode_hicolmcchar] best 3394499 combination reg byte a [ mode_hicolmcchar::$21 ] reg byte a [ mode_hicolmcchar::$23 ] zp[1]:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] zp[2]:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] zp[2]:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] zp[1]:232 [ mode_hicolmcchar::$22 ] zp[1]:234 [ mode_hicolmcchar::v#0 ] zp[1]:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] zp[1]:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] Limited combination testing to 10 combinations of 2304 possible. -Uplifting [] best 3394499 combination zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] +Uplifting [] best 3394499 combination zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] zp[1]:12 [ dtv_control#114 dtv_control#144 dtv_control#17 ] Uplifting [bitmap_clear] best 3385499 combination zp[2]:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:269 [ bitmap_clear::bitmap#0 ] Uplifting [menu] best 3383699 combination reg byte x [ menu::i#2 menu::i#1 ] zp[2]:3 [ menu::c#2 menu::c#1 ] reg byte a [ menu::$24 ] zp[1]:164 [ menu::$28 ] zp[1]:166 [ menu::$32 ] zp[1]:168 [ menu::$36 ] zp[1]:170 [ menu::$40 ] zp[1]:172 [ menu::$44 ] zp[1]:174 [ menu::$48 ] zp[1]:176 [ menu::$52 ] zp[1]:178 [ menu::$56 ] zp[1]:180 [ menu::$60 ] zp[1]:182 [ menu::$64 ] zp[1]:184 [ menu::$68 ] Limited combination testing to 10 combinations of 50331648 possible. @@ -19873,7 +19829,7 @@ Coalescing zero page register [ zp[1]:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy# Coalescing zero page register [ zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 ] ] with [ zp[2]:135 [ mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] ] Coalescing zero page register [ zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] ] with [ zp[2]:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] Coalescing zero page register [ zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] ] with [ zp[2]:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] ] -Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 ] ] with [ zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] +Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 ] ] with [ zp[2]:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] Coalescing zero page register [ zp[2]:159 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] ] Coalescing zero page register [ zp[1]:204 [ keyboard_key_pressed::colidx#0 ] ] with [ zp[1]:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ] ] Coalescing zero page register [ zp[1]:221 [ mode_twoplanebitmap::$3 ] ] with [ zp[1]:212 [ mode_8bpppixelcell::$3 ] ] @@ -19897,7 +19853,7 @@ Coalescing zero page register [ zp[1]:121 [ bitmap_line_ydxd::y#2 bitmap_line_yd Coalescing zero page register [ zp[1]:122 [ 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::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] with [ zp[1]:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] Coalescing zero page register [ zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] with [ zp[2]:94 [ mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] ] Coalescing zero page register [ zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] ] with [ zp[2]:142 [ mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] ] -Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] with [ zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] +Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] with [ zp[2]:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] Coalescing zero page register [ zp[1]:204 [ keyboard_key_pressed::colidx#0 mode_stdchar::cy#4 mode_stdchar::cy#1 ] ] with [ zp[1]:110 [ 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::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 ] ] Coalescing zero page register [ zp[1]:221 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 ] ] with [ zp[1]:123 [ bitmap_clear::y#4 bitmap_clear::y#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] ] Coalescing zero page register [ zp[1]:232 [ mode_hicolmcchar::$22 mode_sixsfred2::$3 ] ] with [ zp[1]:133 [ mode_mcchar::cy#4 mode_mcchar::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 ] ] @@ -19914,13 +19870,13 @@ Coalescing zero page register [ zp[1]:204 [ keyboard_key_pressed::colidx#0 mode_ Coalescing zero page register [ zp[1]:232 [ mode_hicolmcchar::$22 mode_sixsfred2::$3 mode_mcchar::cy#4 mode_mcchar::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 ] ] with [ zp[1]:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] ] Coalescing zero page register [ zp[2]:261 [ bitmap_plot::plotter_y#0 ] ] with [ zp[2]:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] ] Coalescing zero page register [ zp[1]:291 [ mode_stdchar::$24 ] ] with [ zp[1]:221 [ mode_twoplanebitmap::$3 mode_8bpppixelcell::$3 bitmap_clear::y#4 bitmap_clear::y#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 ] ] -Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] with [ zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] ] +Coalescing zero page register [ zp[2]:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] with [ zp[2]:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] ] Coalescing zero page register [ zp[2]:259 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 mode_8bppchunkybmm::$9 memset::dst#2 memset::dst#1 print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] ] with [ zp[2]:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 ] ] Coalescing zero page register [ zp[2]:261 [ bitmap_plot::plotter_y#0 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 ] ] with [ zp[2]:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 ] ] Coalescing zero page register [ zp[1]:285 [ mode_ecmchar::$24 mode_mcchar::$24 bitmap_init::$10 mode_stdbitmap::col2#0 ] ] with [ zp[1]:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 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_sixsfred::cy#4 mode_sixsfred::cy#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 dtv_control#114 dtv_control#144 dtv_control#17 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 ] ] Allocated (was zp[1]:121) zp[1]:2 [ 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::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::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::cy#4 mode_sixsfred2::cy#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 ] Allocated (was zp[1]:122) zp[1]:3 [ 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::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::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y1#0 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] -Allocated (was zp[2]:155) zp[2]:4 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] +Allocated (was zp[2]:155) zp[2]:4 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] Allocated (was zp[1]:204) zp[1]:6 [ keyboard_key_pressed::colidx#0 mode_stdchar::cy#4 mode_stdchar::cy#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 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 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#1 mode_8bpppixelcell::bits#0 ] Allocated (was zp[1]:232) zp[1]:7 [ mode_hicolmcchar::$22 mode_sixsfred2::$3 mode_mcchar::cy#4 mode_mcchar::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 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ] Allocated (was zp[1]:240) zp[1]:8 [ mode_hicolstdchar::$22 mode_hicolecmchar::$22 mode_ecmchar::cy#4 mode_ecmchar::cy#1 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 bitmap_line::y0#0 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 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] @@ -24584,7 +24540,7 @@ print_str_lines: { jmp __b6 // print_str_lines::@6 __b6: - // [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + // [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -24592,7 +24548,7 @@ print_str_lines: { // [865] phi from print_str_lines::@6 to print_str_lines::@1 [phi:print_str_lines::@6->print_str_lines::@1] __b1_from___b6: // [865] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@6->print_str_lines::@1#0] -- register_copy - // [865] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#99 [phi:print_str_lines::@6->print_str_lines::@1#1] -- register_copy + // [865] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#98 [phi:print_str_lines::@6->print_str_lines::@1#1] -- register_copy // [865] phi (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#0 [phi:print_str_lines::@6->print_str_lines::@1#2] -- register_copy jmp __b1 } @@ -24698,14 +24654,14 @@ print_set_screen: { rts } // File Data - MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" - .byte 0 // Default vallues for the palette DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 + MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" + .byte 0 // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 @@ -26667,7 +26623,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#17 print_char_cursor zp[2]:4 821.0 (byte*) print_char_cursor#19 print_char_cursor zp[2]:4 101.0 (byte*) print_char_cursor#32 print_char_cursor zp[2]:4 572.0 -(byte*~) print_char_cursor#99 print_char_cursor zp[2]:4 202.0 +(byte*~) print_char_cursor#98 print_char_cursor zp[2]:4 202.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -26742,7 +26698,7 @@ reg byte x [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] reg byte x [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] reg byte x [ mode_stdchar::i#2 mode_stdchar::i#1 ] reg byte x [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -zp[2]:4 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] +zp[2]:4 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ menu::$24 ] reg byte a [ keyboard_key_pressed::return#24 ] @@ -31372,14 +31328,14 @@ print_str_lines: { // [879] phi from print_str_lines::@5 to print_ln [phi:print_str_lines::@5->print_ln] jsr print_ln // print_str_lines::@6 - // [878] (byte*~) print_char_cursor#99 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + // [878] (byte*~) print_char_cursor#98 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 sta.z print_char_cursor+1 // [865] phi from print_str_lines::@6 to print_str_lines::@1 [phi:print_str_lines::@6->print_str_lines::@1] // [865] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@6->print_str_lines::@1#0] -- register_copy - // [865] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#99 [phi:print_str_lines::@6->print_str_lines::@1#1] -- register_copy + // [865] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#98 [phi:print_str_lines::@6->print_str_lines::@1#1] -- register_copy // [865] phi (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#0 [phi:print_str_lines::@6->print_str_lines::@1#2] -- register_copy jmp __b1 } @@ -31480,14 +31436,14 @@ print_set_screen: { rts } // File Data - MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" - .byte 0 // Default vallues for the palette DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a // Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7) keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 + MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@" + .byte 0 // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 diff --git a/src/test/ref/c64dtv-gfxmodes.sym b/src/test/ref/c64dtv-gfxmodes.sym index 22fdf7555..405a21883 100644 --- a/src/test/ref/c64dtv-gfxmodes.sym +++ b/src/test/ref/c64dtv-gfxmodes.sym @@ -1044,7 +1044,7 @@ (byte*) print_char_cursor#17 print_char_cursor zp[2]:4 821.0 (byte*) print_char_cursor#19 print_char_cursor zp[2]:4 101.0 (byte*) print_char_cursor#32 print_char_cursor zp[2]:4 572.0 -(byte*~) print_char_cursor#99 print_char_cursor zp[2]:4 202.0 +(byte*~) print_char_cursor#98 print_char_cursor zp[2]:4 202.0 (void()) print_cls() (label) print_cls::@return (byte*) print_line_cursor @@ -1119,7 +1119,7 @@ reg byte x [ mode_ecmchar::i#2 mode_ecmchar::i#1 ] reg byte x [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ] reg byte x [ mode_stdchar::i#2 mode_stdchar::i#1 ] reg byte x [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] -zp[2]:4 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#99 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] +zp[2]:4 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#98 print_char_cursor#32 print_char_cursor#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 menu::c#2 menu::c#1 ] reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ menu::$24 ] reg byte a [ keyboard_key_pressed::return#24 ] diff --git a/src/test/ref/cast-deref.log b/src/test/ref/cast-deref.log index 468eaac5f..8828f8ba2 100644 --- a/src/test/ref/cast-deref.log +++ b/src/test/ref/cast-deref.log @@ -7,12 +7,11 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (signed byte[]) main::sbs ← { (number) -1, (number) -2, (number) -3, (number) -4 } (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← ((byte)) *((signed byte[]) main::sbs + (byte) main::i#2) + (byte~) main::$0 ← ((byte)) *((const signed byte[]) main::sbs + (byte) main::i#2) *((const byte*) main::SCREEN + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,3) (bool~) main::$1 ← (byte) main::i#1 != rangelast(0,3) @@ -43,27 +42,22 @@ SYMBOL TABLE SSA (byte) main::i#0 (byte) main::i#1 (byte) main::i#2 -(signed byte[]) main::sbs +(const signed byte[]) main::sbs = { (signed byte)(number) -1, (signed byte)(number) -2, (signed byte)(number) -3, (signed byte)(number) -4 } -Added casts to value list in (signed byte[]) main::sbs ← (signed byte[]){ (signed byte)(number) -1, (signed byte)(number) -2, (signed byte)(number) -3, (signed byte)(number) -4 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Inlining cast (byte~) main::$0 ← (byte)*((signed byte[]) main::sbs + (byte) main::i#2) +Inlining cast (byte~) main::$0 ← (byte)*((const signed byte[]) main::sbs + (byte) main::i#2) Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast -1 Simplifying constant integer cast -2 Simplifying constant integer cast -3 Simplifying constant integer cast -4 +Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Simple Condition (bool~) main::$1 [7] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 +Simple Condition (bool~) main::$1 [6] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (signed byte[]) { (signed byte) -1, (signed byte) -2, (signed byte) -3, (signed byte) -4 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const signed byte[]) main::sbs = { -1, -2, -3, -4 } Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [5] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [7] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 +Resolved ranged next value [4] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [6] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 Adding number conversion cast (unumber) 4 in if((byte) main::i#1!=(number) 4) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 4 diff --git a/src/test/ref/cast-not-needed-2.log b/src/test/ref/cast-not-needed-2.log index 2298a8879..5e39e9bbc 100644 --- a/src/test/ref/cast-not-needed-2.log +++ b/src/test/ref/cast-not-needed-2.log @@ -10,7 +10,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*~) $0 ← ((byte*)) (number) $400 (byte*~) $1 ← ((byte*)) (number) $1400 - (byte*[]) screens ← { (byte*~) $0, (byte*~) $1 } + (byte*[]) screens ← { (byte*)(byte*~) $0, (byte*)(byte*~) $1 } to:@3 (void()) main() @@ -112,6 +112,8 @@ Inlining cast *((byte*~) main::$1) ← (unumber)(number) $22 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 5120 +Simplifying constant integer cast (byte*~) $0 +Simplifying constant integer cast (byte*~) $1 Simplifying constant integer cast 0 Simplifying constant integer cast $378 Simplifying constant integer cast (byte*~) main::spritePtr1_$0 diff --git a/src/test/ref/cast-not-needed-3.log b/src/test/ref/cast-not-needed-3.log index b91042d68..1fab83f3d 100644 --- a/src/test/ref/cast-not-needed-3.log +++ b/src/test/ref/cast-not-needed-3.log @@ -11,7 +11,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*~) $0 ← ((byte*)) (number) $400 (byte*~) $1 ← ((byte*)) (number) $1400 - (byte*[]) screens ← { (byte*~) $0, (byte*~) $1 } + (byte*[]) screens ← { (byte*)(byte*~) $0, (byte*)(byte*~) $1 } to:@3 (void()) main() @@ -109,6 +109,8 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 5120 +Simplifying constant integer cast (byte*~) $0 +Simplifying constant integer cast (byte*~) $1 Simplifying constant integer cast 0 Simplifying constant integer cast $378 Simplifying constant integer cast *((byte*~) main::spritePtr1_$0) diff --git a/src/test/ref/complex/ataritempest/ataritempest.log b/src/test/ref/complex/ataritempest/ataritempest.log index 554c999a4..b9ccaad3d 100644 --- a/src/test/ref/complex/ataritempest/ataritempest.log +++ b/src/test/ref/complex/ataritempest/ataritempest.log @@ -41,7 +41,7 @@ main::@return: scope:[main] from main @3: scope:[] from @begin (void()*~) $0 ← & interrupt(HARDWARE_ALL)(void()) nmiHandler() (void()*~) $1 ← & (void()) entryPoint() - (void()*[]) VECTORS ← { (void()*~) $0, (void()*~) $1 } + (void()*[]) VECTORS ← { (void()*)(void()*~) $0, (void()*)(void()*~) $1 } call main to:@4 @4: scope:[] from @3 @@ -73,6 +73,8 @@ interrupt(HARDWARE_ALL)(void()) nmiHandler() (label) nmiHandler::@return Simplifying constant pointer cast (byte*) 49178 +Simplifying constant integer cast (void()*~) $0 +Simplifying constant integer cast (void()*~) $1 Successful SSA optimization PassNCastSimplification Simple Condition (bool~) entryPoint::$0 [6] if((byte) entryPoint::i#1!=rangelast(0,$31)) goto entryPoint::@1 Successful SSA optimization Pass2ConditionalJumpSimplification diff --git a/src/test/ref/complex/splines/truetype-splines.log b/src/test/ref/complex/splines/truetype-splines.log index 54a75f09d..3e7c4451a 100644 --- a/src/test/ref/complex/splines/truetype-splines.log +++ b/src/test/ref/complex/splines/truetype-splines.log @@ -1235,7 +1235,7 @@ mulf16s::@return: scope:[mulf16s] from mulf16s::@2 @60: scope:[] from @51 (byte*) bitmap_screen#25 ← phi( @51/(byte*) bitmap_screen#27 ) (byte*) bitmap_gfx#26 ← phi( @51/(byte*) bitmap_gfx#28 ) - (struct Segment[$16]) letter_c ← { { (const byte) MOVE_TO, { (number) $6c, (number) $92 }, { (number) 0, (number) 0 } }, { (const byte) SPLINE_TO, { (number) $59, (number) $b6 }, { (number) $67, (number) $a9 } }, { (const byte) SPLINE_TO, { (number) $3b, (number) $c3 }, { (number) $4b, (number) $c3 } }, { (const byte) SPLINE_TO, { (number) $17, (number) $b2 }, { (number) $26, (number) $c3 } }, { (const byte) SPLINE_TO, { (number) 9, (number) $84 }, { (number) 9, (number) $a1 } }, { (const byte) SPLINE_TO, { (number) $19, (number) $57 }, { (number) 9, (number) $68 } }, { (const byte) SPLINE_TO, { (number) $41, (number) $45 }, { (number) $2a, (number) $45 } }, { (const byte) SPLINE_TO, { (number) $5d, (number) $4f }, { (number) $52, (number) $45 } }, { (const byte) SPLINE_TO, { (number) $69, (number) $62 }, { (number) $69, (number) $58 } }, { (const byte) SPLINE_TO, { (number) $66, (number) $6a }, { (number) $69, (number) $67 } }, { (const byte) SPLINE_TO, { (number) $5d, (number) $6d }, { (number) $62, (number) $6d } }, { (const byte) SPLINE_TO, { (number) $51, (number) $68 }, { (number) $55, (number) $6d } }, { (const byte) SPLINE_TO, { (number) $4e, (number) $5d }, { (number) $4f, (number) $65 } }, { (const byte) SPLINE_TO, { (number) $49, (number) $52 }, { (number) $4e, (number) $56 } }, { (const byte) SPLINE_TO, { (number) $3d, (number) $4e }, { (number) $45, (number) $4e } }, { (const byte) SPLINE_TO, { (number) $28, (number) $58 }, { (number) $30, (number) $4e } }, { (const byte) SPLINE_TO, { (number) $1d, (number) $79 }, { (number) $1d, (number) $64 } }, { (const byte) SPLINE_TO, { (number) $28, (number) $9e }, { (number) $1d, (number) $8e } }, { (const byte) SPLINE_TO, { (number) $44, (number) $ae }, { (number) $32, (number) $ae } }, { (const byte) SPLINE_TO, { (number) $5b, (number) $a6 }, { (number) $50, (number) $ae } }, { (const byte) SPLINE_TO, { (number) $68, (number) $90 }, { (number) $62, (number) $a0 } }, { (const byte) LINE_TO, { (number) $6c, (number) $92 }, { (number) 0, (number) 0 } } } + (struct Segment[$16]) letter_c ← { (struct Segment){ (const byte) MOVE_TO, (struct SplineVector16){ (signed word)(number) $6c, (signed word)(number) $92 }, (struct SplineVector16){ (signed word)(number) 0, (signed word)(number) 0 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $59, (signed word)(number) $b6 }, (struct SplineVector16){ (signed word)(number) $67, (signed word)(number) $a9 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $3b, (signed word)(number) $c3 }, (struct SplineVector16){ (signed word)(number) $4b, (signed word)(number) $c3 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $17, (signed word)(number) $b2 }, (struct SplineVector16){ (signed word)(number) $26, (signed word)(number) $c3 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) 9, (signed word)(number) $84 }, (struct SplineVector16){ (signed word)(number) 9, (signed word)(number) $a1 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $19, (signed word)(number) $57 }, (struct SplineVector16){ (signed word)(number) 9, (signed word)(number) $68 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $41, (signed word)(number) $45 }, (struct SplineVector16){ (signed word)(number) $2a, (signed word)(number) $45 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $5d, (signed word)(number) $4f }, (struct SplineVector16){ (signed word)(number) $52, (signed word)(number) $45 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $69, (signed word)(number) $62 }, (struct SplineVector16){ (signed word)(number) $69, (signed word)(number) $58 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $66, (signed word)(number) $6a }, (struct SplineVector16){ (signed word)(number) $69, (signed word)(number) $67 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $5d, (signed word)(number) $6d }, (struct SplineVector16){ (signed word)(number) $62, (signed word)(number) $6d } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $51, (signed word)(number) $68 }, (struct SplineVector16){ (signed word)(number) $55, (signed word)(number) $6d } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $4e, (signed word)(number) $5d }, (struct SplineVector16){ (signed word)(number) $4f, (signed word)(number) $65 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $49, (signed word)(number) $52 }, (struct SplineVector16){ (signed word)(number) $4e, (signed word)(number) $56 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $3d, (signed word)(number) $4e }, (struct SplineVector16){ (signed word)(number) $45, (signed word)(number) $4e } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $28, (signed word)(number) $58 }, (struct SplineVector16){ (signed word)(number) $30, (signed word)(number) $4e } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $1d, (signed word)(number) $79 }, (struct SplineVector16){ (signed word)(number) $1d, (signed word)(number) $64 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $28, (signed word)(number) $9e }, (struct SplineVector16){ (signed word)(number) $1d, (signed word)(number) $8e } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $44, (signed word)(number) $ae }, (struct SplineVector16){ (signed word)(number) $32, (signed word)(number) $ae } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $5b, (signed word)(number) $a6 }, (struct SplineVector16){ (signed word)(number) $50, (signed word)(number) $ae } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $68, (signed word)(number) $90 }, (struct SplineVector16){ (signed word)(number) $62, (signed word)(number) $a0 } }, (struct Segment){ (const byte) LINE_TO, (struct SplineVector16){ (signed word)(number) $6c, (signed word)(number) $92 }, (struct SplineVector16){ (signed word)(number) 0, (signed word)(number) 0 } } } to:@63 (void()) main() @@ -3109,8 +3109,6 @@ Adding number conversion cast (snumber) rotate::$10 in (number~) rotate::$10 ← Adding number conversion cast (snumber) 2 in (number~) rotate::$13 ← (signed word~) rotate::$12 * (number) 2 Adding number conversion cast (snumber) rotate::$13 in (number~) rotate::$13 ← (signed word~) rotate::$12 * (snumber)(number) 2 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Segment[$16]) letter_c ← (struct Segment[$16]){ (struct Segment){ (const byte) MOVE_TO, (struct SplineVector16){ (signed word)(number) $6c, (signed word)(number) $92 }, (struct SplineVector16){ (signed word)(number) 0, (signed word)(number) 0 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $59, (signed word)(number) $b6 }, (struct SplineVector16){ (signed word)(number) $67, (signed word)(number) $a9 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $3b, (signed word)(number) $c3 }, (struct SplineVector16){ (signed word)(number) $4b, (signed word)(number) $c3 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $17, (signed word)(number) $b2 }, (struct SplineVector16){ (signed word)(number) $26, (signed word)(number) $c3 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) 9, (signed word)(number) $84 }, (struct SplineVector16){ (signed word)(number) 9, (signed word)(number) $a1 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $19, (signed word)(number) $57 }, (struct SplineVector16){ (signed word)(number) 9, (signed word)(number) $68 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $41, (signed word)(number) $45 }, (struct SplineVector16){ (signed word)(number) $2a, (signed word)(number) $45 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $5d, (signed word)(number) $4f }, (struct SplineVector16){ (signed word)(number) $52, (signed word)(number) $45 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $69, (signed word)(number) $62 }, (struct SplineVector16){ (signed word)(number) $69, (signed word)(number) $58 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $66, (signed word)(number) $6a }, (struct SplineVector16){ (signed word)(number) $69, (signed word)(number) $67 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $5d, (signed word)(number) $6d }, (struct SplineVector16){ (signed word)(number) $62, (signed word)(number) $6d } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $51, (signed word)(number) $68 }, (struct SplineVector16){ (signed word)(number) $55, (signed word)(number) $6d } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $4e, (signed word)(number) $5d }, (struct SplineVector16){ (signed word)(number) $4f, (signed word)(number) $65 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $49, (signed word)(number) $52 }, (struct SplineVector16){ (signed word)(number) $4e, (signed word)(number) $56 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $3d, (signed word)(number) $4e }, (struct SplineVector16){ (signed word)(number) $45, (signed word)(number) $4e } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $28, (signed word)(number) $58 }, (struct SplineVector16){ (signed word)(number) $30, (signed word)(number) $4e } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $1d, (signed word)(number) $79 }, (struct SplineVector16){ (signed word)(number) $1d, (signed word)(number) $64 } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $28, (signed word)(number) $9e }, (struct SplineVector16){ (signed word)(number) $1d, (signed word)(number) $8e } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $44, (signed word)(number) $ae }, (struct SplineVector16){ (signed word)(number) $32, (signed word)(number) $ae } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $5b, (signed word)(number) $a6 }, (struct SplineVector16){ (signed word)(number) $50, (signed word)(number) $ae } }, (struct Segment){ (const byte) SPLINE_TO, (struct SplineVector16){ (signed word)(number) $68, (signed word)(number) $90 }, (struct SplineVector16){ (signed word)(number) $62, (signed word)(number) $a0 } }, (struct Segment){ (const byte) LINE_TO, (struct SplineVector16){ (signed word)(number) $6c, (signed word)(number) $92 }, (struct SplineVector16){ (signed word)(number) 0, (signed word)(number) 0 } } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80 diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index 73a34b4a5..f03ff37b7 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -1641,23 +1641,6 @@ sprites_irq: { keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // The playfield. 0 is empty non-zero is color. - // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, - playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - // The color #1 to use for the pieces for each level - PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED - // The color #2 to use for the pieces for each level - PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE - // Pointers to the screen address for rendering each playfield line - // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. - .align $80 - screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 - .align $40 - screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 @@ -1686,16 +1669,33 @@ sprites_irq: { // The initial X/Y for each piece PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 - // Pointers to the playfield address for each playfield line - playfield_lines: .fill 2*PLAYFIELD_LINES, 0 - // Indixes into the playfield for each playfield line - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // The speed of moving down the piece when soft-drop is not activated // This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1. MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 // Base Score values for removing 0-4 lines (in BCD) // These values are added to score_add_bcd for each level gained. SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // The playfield. 0 is empty non-zero is color. + // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, + playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 + // The color #1 to use for the pieces for each level + PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED + // The color #2 to use for the pieces for each level + PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE + // Pointers to the screen address for rendering each playfield line + // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. + .align $80 + screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 + .align $40 + screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 + // Pointers to the playfield address for each playfield line + playfield_lines: .fill 2*PLAYFIELD_LINES, 0 + // Indixes into the playfield for each playfield line + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // Score values for removing 0-4 lines (in BCD) // These values are updated based on the players level and the base values from SCORE_BASE_BCD score_add_bcd: .fill 4*5, 0 diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log index 2b4999341..f8fe7fd60 100644 --- a/src/test/ref/complex/tetris/tetris.log +++ b/src/test/ref/complex/tetris/tetris.log @@ -1,6 +1,6 @@ Resolved forward reference PIECES to (word[]) PIECES Resolved forward reference next_piece_idx to (byte) next_piece_idx -Resolved forward reference PIECES_NEXT_CHARS to (byte[]) PIECES_NEXT_CHARS +Resolved forward reference PIECES_NEXT_CHARS to (const byte[]) PIECES_NEXT_CHARS Resolved forward reference next_piece_idx to (byte) next_piece_idx Resolved forward reference sprites_irq to interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() Resolved forward reference COLLISION_NONE to (const byte) COLLISION_NONE @@ -14,14 +14,14 @@ Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte~ Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) screen_lines_1 + (byte~) render_moving::$1) Fixing pointer array-indexing *((word[]) PIECES + (byte) next_piece_idx) Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) playfield_lines + (byte) play_init::j) -Fixing pointer array-indexing *((dword[]) SCORE_BASE_BCD + (byte) play_init::b) +Fixing pointer array-indexing *((const dword[]) SCORE_BASE_BCD + (byte) play_init::b) Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_init::b) Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) playfield_lines + (byte) play_collision::yp) Fixing pointer array-indexing *((byte*[PLAYFIELD_LINES]) playfield_lines + (byte) play_lock_current::yp) Fixing pointer array-indexing *((word[]) PIECES + (byte) play_spawn_current::current_piece_idx) Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_update_score::removed) Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_increase_level::b) -Fixing pointer array-indexing *((dword[]) SCORE_BASE_BCD + (byte) play_increase_level::b) +Fixing pointer array-indexing *((const dword[]) SCORE_BASE_BCD + (byte) play_increase_level::b) Fixing pointer array-indexing *((dword[5]) score_add_bcd + (byte) play_increase_level::b) Identified constant variable (word) render_score::score_offset Identified constant variable (word) render_score::lines_offset @@ -38,6 +38,7 @@ Inlined call (byte~) play_spawn_current::$5 ← call sid_rnd 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) keyboard_matrix_read::@1 Culled Empty Block (label) @6 @@ -158,16 +159,12 @@ Culled Empty Block (label) main::@24 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } to:@8 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@8 (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_event_scan::@8/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -177,7 +174,7 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3 return to:@return -@8: scope:[] from @4 +@8: scope:[] from @begin (byte[8]) keyboard_events ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (number) 0 (byte) keyboard_modifiers#0 ← (number) 0 @@ -237,7 +234,7 @@ keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_event_scan::row#5 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::row#8 keyboard_event_scan::@9/(byte) keyboard_event_scan::row#9 ) (byte) keyboard_event_scan::row_scan#1 ← phi( keyboard_event_scan::@12/(byte) keyboard_event_scan::row_scan#4 keyboard_event_scan::@9/(byte) keyboard_event_scan::row_scan#5 ) (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#1 ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#5) - (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) + (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#2) (bool~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (number) 0 (bool~) keyboard_event_scan::$18 ← ! (bool~) keyboard_event_scan::$17 if((bool~) keyboard_event_scan::$18) goto keyboard_event_scan::@12 @@ -269,7 +266,7 @@ keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#9 ) (byte) keyboard_event_scan::col#4 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::col#6 ) (byte) keyboard_event_scan::row_scan#2 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::row_scan#6 ) - (byte~) keyboard_event_scan::$21 ← (byte) keyboard_event_scan::row_scan#2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#4) + (byte~) keyboard_event_scan::$21 ← (byte) keyboard_event_scan::row_scan#2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col#4) (byte) keyboard_event_scan::event_type#0 ← (byte~) keyboard_event_scan::$21 (bool~) keyboard_event_scan::$22 ← (byte) keyboard_event_scan::event_type#0 == (number) 0 if((bool~) keyboard_event_scan::$22) goto keyboard_event_scan::@14 @@ -402,7 +399,7 @@ keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (number) 3 (byte) keyboard_event_pressed::row_bits#0 ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0) (number~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (number) 7 - (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits#0 & *((byte[8]) keyboard_matrix_col_bitmask + (number~) keyboard_event_pressed::$1) + (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask + (number~) keyboard_event_pressed::$1) (byte) keyboard_event_pressed::return#4 ← (byte~) keyboard_event_pressed::$2 to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed @@ -1036,7 +1033,7 @@ render_next::@2: scope:[render_next] from render_next::@1 render_next::@3 (byte) next_piece_idx#12 ← phi( render_next::@1/(byte) next_piece_idx#24 render_next::@3/(byte) next_piece_idx#25 ) (byte~) render_next::$6 ← (byte) next_piece_idx#12 * (const byte) SIZEOF_WORD (byte*) render_next::next_piece_gfx#0 ← ((byte*)) *((word[]) PIECES + (byte~) render_next::$6) - (byte) render_next::next_piece_char#0 ← *((byte[]) PIECES_NEXT_CHARS + (byte) next_piece_idx#12) + (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS + (byte) next_piece_idx#12) (byte) render_next::l#0 ← (byte) 0 to:render_next::@5 render_next::@5: scope:[render_next] from render_next::@11 render_next::@2 @@ -1425,34 +1422,21 @@ sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 (byte) render_screen_show#32 ← phi( @38/(byte) render_screen_show#35 ) (byte) irq_raster_next#17 ← phi( @38/(byte) irq_raster_next#20 ) (byte) irq_sprite_ypos#14 ← phi( @38/(byte) irq_sprite_ypos#18 ) - (byte[4*4*4]) PIECE_T ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[4*4*4]) PIECE_S ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[4*4*4]) PIECE_Z ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[4*4*4]) PIECE_L ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[4*4*4]) PIECE_J ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[4*4*4]) PIECE_O ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[4*4*4]) PIECE_I ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 1, (number) 1, (number) 1, (number) 0, (number) 0, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0, (number) 0, (number) 1, (number) 0, (number) 0 } - (word~) $2 ← ((word)) (byte[4*4*4]) PIECE_T - (word~) $3 ← ((word)) (byte[4*4*4]) PIECE_S - (word~) $4 ← ((word)) (byte[4*4*4]) PIECE_Z - (word~) $5 ← ((word)) (byte[4*4*4]) PIECE_J - (word~) $6 ← ((word)) (byte[4*4*4]) PIECE_O - (word~) $7 ← ((word)) (byte[4*4*4]) PIECE_I - (word~) $8 ← ((word)) (byte[4*4*4]) PIECE_L - (word[]) PIECES ← { (word~) $2, (word~) $3, (word~) $4, (word~) $5, (word~) $6, (word~) $7, (word~) $8 } - (byte[]) PIECES_CHARS ← { (number) $65, (number) $66, (number) $a6, (number) $66, (number) $65, (number) $65, (number) $a6 } - (byte[]) PIECES_NEXT_CHARS ← { (number) $63, (number) $64, (number) $a4, (number) $64, (number) $63, (number) $63, (number) $a4 } - (byte[]) PIECES_START_X ← { (number) 4, (number) 4, (number) 4, (number) 4, (number) 4, (number) 4, (number) 4 } - (byte[]) PIECES_START_Y ← { (number) 1, (number) 1, (number) 1, (number) 1, (number) 1, (number) 0, (number) 1 } + (word~) $2 ← ((word)) (const byte[4*4*4]) PIECE_T + (word~) $3 ← ((word)) (const byte[4*4*4]) PIECE_S + (word~) $4 ← ((word)) (const byte[4*4*4]) PIECE_Z + (word~) $5 ← ((word)) (const byte[4*4*4]) PIECE_J + (word~) $6 ← ((word)) (const byte[4*4*4]) PIECE_O + (word~) $7 ← ((word)) (const byte[4*4*4]) PIECE_I + (word~) $8 ← ((word)) (const byte[4*4*4]) PIECE_L + (word[]) PIECES ← { (word)(word~) $2, (word)(word~) $3, (word)(word~) $4, (word)(word~) $5, (word)(word~) $6, (word)(word~) $7, (word)(word~) $8 } (byte*[PLAYFIELD_LINES]) playfield_lines ← { fill( PLAYFIELD_LINES, 0) } (byte[PLAYFIELD_LINES+1]) playfield_lines_idx ← { fill( PLAYFIELD_LINES+1, 0) } (byte) next_piece_idx#0 ← (number) 0 (byte*) current_piece#0 ← ((byte*)) (number) 0 (byte) current_orientation#0 ← (number) 0 - (byte[]) MOVEDOWN_SLOW_SPEEDS ← { (number) $30, (number) $2b, (number) $26, (number) $21, (number) $1c, (number) $17, (number) $12, (number) $d, (number) 8, (number) 6, (number) 5, (number) 5, (number) 5, (number) 4, (number) 4, (number) 4, (number) 3, (number) 3, (number) 3, (number) 2, (number) 2, (number) 2, (number) 2, (number) 2, (number) 2, (number) 2, (number) 2, (number) 2, (number) 2, (number) 1 } (byte) current_movedown_slow#0 ← (number) $30 (byte) current_movedown_counter#0 ← (number) 0 - (dword[]) SCORE_BASE_BCD ← { (number) 0, (number) $40, (number) $100, (number) $300, (number) $1200 } (dword[5]) score_add_bcd ← { fill( 5, 0) } to:@37 @@ -1480,14 +1464,14 @@ play_init::@1: scope:[play_init] from play_init play_init::@1 play_init::@2: scope:[play_init] from play_init::@1 (byte) level#13 ← phi( play_init::@1/(byte) level#28 ) *((byte[PLAYFIELD_LINES+1]) playfield_lines_idx + (const byte) PLAYFIELD_LINES) ← (const byte) PLAYFIELD_COLS*(const byte) PLAYFIELD_LINES - (byte) current_movedown_slow#1 ← *((byte[]) MOVEDOWN_SLOW_SPEEDS + (byte) level#13) + (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS + (byte) level#13) (byte) play_init::b#0 ← (byte) 0 to:play_init::@3 play_init::@3: scope:[play_init] from play_init::@2 play_init::@3 (byte) current_movedown_slow#29 ← phi( play_init::@2/(byte) current_movedown_slow#1 play_init::@3/(byte) current_movedown_slow#29 ) (byte) play_init::b#2 ← phi( play_init::@2/(byte) play_init::b#0 play_init::@3/(byte) play_init::b#1 ) (byte~) play_init::$3 ← (byte) play_init::b#2 * (const byte) SIZEOF_DWORD - *((dword[5]) score_add_bcd + (byte~) play_init::$3) ← *((dword[]) SCORE_BASE_BCD + (byte~) play_init::$3) + *((dword[5]) score_add_bcd + (byte~) play_init::$3) ← *((const dword[]) SCORE_BASE_BCD + (byte~) play_init::$3) (byte) play_init::b#1 ← (byte) play_init::b#2 + rangenext(0,4) (bool~) play_init::$1 ← (byte) play_init::b#1 != rangelast(0,4) if((bool~) play_init::$1) goto play_init::@3 @@ -2478,12 +2462,12 @@ play_spawn_current: scope:[play_spawn_current] from main::@29 main::@30 play_mo (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17 (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 * (const byte) SIZEOF_WORD (byte*) current_piece#5 ← ((byte*)) *((word[]) PIECES + (byte~) play_spawn_current::$7) - (byte) current_piece_char#5 ← *((byte[]) PIECES_CHARS + (byte) play_spawn_current::current_piece_idx#0) + (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS + (byte) play_spawn_current::current_piece_idx#0) (byte) current_orientation#8 ← (number) 0 (byte*~) play_spawn_current::$0 ← (byte*) current_piece#5 + (byte) current_orientation#8 (byte*) current_piece_gfx#8 ← (byte*~) play_spawn_current::$0 - (byte) current_xpos#9 ← *((byte[]) PIECES_START_X + (byte) play_spawn_current::current_piece_idx#0) - (byte) current_ypos#6 ← *((byte[]) PIECES_START_Y + (byte) play_spawn_current::current_piece_idx#0) + (byte) current_xpos#9 ← *((const byte[]) PIECES_START_X + (byte) play_spawn_current::current_piece_idx#0) + (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y + (byte) play_spawn_current::current_piece_idx#0) (byte) play_collision::xpos#4 ← (byte) current_xpos#9 (byte) play_collision::ypos#4 ← (byte) current_ypos#6 (byte) play_collision::orientation#4 ← (byte) current_orientation#8 @@ -2784,7 +2768,7 @@ play_increase_level::@1: scope:[play_increase_level] from play_increase_level play_increase_level::@4: scope:[play_increase_level] from play_increase_level (byte) level_bcd#37 ← phi( play_increase_level/(byte) level_bcd#48 ) (byte) level#21 ← phi( play_increase_level/(byte) level#7 ) - (byte) current_movedown_slow#10 ← *((byte[]) MOVEDOWN_SLOW_SPEEDS + (byte) level#21) + (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS + (byte) level#21) to:play_increase_level::@2 play_increase_level::@2: scope:[play_increase_level] from play_increase_level::@1 play_increase_level::@4 (byte) current_movedown_slow#72 ← phi( play_increase_level::@1/(byte) current_movedown_slow#9 play_increase_level::@4/(byte) current_movedown_slow#10 ) @@ -2815,7 +2799,7 @@ play_increase_level::@7: scope:[play_increase_level] from play_increase_level:: (byte) level#50 ← phi( play_increase_level::@3/(byte) level#65 play_increase_level::@7/(byte) level#50 ) (byte) play_increase_level::b#2 ← phi( play_increase_level::@3/(byte) play_increase_level::b#0 play_increase_level::@7/(byte) play_increase_level::b#1 ) (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 * (const byte) SIZEOF_DWORD - *((dword[5]) score_add_bcd + (byte~) play_increase_level::$5) ← *((dword[5]) score_add_bcd + (byte~) play_increase_level::$5) + *((dword[]) SCORE_BASE_BCD + (byte~) play_increase_level::$5) + *((dword[5]) score_add_bcd + (byte~) play_increase_level::$5) ← *((dword[5]) score_add_bcd + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD + (byte~) play_increase_level::$5) (byte) play_increase_level::b#1 ← (byte) play_increase_level::b#2 + rangenext(0,4) (bool~) play_increase_level::$4 ← (byte) play_increase_level::b#1 != rangelast(0,4) if((bool~) play_increase_level::$4) goto play_increase_level::@7 @@ -3634,7 +3618,6 @@ SYMBOL TABLE SSA (label) @37 (label) @38 (label) @39 -(label) @4 (label) @8 (label) @begin (label) @end @@ -3683,22 +3666,22 @@ SYMBOL TABLE SSA (const byte) KEY_Z = (number) $c (const byte) LIGHT_BLUE = (number) $e (const byte) LIGHT_GREEN = (number) $d -(byte[]) MOVEDOWN_SLOW_SPEEDS +(const byte[]) MOVEDOWN_SLOW_SPEEDS = { (byte)(number) $30, (byte)(number) $2b, (byte)(number) $26, (byte)(number) $21, (byte)(number) $1c, (byte)(number) $17, (byte)(number) $12, (byte)(number) $d, (byte)(number) 8, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 3, (byte)(number) 3, (byte)(number) 3, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 1 } (const byte) ORANGE = (number) 8 (word[]) PIECES -(byte[]) PIECES_CHARS +(const byte[]) PIECES_CHARS = { (byte)(number) $65, (byte)(number) $66, (byte)(number) $a6, (byte)(number) $66, (byte)(number) $65, (byte)(number) $65, (byte)(number) $a6 } (byte[]) PIECES_COLORS_1 (byte[]) PIECES_COLORS_2 -(byte[]) PIECES_NEXT_CHARS -(byte[]) PIECES_START_X -(byte[]) PIECES_START_Y -(byte[4*4*4]) PIECE_I -(byte[4*4*4]) PIECE_J -(byte[4*4*4]) PIECE_L -(byte[4*4*4]) PIECE_O -(byte[4*4*4]) PIECE_S -(byte[4*4*4]) PIECE_T -(byte[4*4*4]) PIECE_Z +(const byte[]) PIECES_NEXT_CHARS = { (byte)(number) $63, (byte)(number) $64, (byte)(number) $a4, (byte)(number) $64, (byte)(number) $63, (byte)(number) $63, (byte)(number) $a4 } +(const byte[]) PIECES_START_X = { (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4 } +(const byte[]) PIECES_START_Y = { (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1 } +(const byte[4*4*4]) PIECE_I = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0 } +(const byte[4*4*4]) PIECE_J = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[4*4*4]) PIECE_L = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[4*4*4]) PIECE_O = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[4*4*4]) PIECE_S = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[4*4*4]) PIECE_T = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[4*4*4]) PIECE_Z = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } (const byte) PINK = (number) $a (const byte*) PLAYFIELD_CHARSET = (byte*)(number) $2800 (const byte*) PLAYFIELD_COLORS_ORIGINAL = (byte*)(number) $1c00 @@ -3717,7 +3700,7 @@ SYMBOL TABLE SSA (const byte) PURPLE = (number) 4 (const byte*) RASTER = (byte*)(number) $d012 (const byte) RED = (number) 2 -(dword[]) SCORE_BASE_BCD +(const dword[]) SCORE_BASE_BCD = { (dword)(number) 0, (dword)(number) $40, (dword)(number) $100, (dword)(number) $300, (dword)(number) $1200 } (const byte) SID_CONTROL_NOISE = (number) $80 (const byte*) SID_VOICE3_CONTROL = (byte*)(number) $d412 (const word*) SID_VOICE3_FREQ = (word*)(number) $d40e @@ -4907,7 +4890,7 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#77 (byte) keyboard_events_size#8 (byte) keyboard_events_size#9 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -4922,7 +4905,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (byte) keyboard_modifiers (byte) keyboard_modifiers#0 (byte) keyboard_modifiers#1 @@ -6944,22 +6927,6 @@ Adding number conversion cast (unumber) 0 in (byte) main::render#0 ← (number) Adding number conversion cast (unumber) 0 in (bool~) main::$14 ← (byte) game_over#19 == (number) 0 Adding number conversion cast (unumber) 0 in (bool~) main::$17 ← (byte) main::render#2 != (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Added casts to value list in (byte[4*4*4]) PIECE_T ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[4*4*4]) PIECE_S ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[4*4*4]) PIECE_Z ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[4*4*4]) PIECE_L ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[4*4*4]) PIECE_J ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[4*4*4]) PIECE_O ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[4*4*4]) PIECE_I ← (byte[4*4*4]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) PIECES_CHARS ← (byte[]){ (byte)(number) $65, (byte)(number) $66, (byte)(number) $a6, (byte)(number) $66, (byte)(number) $65, (byte)(number) $65, (byte)(number) $a6 } -Added casts to value list in (byte[]) PIECES_NEXT_CHARS ← (byte[]){ (byte)(number) $63, (byte)(number) $64, (byte)(number) $a4, (byte)(number) $64, (byte)(number) $63, (byte)(number) $63, (byte)(number) $a4 } -Added casts to value list in (byte[]) PIECES_START_X ← (byte[]){ (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4 } -Added casts to value list in (byte[]) PIECES_START_Y ← (byte[]){ (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1 } -Added casts to value list in (byte[]) MOVEDOWN_SLOW_SPEEDS ← (byte[]){ (byte)(number) $30, (byte)(number) $2b, (byte)(number) $26, (byte)(number) $21, (byte)(number) $1c, (byte)(number) $17, (byte)(number) $12, (byte)(number) $d, (byte)(number) 8, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 3, (byte)(number) 3, (byte)(number) 3, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 1 } -Added casts to value list in (dword[]) SCORE_BASE_BCD ← (dword[]){ (dword)(number) 0, (dword)(number) $40, (dword)(number) $100, (dword)(number) $300, (dword)(number) $1200 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) keyboard_events_size#0 ← (unumber)(number) 0 Inlining cast (byte) keyboard_modifiers#0 ← (unumber)(number) 0 Inlining cast (byte) keyboard_event_scan::keycode#0 ← (unumber)(number) 0 @@ -7006,13 +6973,13 @@ Inlining cast (byte) irq_cnt#0 ← (unumber)(number) 0 Inlining cast (word~) sprites_irq::toSpritePtr2_$0 ← (word)(byte*) sprites_irq::toSpritePtr2_sprite#1 Inlining cast (byte~) sprites_irq::toSpritePtr2_$2 ← (byte)(unumber~) sprites_irq::toSpritePtr2_$1 Inlining cast (byte) irq_cnt#2 ← (unumber)(number) 0 -Inlining cast (word~) $2 ← (word)(byte[4*4*4]) PIECE_T -Inlining cast (word~) $3 ← (word)(byte[4*4*4]) PIECE_S -Inlining cast (word~) $4 ← (word)(byte[4*4*4]) PIECE_Z -Inlining cast (word~) $5 ← (word)(byte[4*4*4]) PIECE_J -Inlining cast (word~) $6 ← (word)(byte[4*4*4]) PIECE_O -Inlining cast (word~) $7 ← (word)(byte[4*4*4]) PIECE_I -Inlining cast (word~) $8 ← (word)(byte[4*4*4]) PIECE_L +Inlining cast (word~) $2 ← (word)(const byte[4*4*4]) PIECE_T +Inlining cast (word~) $3 ← (word)(const byte[4*4*4]) PIECE_S +Inlining cast (word~) $4 ← (word)(const byte[4*4*4]) PIECE_Z +Inlining cast (word~) $5 ← (word)(const byte[4*4*4]) PIECE_J +Inlining cast (word~) $6 ← (word)(const byte[4*4*4]) PIECE_O +Inlining cast (word~) $7 ← (word)(const byte[4*4*4]) PIECE_I +Inlining cast (word~) $8 ← (word)(const byte[4*4*4]) PIECE_L Inlining cast (byte) next_piece_idx#0 ← (unumber)(number) 0 Inlining cast (byte*) current_piece#0 ← (byte*)(number) 0 Inlining cast (byte) current_orientation#0 ← (unumber)(number) 0 @@ -7073,17 +7040,6 @@ Simplifying constant pointer cast (byte*) 56333 Simplifying constant pointer cast (byte*) 56576 Simplifying constant pointer cast (byte*) 56578 Simplifying constant pointer cast (void()**) 65534 -Simplifying constant pointer cast (word*) 54286 -Simplifying constant pointer cast (byte*) 54290 -Simplifying constant pointer cast (byte*) 54299 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 11264 -Simplifying constant pointer cast (byte*) 6144 -Simplifying constant pointer cast (byte*) 7168 -Simplifying constant pointer cast (byte*) 8192 -Simplifying constant pointer cast (byte*) 10240 -Simplifying constant integer cast $13 -Simplifying constant integer cast 1 Simplifying constant integer cast $fe Simplifying constant integer cast $fd Simplifying constant integer cast $fb @@ -7100,6 +7056,528 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 +Simplifying constant pointer cast (word*) 54286 +Simplifying constant pointer cast (byte*) 54290 +Simplifying constant pointer cast (byte*) 54299 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 11264 +Simplifying constant pointer cast (byte*) 6144 +Simplifying constant pointer cast (byte*) 7168 +Simplifying constant pointer cast (byte*) 8192 +Simplifying constant pointer cast (byte*) 10240 +Simplifying constant integer cast $13 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $65 +Simplifying constant integer cast $66 +Simplifying constant integer cast $a6 +Simplifying constant integer cast $66 +Simplifying constant integer cast $65 +Simplifying constant integer cast $65 +Simplifying constant integer cast $a6 +Simplifying constant integer cast $63 +Simplifying constant integer cast $64 +Simplifying constant integer cast $a4 +Simplifying constant integer cast $64 +Simplifying constant integer cast $63 +Simplifying constant integer cast $63 +Simplifying constant integer cast $a4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast $30 +Simplifying constant integer cast $2b +Simplifying constant integer cast $26 +Simplifying constant integer cast $21 +Simplifying constant integer cast $1c +Simplifying constant integer cast $17 +Simplifying constant integer cast $12 +Simplifying constant integer cast $d +Simplifying constant integer cast 8 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast 3 +Simplifying constant integer cast 3 +Simplifying constant integer cast 3 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast $40 +Simplifying constant integer cast $100 +Simplifying constant integer cast $300 +Simplifying constant integer cast $1200 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -7218,523 +7696,19 @@ Simplifying constant integer cast 3 Simplifying constant integer cast $14 Simplifying constant integer cast $15 Simplifying constant integer cast 3 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $65 -Simplifying constant integer cast $66 -Simplifying constant integer cast $a6 -Simplifying constant integer cast $66 -Simplifying constant integer cast $65 -Simplifying constant integer cast $65 -Simplifying constant integer cast $a6 -Simplifying constant integer cast $63 -Simplifying constant integer cast $64 -Simplifying constant integer cast $a4 -Simplifying constant integer cast $64 -Simplifying constant integer cast $63 -Simplifying constant integer cast $63 -Simplifying constant integer cast $a4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 +Simplifying constant integer cast (word~) $2 +Simplifying constant integer cast (word~) $3 +Simplifying constant integer cast (word~) $4 +Simplifying constant integer cast (word~) $5 +Simplifying constant integer cast (word~) $6 +Simplifying constant integer cast (word~) $7 +Simplifying constant integer cast (word~) $8 Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast 0 Simplifying constant integer cast $30 -Simplifying constant integer cast $2b -Simplifying constant integer cast $26 -Simplifying constant integer cast $21 -Simplifying constant integer cast $1c -Simplifying constant integer cast $17 -Simplifying constant integer cast $12 -Simplifying constant integer cast $d -Simplifying constant integer cast 8 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 -Simplifying constant integer cast 3 -Simplifying constant integer cast 3 -Simplifying constant integer cast 3 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast $30 Simplifying constant integer cast 0 Simplifying constant integer cast 0 -Simplifying constant integer cast $40 -Simplifying constant integer cast $100 -Simplifying constant integer cast $300 -Simplifying constant integer cast $1200 -Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -8017,37 +7991,37 @@ Inferred type updated to byte in (unumber~) play_spawn_current::$6 ← (byte~) p Inferred type updated to byte in (unumber~) play_update_score::$3 ← (byte~) play_update_score::$2 & (byte) $f0 Inferred type updated to byte in (unumber~) play_update_score::$5 ← (byte~) play_update_score::$4 & (byte) $f0 Inferred type updated to byte in (unumber~) play_increase_level::$1 ← (byte) level_bcd#7 & (byte) $f -Inversing boolean not [39] (bool~) keyboard_event_scan::$18 ← (byte~) keyboard_event_scan::$16 == (byte) 0 from [38] (bool~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte) 0 -Inversing boolean not [48] (bool~) keyboard_event_scan::$20 ← (byte) keyboard_events_size#10 == (byte) 8 from [47] (bool~) keyboard_event_scan::$19 ← (byte) keyboard_events_size#10 != (byte) 8 -Inversing boolean not [72] (bool~) keyboard_event_scan::$2 ← (byte~) keyboard_event_scan::$0 == (byte) 0 from [71] (bool~) keyboard_event_scan::$1 ← (byte~) keyboard_event_scan::$0 != (byte) 0 -Inversing boolean not [81] (bool~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$3 == (byte) 0 from [80] (bool~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 != (byte) 0 -Inversing boolean not [93] (bool~) keyboard_event_scan::$8 ← (byte~) keyboard_event_scan::$6 == (byte) 0 from [92] (bool~) keyboard_event_scan::$7 ← (byte~) keyboard_event_scan::$6 != (byte) 0 -Inversing boolean not [105] (bool~) keyboard_event_scan::$11 ← (byte~) keyboard_event_scan::$9 == (byte) 0 from [104] (bool~) keyboard_event_scan::$10 ← (byte~) keyboard_event_scan::$9 != (byte) 0 -Inversing boolean not [320] (bool~) render_bcd::$2 ← (byte) render_bcd::only_low#6 != (byte) 0 from [319] (bool~) render_bcd::$1 ← (byte) render_bcd::only_low#6 == (byte) 0 -Inversing boolean not [415] (bool~) render_moving::$3 ← (byte) render_moving::current_cell#0 == (byte) 0 from [414] (bool~) render_moving::$2 ← (byte) render_moving::current_cell#0 != (byte) 0 -Inversing boolean not [658] (bool~) play_movement::$2 ← (byte) game_over#1 == (byte) 0 from [657] (bool~) play_movement::$1 ← (byte) game_over#1 != (byte) 0 -Inversing boolean not [700] (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (const byte) KEY_SPACE from [699] (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (const byte) KEY_SPACE -Inversing boolean not [709] (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte) 0 from [708] (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte) 0 -Inversing boolean not [715] (bool~) play_move_down::$6 ← (byte) current_movedown_counter#12 < (byte) current_movedown_slow#19 from [714] (bool~) play_move_down::$5 ← (byte) current_movedown_counter#12 >= (byte) current_movedown_slow#19 -Inversing boolean not [719] (bool~) play_move_down::$10 ← (byte) current_movedown_counter#13 < (const byte) current_movedown_fast from [718] (bool~) play_move_down::$9 ← (byte) current_movedown_counter#13 >= (const byte) current_movedown_fast -Inversing boolean not [725] (bool~) play_move_down::$8 ← (byte) play_move_down::movedown#6 == (byte) 0 from [724] (bool~) play_move_down::$7 ← (byte) play_move_down::movedown#6 != (byte) 0 -Inversing boolean not [803] (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (const byte) COLLISION_NONE from [802] (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (const byte) COLLISION_NONE -Inversing boolean not [807] (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (const byte) KEY_DOT from [806] (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (const byte) KEY_DOT -Inversing boolean not [819] (bool~) play_move_leftright::$6 ← (byte~) play_move_leftright::$4 != (const byte) COLLISION_NONE from [818] (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (const byte) COLLISION_NONE -Inversing boolean not [864] (bool~) play_move_rotate::$4 ← (byte~) play_move_rotate::$2 != (const byte) COLLISION_NONE from [863] (bool~) play_move_rotate::$3 ← (byte~) play_move_rotate::$2 == (const byte) COLLISION_NONE -Inversing boolean not [886] (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) == (byte) 0 from [885] (bool~) play_collision::$1 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte) 0 -Inversing boolean not [896] (bool~) play_collision::$4 ← (byte) play_collision::yp#3 < (const byte) PLAYFIELD_LINES from [895] (bool~) play_collision::$3 ← (byte) play_collision::yp#3 >= (const byte) PLAYFIELD_LINES -Inversing boolean not [901] (bool~) play_collision::$7 ← (byte~) play_collision::$5 == (byte) 0 from [900] (bool~) play_collision::$6 ← (byte~) play_collision::$5 != (byte) 0 -Inversing boolean not [909] (bool~) play_collision::$9 ← (byte) play_collision::xp#4 < (const byte) PLAYFIELD_COLS from [908] (bool~) play_collision::$8 ← (byte) play_collision::xp#4 >= (const byte) PLAYFIELD_COLS -Inversing boolean not [914] (bool~) play_collision::$11 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) == (byte) 0 from [913] (bool~) play_collision::$10 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) != (byte) 0 -Inversing boolean not [935] (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) == (byte) 0 from [934] (bool~) play_lock_current::$0 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) != (byte) 0 -Inversing boolean not [969] (bool~) play_spawn_current::$3 ← (byte~) play_spawn_current::$1 != (const byte) COLLISION_PLAYFIELD from [968] (bool~) play_spawn_current::$2 ← (byte~) play_spawn_current::$1 == (const byte) COLLISION_PLAYFIELD -Inversing boolean not [1009] (bool~) play_remove_lines::$1 ← (byte) play_remove_lines::c#0 != (byte) 0 from [1008] (bool~) play_remove_lines::$0 ← (byte) play_remove_lines::c#0 == (byte) 0 -Inversing boolean not [1021] (bool~) play_remove_lines::$4 ← (byte) play_remove_lines::full#2 != (byte) 1 from [1020] (bool~) play_remove_lines::$3 ← (byte) play_remove_lines::full#2 == (byte) 1 -Inversing boolean not [1044] (bool~) play_update_score::$1 ← (byte) play_update_score::removed#1 == (byte) 0 from [1043] (bool~) play_update_score::$0 ← (byte) play_update_score::removed#1 != (byte) 0 -Inversing boolean not [1060] (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 == (byte) play_update_score::lines_after#0 from [1059] (bool~) play_update_score::$6 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 -Inversing boolean not [1087] (bool~) play_increase_level::$3 ← (byte~) play_increase_level::$1 != (byte) $a from [1086] (bool~) play_increase_level::$2 ← (byte~) play_increase_level::$1 == (byte) $a -Inversing boolean not [1197] (bool~) main::$18 ← (byte) main::render#2 == (byte) 0 from [1196] (bool~) main::$17 ← (byte) main::render#2 != (byte) 0 +Inversing boolean not [37] (bool~) keyboard_event_scan::$18 ← (byte~) keyboard_event_scan::$16 == (byte) 0 from [36] (bool~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte) 0 +Inversing boolean not [46] (bool~) keyboard_event_scan::$20 ← (byte) keyboard_events_size#10 == (byte) 8 from [45] (bool~) keyboard_event_scan::$19 ← (byte) keyboard_events_size#10 != (byte) 8 +Inversing boolean not [70] (bool~) keyboard_event_scan::$2 ← (byte~) keyboard_event_scan::$0 == (byte) 0 from [69] (bool~) keyboard_event_scan::$1 ← (byte~) keyboard_event_scan::$0 != (byte) 0 +Inversing boolean not [79] (bool~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$3 == (byte) 0 from [78] (bool~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 != (byte) 0 +Inversing boolean not [91] (bool~) keyboard_event_scan::$8 ← (byte~) keyboard_event_scan::$6 == (byte) 0 from [90] (bool~) keyboard_event_scan::$7 ← (byte~) keyboard_event_scan::$6 != (byte) 0 +Inversing boolean not [103] (bool~) keyboard_event_scan::$11 ← (byte~) keyboard_event_scan::$9 == (byte) 0 from [102] (bool~) keyboard_event_scan::$10 ← (byte~) keyboard_event_scan::$9 != (byte) 0 +Inversing boolean not [318] (bool~) render_bcd::$2 ← (byte) render_bcd::only_low#6 != (byte) 0 from [317] (bool~) render_bcd::$1 ← (byte) render_bcd::only_low#6 == (byte) 0 +Inversing boolean not [413] (bool~) render_moving::$3 ← (byte) render_moving::current_cell#0 == (byte) 0 from [412] (bool~) render_moving::$2 ← (byte) render_moving::current_cell#0 != (byte) 0 +Inversing boolean not [643] (bool~) play_movement::$2 ← (byte) game_over#1 == (byte) 0 from [642] (bool~) play_movement::$1 ← (byte) game_over#1 != (byte) 0 +Inversing boolean not [685] (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (const byte) KEY_SPACE from [684] (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (const byte) KEY_SPACE +Inversing boolean not [694] (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte) 0 from [693] (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte) 0 +Inversing boolean not [700] (bool~) play_move_down::$6 ← (byte) current_movedown_counter#12 < (byte) current_movedown_slow#19 from [699] (bool~) play_move_down::$5 ← (byte) current_movedown_counter#12 >= (byte) current_movedown_slow#19 +Inversing boolean not [704] (bool~) play_move_down::$10 ← (byte) current_movedown_counter#13 < (const byte) current_movedown_fast from [703] (bool~) play_move_down::$9 ← (byte) current_movedown_counter#13 >= (const byte) current_movedown_fast +Inversing boolean not [710] (bool~) play_move_down::$8 ← (byte) play_move_down::movedown#6 == (byte) 0 from [709] (bool~) play_move_down::$7 ← (byte) play_move_down::movedown#6 != (byte) 0 +Inversing boolean not [788] (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (const byte) COLLISION_NONE from [787] (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (const byte) COLLISION_NONE +Inversing boolean not [792] (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (const byte) KEY_DOT from [791] (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (const byte) KEY_DOT +Inversing boolean not [804] (bool~) play_move_leftright::$6 ← (byte~) play_move_leftright::$4 != (const byte) COLLISION_NONE from [803] (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (const byte) COLLISION_NONE +Inversing boolean not [849] (bool~) play_move_rotate::$4 ← (byte~) play_move_rotate::$2 != (const byte) COLLISION_NONE from [848] (bool~) play_move_rotate::$3 ← (byte~) play_move_rotate::$2 == (const byte) COLLISION_NONE +Inversing boolean not [871] (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) == (byte) 0 from [870] (bool~) play_collision::$1 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte) 0 +Inversing boolean not [881] (bool~) play_collision::$4 ← (byte) play_collision::yp#3 < (const byte) PLAYFIELD_LINES from [880] (bool~) play_collision::$3 ← (byte) play_collision::yp#3 >= (const byte) PLAYFIELD_LINES +Inversing boolean not [886] (bool~) play_collision::$7 ← (byte~) play_collision::$5 == (byte) 0 from [885] (bool~) play_collision::$6 ← (byte~) play_collision::$5 != (byte) 0 +Inversing boolean not [894] (bool~) play_collision::$9 ← (byte) play_collision::xp#4 < (const byte) PLAYFIELD_COLS from [893] (bool~) play_collision::$8 ← (byte) play_collision::xp#4 >= (const byte) PLAYFIELD_COLS +Inversing boolean not [899] (bool~) play_collision::$11 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) == (byte) 0 from [898] (bool~) play_collision::$10 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::xp#5) != (byte) 0 +Inversing boolean not [920] (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) == (byte) 0 from [919] (bool~) play_lock_current::$0 ← *((byte*) current_piece_gfx#22 + (byte) play_lock_current::i#2) != (byte) 0 +Inversing boolean not [954] (bool~) play_spawn_current::$3 ← (byte~) play_spawn_current::$1 != (const byte) COLLISION_PLAYFIELD from [953] (bool~) play_spawn_current::$2 ← (byte~) play_spawn_current::$1 == (const byte) COLLISION_PLAYFIELD +Inversing boolean not [994] (bool~) play_remove_lines::$1 ← (byte) play_remove_lines::c#0 != (byte) 0 from [993] (bool~) play_remove_lines::$0 ← (byte) play_remove_lines::c#0 == (byte) 0 +Inversing boolean not [1006] (bool~) play_remove_lines::$4 ← (byte) play_remove_lines::full#2 != (byte) 1 from [1005] (bool~) play_remove_lines::$3 ← (byte) play_remove_lines::full#2 == (byte) 1 +Inversing boolean not [1029] (bool~) play_update_score::$1 ← (byte) play_update_score::removed#1 == (byte) 0 from [1028] (bool~) play_update_score::$0 ← (byte) play_update_score::removed#1 != (byte) 0 +Inversing boolean not [1045] (bool~) play_update_score::$7 ← (byte) play_update_score::lines_before#0 == (byte) play_update_score::lines_after#0 from [1044] (bool~) play_update_score::$6 ← (byte) play_update_score::lines_before#0 != (byte) play_update_score::lines_after#0 +Inversing boolean not [1072] (bool~) play_increase_level::$3 ← (byte~) play_increase_level::$1 != (byte) $a from [1071] (bool~) play_increase_level::$2 ← (byte~) play_increase_level::$1 == (byte) $a +Inversing boolean not [1182] (bool~) main::$18 ← (byte) main::render#2 == (byte) 0 from [1181] (bool~) main::$17 ← (byte) main::render#2 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias candidate removed (volatile)(byte) render_screen_showing#1 = (byte) render_screen_show#11 (byte) render_screen_showing#6 (byte) render_screen_showing#2 Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte~) $1 (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#14 @@ -9017,121 +8991,111 @@ Identical Phi Values (byte) current_xpos#16 (byte) current_xpos#59 Identical Phi Values (byte*) current_piece_gfx#29 (byte*) current_piece_gfx#64 Identical Phi Values (byte) current_piece_char#37 (byte) current_piece_char#68 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [193] (byte~) render_init::$5 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER +Identified duplicate assignment right side [191] (byte~) render_init::$5 ← (byte) render_init::i#2 * (const byte) SIZEOF_POINTER Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) keyboard_event_scan::$13 [25] if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 -Simple Condition (bool~) keyboard_event_scan::$25 [34] if((byte) keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 -Simple Condition (bool~) keyboard_event_scan::$18 [40] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@12 -Simple Condition (bool~) keyboard_event_scan::$24 [45] if((byte) keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 -Simple Condition (bool~) keyboard_event_scan::$20 [49] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@12 -Simple Condition (bool~) keyboard_event_scan::$22 [54] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@14 -Simple Condition (bool~) keyboard_event_scan::$2 [73] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 -Simple Condition (bool~) keyboard_event_scan::$5 [82] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 -Simple Condition (bool~) keyboard_event_scan::$8 [94] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 -Simple Condition (bool~) keyboard_event_scan::$11 [106] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return -Simple Condition (bool~) keyboard_event_get::$0 [128] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@1 -Simple Condition (bool~) render_init::$3 [199] if((byte) render_init::i#1!=rangelast(0,PLAYFIELD_LINES-1)) goto render_init::@1 -Simple Condition (bool~) render_show::$0 [209] if((byte) render_screen_show#16==(byte) 0) goto render_show::@1 -Simple Condition (bool~) render_score::$0 [266] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -Simple Condition (bool~) render_bcd::$2 [321] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 -Simple Condition (bool~) render_screen_original::$0 [347] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 -Simple Condition (bool~) render_screen_original::$1 [357] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@4 -Simple Condition (bool~) render_screen_original::$2 [365] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@6 -Simple Condition (bool~) render_screen_original::$3 [369] if((byte) render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 -Simple Condition (bool~) render_playfield::$1 [385] if((byte) render_playfield::c#1!=rangelast(0,PLAYFIELD_COLS-1)) goto render_playfield::@2 -Simple Condition (bool~) render_playfield::$2 [389] if((byte) render_playfield::l#1!=rangelast(2,PLAYFIELD_LINES-1)) goto render_playfield::@1 -Simple Condition (bool~) render_moving::$0 [397] if((byte) render_moving::ypos#2>(byte) 1) goto render_moving::@2 -Simple Condition (bool~) render_moving::$5 [410] if((byte) render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 -Simple Condition (bool~) render_moving::$3 [416] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 -Simple Condition (bool~) render_moving::$4 [421] if((byte) render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 -Simple Condition (bool~) render_next::$0 [428] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 -Simple Condition (bool~) render_next::$3 [446] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@7 -Simple Condition (bool~) render_next::$4 [455] if((byte) render_next::c#1!=rangelast(0,3)) goto render_next::@6 -Simple Condition (bool~) render_next::$5 [460] if((byte) render_next::l#1!=rangelast(0,3)) goto render_next::@5 -Simple Condition (bool~) sprites_init::$2 [479] if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 -Simple Condition (bool~) sprites_irq::$4 [521] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@11 -Simple Condition (bool~) sprites_irq::$1 [525] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -Simple Condition (bool~) sprites_irq::$2 [543] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -Simple Condition (bool~) sprites_irq::$3 [560] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -Simple Condition (bool~) play_init::$0 [621] if((byte) play_init::j#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_init::@1 -Simple Condition (bool~) play_init::$1 [631] if((byte) play_init::b#1!=rangelast(0,4)) goto play_init::@3 -Simple Condition (bool~) play_movement::$2 [659] if((byte) game_over#15==(byte) 0) goto play_movement::@1 -Simple Condition (bool~) play_move_down::$1 [701] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE) goto play_move_down::@1 -Simple Condition (bool~) play_move_down::$4 [710] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 -Simple Condition (bool~) play_move_down::$6 [716] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 -Simple Condition (bool~) play_move_down::$10 [720] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast) goto play_move_down::@2 -Simple Condition (bool~) play_move_down::$8 [726] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@4 -Simple Condition (bool~) play_move_down::$13 [741] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE) goto play_move_down::@14 -Simple Condition (bool~) play_move_leftright::$0 [792] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA) goto play_move_leftright::@1 -Simple Condition (bool~) play_move_leftright::$10 [804] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE) goto play_move_leftright::@3 -Simple Condition (bool~) play_move_leftright::$2 [808] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT) goto play_move_leftright::@3 -Simple Condition (bool~) play_move_leftright::$6 [820] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE) goto play_move_leftright::@3 -Simple Condition (bool~) play_move_rotate::$0 [836] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z) goto play_move_rotate::@1 -Simple Condition (bool~) play_move_rotate::$1 [843] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X) goto play_move_rotate::@2 -Simple Condition (bool~) play_move_rotate::$4 [865] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE) goto play_move_rotate::@5 -Simple Condition (bool~) play_collision::$2 [888] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 -Simple Condition (bool~) play_collision::$12 [893] if((byte) play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 -Simple Condition (bool~) play_collision::$4 [897] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES) goto play_collision::@4 -Simple Condition (bool~) play_collision::$7 [902] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 -Simple Condition (bool~) play_collision::$9 [910] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS) goto play_collision::@6 -Simple Condition (bool~) play_collision::$11 [915] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 -Simple Condition (bool~) play_collision::$13 [922] if((byte) play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 -Simple Condition (bool~) play_lock_current::$1 [937] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 -Simple Condition (bool~) play_lock_current::$2 [942] if((byte) play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 -Simple Condition (bool~) play_lock_current::$3 [949] if((byte) play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 -Simple Condition (bool~) play_spawn_current::$3 [970] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD) goto play_spawn_current::@1 -Simple Condition (bool~) play_spawn_current::$4 [977] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 -Simple Condition (bool~) play_remove_lines::$1 [1010] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@3 -Simple Condition (bool~) play_remove_lines::$2 [1016] if((byte) play_remove_lines::x#1!=rangelast(0,PLAYFIELD_COLS-1)) goto play_remove_lines::@2 -Simple Condition (bool~) play_remove_lines::$4 [1022] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@7 -Simple Condition (bool~) play_remove_lines::$6 [1026] if((byte) play_remove_lines::y#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_remove_lines::@1 -Simple Condition (bool~) play_remove_lines::$7 [1033] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@10 -Simple Condition (bool~) play_update_score::$1 [1045] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return -Simple Condition (bool~) play_update_score::$7 [1061] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return -Simple Condition (bool~) play_increase_level::$0 [1078] if((byte) level#21>(byte) $1d) goto play_increase_level::@1 -Simple Condition (bool~) play_increase_level::$3 [1088] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@3 -Simple Condition (bool~) play_increase_level::$4 [1099] if((byte) play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 -Simple Condition (bool~) main::$10 [1152] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 -Simple Condition (bool~) main::$14 [1169] if((byte) game_over#10==(byte) 0) goto main::@11 -Simple Condition (bool~) main::$18 [1198] if((byte) main::render#2==(byte) 0) goto main::@1 +Simple Condition (bool~) keyboard_event_scan::$13 [23] if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 +Simple Condition (bool~) keyboard_event_scan::$25 [32] if((byte) keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 +Simple Condition (bool~) keyboard_event_scan::$18 [38] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@12 +Simple Condition (bool~) keyboard_event_scan::$24 [43] if((byte) keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 +Simple Condition (bool~) keyboard_event_scan::$20 [47] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@12 +Simple Condition (bool~) keyboard_event_scan::$22 [52] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@14 +Simple Condition (bool~) keyboard_event_scan::$2 [71] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1 +Simple Condition (bool~) keyboard_event_scan::$5 [80] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2 +Simple Condition (bool~) keyboard_event_scan::$8 [92] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3 +Simple Condition (bool~) keyboard_event_scan::$11 [104] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return +Simple Condition (bool~) keyboard_event_get::$0 [126] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@1 +Simple Condition (bool~) render_init::$3 [197] if((byte) render_init::i#1!=rangelast(0,PLAYFIELD_LINES-1)) goto render_init::@1 +Simple Condition (bool~) render_show::$0 [207] if((byte) render_screen_show#16==(byte) 0) goto render_show::@1 +Simple Condition (bool~) render_score::$0 [264] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 +Simple Condition (bool~) render_bcd::$2 [319] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1 +Simple Condition (bool~) render_screen_original::$0 [345] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2 +Simple Condition (bool~) render_screen_original::$1 [355] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@4 +Simple Condition (bool~) render_screen_original::$2 [363] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@6 +Simple Condition (bool~) render_screen_original::$3 [367] if((byte) render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 +Simple Condition (bool~) render_playfield::$1 [383] if((byte) render_playfield::c#1!=rangelast(0,PLAYFIELD_COLS-1)) goto render_playfield::@2 +Simple Condition (bool~) render_playfield::$2 [387] if((byte) render_playfield::l#1!=rangelast(2,PLAYFIELD_LINES-1)) goto render_playfield::@1 +Simple Condition (bool~) render_moving::$0 [395] if((byte) render_moving::ypos#2>(byte) 1) goto render_moving::@2 +Simple Condition (bool~) render_moving::$5 [408] if((byte) render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 +Simple Condition (bool~) render_moving::$3 [414] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5 +Simple Condition (bool~) render_moving::$4 [419] if((byte) render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 +Simple Condition (bool~) render_next::$0 [426] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1 +Simple Condition (bool~) render_next::$3 [444] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@7 +Simple Condition (bool~) render_next::$4 [453] if((byte) render_next::c#1!=rangelast(0,3)) goto render_next::@6 +Simple Condition (bool~) render_next::$5 [458] if((byte) render_next::l#1!=rangelast(0,3)) goto render_next::@5 +Simple Condition (bool~) sprites_init::$2 [477] if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 +Simple Condition (bool~) sprites_irq::$4 [519] if(*((const byte*) RASTER)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@11 +Simple Condition (bool~) sprites_irq::$1 [523] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 +Simple Condition (bool~) sprites_irq::$2 [541] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 +Simple Condition (bool~) sprites_irq::$3 [558] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 +Simple Condition (bool~) play_init::$0 [606] if((byte) play_init::j#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_init::@1 +Simple Condition (bool~) play_init::$1 [616] if((byte) play_init::b#1!=rangelast(0,4)) goto play_init::@3 +Simple Condition (bool~) play_movement::$2 [644] if((byte) game_over#15==(byte) 0) goto play_movement::@1 +Simple Condition (bool~) play_move_down::$1 [686] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE) goto play_move_down::@1 +Simple Condition (bool~) play_move_down::$4 [695] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2 +Simple Condition (bool~) play_move_down::$6 [701] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3 +Simple Condition (bool~) play_move_down::$10 [705] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast) goto play_move_down::@2 +Simple Condition (bool~) play_move_down::$8 [711] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@4 +Simple Condition (bool~) play_move_down::$13 [726] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE) goto play_move_down::@14 +Simple Condition (bool~) play_move_leftright::$0 [777] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA) goto play_move_leftright::@1 +Simple Condition (bool~) play_move_leftright::$10 [789] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE) goto play_move_leftright::@3 +Simple Condition (bool~) play_move_leftright::$2 [793] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT) goto play_move_leftright::@3 +Simple Condition (bool~) play_move_leftright::$6 [805] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE) goto play_move_leftright::@3 +Simple Condition (bool~) play_move_rotate::$0 [821] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z) goto play_move_rotate::@1 +Simple Condition (bool~) play_move_rotate::$1 [828] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X) goto play_move_rotate::@2 +Simple Condition (bool~) play_move_rotate::$4 [850] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE) goto play_move_rotate::@5 +Simple Condition (bool~) play_collision::$2 [873] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3 +Simple Condition (bool~) play_collision::$12 [878] if((byte) play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 +Simple Condition (bool~) play_collision::$4 [882] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES) goto play_collision::@4 +Simple Condition (bool~) play_collision::$7 [887] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5 +Simple Condition (bool~) play_collision::$9 [895] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS) goto play_collision::@6 +Simple Condition (bool~) play_collision::$11 [900] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3 +Simple Condition (bool~) play_collision::$13 [907] if((byte) play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 +Simple Condition (bool~) play_lock_current::$1 [922] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3 +Simple Condition (bool~) play_lock_current::$2 [927] if((byte) play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 +Simple Condition (bool~) play_lock_current::$3 [934] if((byte) play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 +Simple Condition (bool~) play_spawn_current::$3 [955] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD) goto play_spawn_current::@1 +Simple Condition (bool~) play_spawn_current::$4 [962] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1 +Simple Condition (bool~) play_remove_lines::$1 [995] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@3 +Simple Condition (bool~) play_remove_lines::$2 [1001] if((byte) play_remove_lines::x#1!=rangelast(0,PLAYFIELD_COLS-1)) goto play_remove_lines::@2 +Simple Condition (bool~) play_remove_lines::$4 [1007] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@7 +Simple Condition (bool~) play_remove_lines::$6 [1011] if((byte) play_remove_lines::y#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_remove_lines::@1 +Simple Condition (bool~) play_remove_lines::$7 [1018] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@10 +Simple Condition (bool~) play_update_score::$1 [1030] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return +Simple Condition (bool~) play_update_score::$7 [1046] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return +Simple Condition (bool~) play_increase_level::$0 [1063] if((byte) level#21>(byte) $1d) goto play_increase_level::@1 +Simple Condition (bool~) play_increase_level::$3 [1073] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@3 +Simple Condition (bool~) play_increase_level::$4 [1084] if((byte) play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 +Simple Condition (bool~) main::$10 [1137] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 +Simple Condition (bool~) main::$14 [1154] if((byte) game_over#10==(byte) 0) goto main::@11 +Simple Condition (bool~) main::$18 [1183] if((byte) main::render#2==(byte) 0) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [10] (byte[8]) keyboard_events ← { fill( 8, 0) } -Constant right-side identified [13] (byte[8]) keyboard_scan_values ← { fill( 8, 0) } -Constant right-side identified [142] (byte[PLAYFIELD_LINES*PLAYFIELD_COLS]) playfield ← { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) } -Constant right-side identified [160] (byte*[PLAYFIELD_LINES]) screen_lines_1 ← { fill( PLAYFIELD_LINES, 0) } -Constant right-side identified [161] (byte*[PLAYFIELD_LINES]) screen_lines_2 ← { fill( PLAYFIELD_LINES, 0) } -Constant right-side identified [272] (dword*~) render_score::$1 ← & (dword) score_bcd#40 -Constant right-side identified [281] (word) render_bcd::offset#1 ← (const word) render_score::score_offset + (byte) 2 -Constant right-side identified [288] (word) render_bcd::offset#2 ← (const word) render_score::score_offset + (byte) 4 -Constant right-side identified [302] (word) render_bcd::offset#4 ← (const word) render_score::lines_offset + (byte) 1 -Constant right-side identified [430] (byte*) render_next::screen_next_area#1 ← (const byte*) PLAYFIELD_SCREEN_1 + (const word) render_next::next_area_offset -Constant right-side identified [433] (byte*) render_next::screen_next_area#2 ← (const byte*) PLAYFIELD_SCREEN_2 + (const word) render_next::next_area_offset -Constant right-side identified [468] (byte) sprites_init::xpos#0 ← (unumber)(number) $18+(number) $f*(number) 8 -Constant right-side identified [506] (void()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -Constant right-side identified [599] (byte*[PLAYFIELD_LINES]) playfield_lines ← { fill( PLAYFIELD_LINES, 0) } -Constant right-side identified [600] (byte[PLAYFIELD_LINES+1]) playfield_lines_idx ← { fill( PLAYFIELD_LINES+1, 0) } -Constant right-side identified [608] (dword[5]) score_add_bcd ← { fill( 5, 0) } +Constant right-side identified [8] (byte[8]) keyboard_events ← { fill( 8, 0) } +Constant right-side identified [11] (byte[8]) keyboard_scan_values ← { fill( 8, 0) } +Constant right-side identified [140] (byte[PLAYFIELD_LINES*PLAYFIELD_COLS]) playfield ← { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) } +Constant right-side identified [158] (byte*[PLAYFIELD_LINES]) screen_lines_1 ← { fill( PLAYFIELD_LINES, 0) } +Constant right-side identified [159] (byte*[PLAYFIELD_LINES]) screen_lines_2 ← { fill( PLAYFIELD_LINES, 0) } +Constant right-side identified [270] (dword*~) render_score::$1 ← & (dword) score_bcd#40 +Constant right-side identified [279] (word) render_bcd::offset#1 ← (const word) render_score::score_offset + (byte) 2 +Constant right-side identified [286] (word) render_bcd::offset#2 ← (const word) render_score::score_offset + (byte) 4 +Constant right-side identified [300] (word) render_bcd::offset#4 ← (const word) render_score::lines_offset + (byte) 1 +Constant right-side identified [428] (byte*) render_next::screen_next_area#1 ← (const byte*) PLAYFIELD_SCREEN_1 + (const word) render_next::next_area_offset +Constant right-side identified [431] (byte*) render_next::screen_next_area#2 ← (const byte*) PLAYFIELD_SCREEN_2 + (const word) render_next::next_area_offset +Constant right-side identified [466] (byte) sprites_init::xpos#0 ← (unumber)(number) $18+(number) $f*(number) 8 +Constant right-side identified [504] (void()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() +Constant right-side identified [578] (word~) $2 ← (word)(const byte[4*4*4]) PIECE_T +Constant right-side identified [579] (word~) $3 ← (word)(const byte[4*4*4]) PIECE_S +Constant right-side identified [580] (word~) $4 ← (word)(const byte[4*4*4]) PIECE_Z +Constant right-side identified [581] (word~) $5 ← (word)(const byte[4*4*4]) PIECE_J +Constant right-side identified [582] (word~) $6 ← (word)(const byte[4*4*4]) PIECE_O +Constant right-side identified [583] (word~) $7 ← (word)(const byte[4*4*4]) PIECE_I +Constant right-side identified [584] (word~) $8 ← (word)(const byte[4*4*4]) PIECE_L +Constant right-side identified [586] (byte*[PLAYFIELD_LINES]) playfield_lines ← { fill( PLAYFIELD_LINES, 0) } +Constant right-side identified [587] (byte[PLAYFIELD_LINES+1]) playfield_lines_idx ← { fill( PLAYFIELD_LINES+1, 0) } +Constant right-side identified [593] (dword[5]) score_add_bcd ← { fill( 5, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } Identified constant from value list (byte[]) { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED } Identified constant from value list (byte[]) { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[4*4*4]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) $65, (byte) $66, (byte) $a6, (byte) $66, (byte) $65, (byte) $65, (byte) $a6 } -Identified constant from value list (byte[]) { (byte) $63, (byte) $64, (byte) $a4, (byte) $64, (byte) $63, (byte) $63, (byte) $a4 } -Identified constant from value list (byte[]) { (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4 } -Identified constant from value list (byte[]) { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1 } -Identified constant from value list (byte[]) { (byte) $30, (byte) $2b, (byte) $26, (byte) $21, (byte) $1c, (byte) $17, (byte) $12, (byte) $d, (byte) 8, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 1 } -Identified constant from value list (dword[]) { (dword) 0, (dword) $40, (dword) $100, (dword) $300, (dword) $1200 } Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte[8]) keyboard_events = { fill( 8, 0) } Constant (const byte) keyboard_events_size#0 = 0 Constant (const byte) keyboard_modifiers#0 = 0 @@ -9210,26 +9174,20 @@ Constant (const byte) sprites_init::s#0 = 0 Constant (const byte*) toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES Constant (const void()*) sprites_irq_init::$0 = &sprites_irq Constant (const byte*) sprites_irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES -Constant (const byte[4*4*4]) PIECE_T = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } -Constant (const byte[4*4*4]) PIECE_S = { 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0 } -Constant (const byte[4*4*4]) PIECE_Z = { 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } -Constant (const byte[4*4*4]) PIECE_L = { 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0 } -Constant (const byte[4*4*4]) PIECE_J = { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } -Constant (const byte[4*4*4]) PIECE_O = { 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 } -Constant (const byte[4*4*4]) PIECE_I = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } -Constant (const byte[]) PIECES_CHARS = { $65, $66, $a6, $66, $65, $65, $a6 } -Constant (const byte[]) PIECES_NEXT_CHARS = { $63, $64, $a4, $64, $63, $63, $a4 } -Constant (const byte[]) PIECES_START_X = { 4, 4, 4, 4, 4, 4, 4 } -Constant (const byte[]) PIECES_START_Y = { 1, 1, 1, 1, 1, 0, 1 } +Constant (const word) $2 = (word)PIECE_T +Constant (const word) $3 = (word)PIECE_S +Constant (const word) $4 = (word)PIECE_Z +Constant (const word) $5 = (word)PIECE_J +Constant (const word) $6 = (word)PIECE_O +Constant (const word) $7 = (word)PIECE_I +Constant (const word) $8 = (word)PIECE_L Constant (const byte*[PLAYFIELD_LINES]) playfield_lines = { fill( PLAYFIELD_LINES, 0) } Constant (const byte[PLAYFIELD_LINES+1]) playfield_lines_idx = { fill( PLAYFIELD_LINES+1, 0) } Constant (const byte) next_piece_idx#0 = 0 Constant (const byte*) current_piece#0 = (byte*) 0 Constant (const byte) current_orientation#0 = 0 -Constant (const byte[]) MOVEDOWN_SLOW_SPEEDS = { $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 } Constant (const byte) current_movedown_slow#0 = $30 Constant (const byte) current_movedown_counter#0 = 0 -Constant (const dword[]) SCORE_BASE_BCD = { 0, $40, $100, $300, $1200 } Constant (const dword[5]) score_add_bcd = { fill( 5, 0) } Constant (const byte) play_init::idx#0 = 0 Constant (const byte) play_init::j#0 = 0 @@ -9280,17 +9238,10 @@ Constant (const word) render_show::toD0182_$4 = (word)render_show::toD0182_gfx#0 Constant (const byte*) render_score::score_bytes#0 = (byte*)render_score::$1 Constant (const word) toSpritePtr1_$0 = (word)toSpritePtr1_sprite#0 Constant (const word) sprites_irq::toSpritePtr2_$0 = (word)sprites_irq::toSpritePtr2_sprite#0 -Constant (const word) $2 = (word)PIECE_T -Constant (const word) $3 = (word)PIECE_S -Constant (const word) $4 = (word)PIECE_Z -Constant (const word) $5 = (word)PIECE_J -Constant (const word) $6 = (word)PIECE_O -Constant (const word) $7 = (word)PIECE_I -Constant (const word) $8 = (word)PIECE_L Constant (const byte*) play_init::pli#0 = playfield Constant (const byte) play_collision::orientation#4 = current_orientation#68 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [1149] if(true) goto main::@4 +if() condition always true - replacing block destination [1134] if(true) goto main::@4 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 @@ -9306,60 +9257,60 @@ Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 Removing PHI-reference to removed block (main::@12) in block main::@19 -if() condition always true - replacing block destination [1192] if(true) goto main::@13 +if() condition always true - replacing block destination [1177] if(true) goto main::@13 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [32] keyboard_event_scan::row#1 ← ++ keyboard_event_scan::row#2 to ++ -Resolved ranged comparison value [34] if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 to (number) 8 -Resolved ranged next value [43] keyboard_event_scan::col#1 ← ++ keyboard_event_scan::col#2 to ++ -Resolved ranged comparison value [45] if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 to (number) 8 -Resolved ranged next value [197] render_init::i#1 ← ++ render_init::i#2 to ++ -Resolved ranged comparison value [199] if(render_init::i#1!=rangelast(0,PLAYFIELD_LINES-1)) goto render_init::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 -Resolved ranged next value [367] render_screen_original::y#1 ← ++ render_screen_original::y#6 to ++ -Resolved ranged comparison value [369] if(render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 to (number) $19 -Resolved ranged next value [383] render_playfield::c#1 ← ++ render_playfield::c#2 to ++ -Resolved ranged comparison value [385] if(render_playfield::c#1!=rangelast(0,PLAYFIELD_COLS-1)) goto render_playfield::@2 to (const byte) PLAYFIELD_COLS-(byte) 1+(number) 1 -Resolved ranged next value [387] render_playfield::l#1 ← ++ render_playfield::l#2 to ++ -Resolved ranged comparison value [389] if(render_playfield::l#1!=rangelast(2,PLAYFIELD_LINES-1)) goto render_playfield::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 -Resolved ranged next value [408] render_moving::l#1 ← ++ render_moving::l#4 to ++ -Resolved ranged comparison value [410] if(render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 to (number) 4 -Resolved ranged next value [419] render_moving::c#1 ← ++ render_moving::c#2 to ++ -Resolved ranged comparison value [421] if(render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 to (number) 4 -Resolved ranged next value [453] render_next::c#1 ← ++ render_next::c#2 to ++ -Resolved ranged comparison value [455] if(render_next::c#1!=rangelast(0,3)) goto render_next::@6 to (number) 4 -Resolved ranged next value [458] render_next::l#1 ← ++ render_next::l#7 to ++ -Resolved ranged comparison value [460] if(render_next::l#1!=rangelast(0,3)) goto render_next::@5 to (number) 4 -Resolved ranged next value [477] sprites_init::s#1 ← ++ sprites_init::s#2 to ++ -Resolved ranged comparison value [479] if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 to (number) 4 -Resolved ranged next value [619] play_init::j#1 ← ++ play_init::j#2 to ++ -Resolved ranged comparison value [621] if(play_init::j#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_init::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 -Resolved ranged next value [629] play_init::b#1 ← ++ play_init::b#2 to ++ -Resolved ranged comparison value [631] if(play_init::b#1!=rangelast(0,4)) goto play_init::@3 to (number) 5 -Resolved ranged next value [891] play_collision::c#1 ← ++ play_collision::c#2 to ++ -Resolved ranged comparison value [893] if(play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 to (number) 4 -Resolved ranged next value [920] play_collision::l#1 ← ++ play_collision::l#6 to ++ -Resolved ranged comparison value [922] if(play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 to (number) 4 -Resolved ranged next value [940] play_lock_current::c#1 ← ++ play_lock_current::c#2 to ++ -Resolved ranged comparison value [942] if(play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 to (number) 4 -Resolved ranged next value [947] play_lock_current::l#1 ← ++ play_lock_current::l#6 to ++ -Resolved ranged comparison value [949] if(play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 to (number) 4 -Resolved ranged next value [1014] play_remove_lines::x#1 ← ++ play_remove_lines::x#2 to ++ -Resolved ranged comparison value [1016] if(play_remove_lines::x#1!=rangelast(0,PLAYFIELD_COLS-1)) goto play_remove_lines::@2 to (const byte) PLAYFIELD_COLS-(byte) 1+(number) 1 -Resolved ranged next value [1024] play_remove_lines::y#1 ← ++ play_remove_lines::y#8 to ++ -Resolved ranged comparison value [1026] if(play_remove_lines::y#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_remove_lines::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 -Resolved ranged next value [1097] play_increase_level::b#1 ← ++ play_increase_level::b#2 to ++ -Resolved ranged comparison value [1099] if(play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 to (number) 5 -Rewriting conditional comparison [397] if((byte) render_moving::ypos#2>(byte) 1) goto render_moving::@2 -Rewriting conditional comparison [1078] if((byte) level#21>(byte) $1d) goto play_increase_level::@1 -Simplifying expression containing zero KEY_MODIFIER_LSHIFT in [84] (byte) keyboard_modifiers#2 ← (const byte) keyboard_modifiers#1 | (const byte) KEY_MODIFIER_LSHIFT -Simplifying expression containing zero PIECES_COLORS_1 in [180] *((const byte*) BGCOL2) ← *((const byte[]) PIECES_COLORS_1 + (byte) 0) -Simplifying expression containing zero PIECES_COLORS_2 in [181] *((const byte*) BGCOL3) ← *((const byte[]) PIECES_COLORS_2 + (byte) 0) -Simplifying expression containing zero render_score::score_bytes#0 in [291] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0 + (byte) 0) -Simplifying expression containing zero SPRITES_YPOS in [513] *((const byte*) SPRITES_YPOS + (byte) 0) ← (byte) sprites_irq::ypos#0 -Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_1 in [527] *((const byte*) PLAYFIELD_SPRITE_PTRS_1 + (byte) 0) ← (byte) sprites_irq::ptr#0 -Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_2 in [534] *((const byte*) PLAYFIELD_SPRITE_PTRS_2 + (byte) 0) ← (byte) sprites_irq::ptr#0 -Simplifying expression containing zero MOVEDOWN_SLOW_SPEEDS in [624] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS + (const byte) level#0) -Simplifying expression containing zero play_movement::$0 in [656] (byte) play_movement::render#1 ← (const byte) play_movement::render#0 + (byte~) play_movement::$0 -Simplifying expression containing zero current_piece#5 in [957] (byte*) current_piece_gfx#74 ← (byte*) current_piece#5 + (const byte) current_orientation#68 +Resolved ranged next value [30] keyboard_event_scan::row#1 ← ++ keyboard_event_scan::row#2 to ++ +Resolved ranged comparison value [32] if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@8 to (number) 8 +Resolved ranged next value [41] keyboard_event_scan::col#1 ← ++ keyboard_event_scan::col#2 to ++ +Resolved ranged comparison value [43] if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@11 to (number) 8 +Resolved ranged next value [195] render_init::i#1 ← ++ render_init::i#2 to ++ +Resolved ranged comparison value [197] if(render_init::i#1!=rangelast(0,PLAYFIELD_LINES-1)) goto render_init::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 +Resolved ranged next value [365] render_screen_original::y#1 ← ++ render_screen_original::y#6 to ++ +Resolved ranged comparison value [367] if(render_screen_original::y#1!=rangelast(0,$18)) goto render_screen_original::@1 to (number) $19 +Resolved ranged next value [381] render_playfield::c#1 ← ++ render_playfield::c#2 to ++ +Resolved ranged comparison value [383] if(render_playfield::c#1!=rangelast(0,PLAYFIELD_COLS-1)) goto render_playfield::@2 to (const byte) PLAYFIELD_COLS-(byte) 1+(number) 1 +Resolved ranged next value [385] render_playfield::l#1 ← ++ render_playfield::l#2 to ++ +Resolved ranged comparison value [387] if(render_playfield::l#1!=rangelast(2,PLAYFIELD_LINES-1)) goto render_playfield::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 +Resolved ranged next value [406] render_moving::l#1 ← ++ render_moving::l#4 to ++ +Resolved ranged comparison value [408] if(render_moving::l#1!=rangelast(0,3)) goto render_moving::@1 to (number) 4 +Resolved ranged next value [417] render_moving::c#1 ← ++ render_moving::c#2 to ++ +Resolved ranged comparison value [419] if(render_moving::c#1!=rangelast(0,3)) goto render_moving::@4 to (number) 4 +Resolved ranged next value [451] render_next::c#1 ← ++ render_next::c#2 to ++ +Resolved ranged comparison value [453] if(render_next::c#1!=rangelast(0,3)) goto render_next::@6 to (number) 4 +Resolved ranged next value [456] render_next::l#1 ← ++ render_next::l#7 to ++ +Resolved ranged comparison value [458] if(render_next::l#1!=rangelast(0,3)) goto render_next::@5 to (number) 4 +Resolved ranged next value [475] sprites_init::s#1 ← ++ sprites_init::s#2 to ++ +Resolved ranged comparison value [477] if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 to (number) 4 +Resolved ranged next value [604] play_init::j#1 ← ++ play_init::j#2 to ++ +Resolved ranged comparison value [606] if(play_init::j#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_init::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 +Resolved ranged next value [614] play_init::b#1 ← ++ play_init::b#2 to ++ +Resolved ranged comparison value [616] if(play_init::b#1!=rangelast(0,4)) goto play_init::@3 to (number) 5 +Resolved ranged next value [876] play_collision::c#1 ← ++ play_collision::c#2 to ++ +Resolved ranged comparison value [878] if(play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 to (number) 4 +Resolved ranged next value [905] play_collision::l#1 ← ++ play_collision::l#6 to ++ +Resolved ranged comparison value [907] if(play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 to (number) 4 +Resolved ranged next value [925] play_lock_current::c#1 ← ++ play_lock_current::c#2 to ++ +Resolved ranged comparison value [927] if(play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 to (number) 4 +Resolved ranged next value [932] play_lock_current::l#1 ← ++ play_lock_current::l#6 to ++ +Resolved ranged comparison value [934] if(play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 to (number) 4 +Resolved ranged next value [999] play_remove_lines::x#1 ← ++ play_remove_lines::x#2 to ++ +Resolved ranged comparison value [1001] if(play_remove_lines::x#1!=rangelast(0,PLAYFIELD_COLS-1)) goto play_remove_lines::@2 to (const byte) PLAYFIELD_COLS-(byte) 1+(number) 1 +Resolved ranged next value [1009] play_remove_lines::y#1 ← ++ play_remove_lines::y#8 to ++ +Resolved ranged comparison value [1011] if(play_remove_lines::y#1!=rangelast(0,PLAYFIELD_LINES-1)) goto play_remove_lines::@1 to (const byte) PLAYFIELD_LINES-(byte) 1+(number) 1 +Resolved ranged next value [1082] play_increase_level::b#1 ← ++ play_increase_level::b#2 to ++ +Resolved ranged comparison value [1084] if(play_increase_level::b#1!=rangelast(0,4)) goto play_increase_level::@7 to (number) 5 +Rewriting conditional comparison [395] if((byte) render_moving::ypos#2>(byte) 1) goto render_moving::@2 +Rewriting conditional comparison [1063] if((byte) level#21>(byte) $1d) goto play_increase_level::@1 +Simplifying expression containing zero KEY_MODIFIER_LSHIFT in [82] (byte) keyboard_modifiers#2 ← (const byte) keyboard_modifiers#1 | (const byte) KEY_MODIFIER_LSHIFT +Simplifying expression containing zero PIECES_COLORS_1 in [178] *((const byte*) BGCOL2) ← *((const byte[]) PIECES_COLORS_1 + (byte) 0) +Simplifying expression containing zero PIECES_COLORS_2 in [179] *((const byte*) BGCOL3) ← *((const byte[]) PIECES_COLORS_2 + (byte) 0) +Simplifying expression containing zero render_score::score_bytes#0 in [289] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0 + (byte) 0) +Simplifying expression containing zero SPRITES_YPOS in [511] *((const byte*) SPRITES_YPOS + (byte) 0) ← (byte) sprites_irq::ypos#0 +Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_1 in [525] *((const byte*) PLAYFIELD_SPRITE_PTRS_1 + (byte) 0) ← (byte) sprites_irq::ptr#0 +Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_2 in [532] *((const byte*) PLAYFIELD_SPRITE_PTRS_2 + (byte) 0) ← (byte) sprites_irq::ptr#0 +Simplifying expression containing zero MOVEDOWN_SLOW_SPEEDS in [609] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS + (const byte) level#0) +Simplifying expression containing zero play_movement::$0 in [641] (byte) play_movement::render#1 ← (const byte) play_movement::render#0 + (byte~) play_movement::$0 +Simplifying expression containing zero current_piece#5 in [942] (byte*) current_piece_gfx#74 ← (byte*) current_piece#5 + (const byte) current_orientation#68 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte*) render_bcd::screen_pos#1 and assignment [150] (byte*) render_bcd::screen_pos#1 ← ++ (byte*) render_bcd::screen_pos#3 Eliminating unused variable - keeping the phi block (byte) keyboard_modifiers#16 @@ -9898,7 +9849,6 @@ Added new block during phi lifting play_increase_level::@9(between play_increase Added new block during phi lifting play_increase_level::@10(between play_increase_level::@7 and play_increase_level::@7) Added new block during phi lifting main::@44(between main::@19 and main::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @8 Adding NOP phi() at start of toSpritePtr1 Adding NOP phi() at start of toSpritePtr1_@return @@ -9964,340 +9914,339 @@ Adding NOP phi() at start of render_init::@2 Adding NOP phi() at start of sprites_irq::toSpritePtr2 Adding NOP phi() at start of sprites_irq::toSpritePtr2_@return CALL GRAPH -Calls in [] to main:17 -Calls in [main] to sid_rnd_init:21 render_init:23 sprites_init:25 sprites_irq_init:27 play_init:29 play_spawn_current:31 play_spawn_current:34 render_playfield:36 render_moving:41 render_next:43 render_show:57 keyboard_event_scan:59 keyboard_event_get:61 play_movement:68 render_playfield:73 render_moving:79 render_next:82 render_score:84 render_screen_swap:86 -Calls in [render_score] to render_bcd:133 render_bcd:138 render_bcd:143 render_bcd:148 render_bcd:153 render_bcd:158 -Calls in [play_movement] to play_move_down:262 play_move_leftright:273 play_move_rotate:278 -Calls in [play_move_rotate] to play_collision:303 -Calls in [play_move_leftright] to play_collision:360 play_collision:376 -Calls in [play_move_down] to keyboard_event_pressed:386 play_collision:406 play_lock_current:411 play_remove_lines:413 play_update_score:417 play_spawn_current:420 -Calls in [play_spawn_current] to play_collision:491 -Calls in [play_update_score] to play_increase_level:519 -Calls in [keyboard_event_scan] to keyboard_matrix_read:642 keyboard_event_pressed:653 keyboard_event_pressed:659 keyboard_event_pressed:665 keyboard_event_pressed:671 -Calls in [render_init] to render_screen_original:784 render_screen_original:786 +Calls in [] to main:16 +Calls in [main] to sid_rnd_init:20 render_init:22 sprites_init:24 sprites_irq_init:26 play_init:28 play_spawn_current:30 play_spawn_current:33 render_playfield:35 render_moving:40 render_next:42 render_show:56 keyboard_event_scan:58 keyboard_event_get:60 play_movement:67 render_playfield:72 render_moving:78 render_next:81 render_score:83 render_screen_swap:85 +Calls in [render_score] to render_bcd:132 render_bcd:137 render_bcd:142 render_bcd:147 render_bcd:152 render_bcd:157 +Calls in [play_movement] to play_move_down:261 play_move_leftright:272 play_move_rotate:277 +Calls in [play_move_rotate] to play_collision:302 +Calls in [play_move_leftright] to play_collision:359 play_collision:375 +Calls in [play_move_down] to keyboard_event_pressed:385 play_collision:405 play_lock_current:410 play_remove_lines:412 play_update_score:416 play_spawn_current:419 +Calls in [play_spawn_current] to play_collision:490 +Calls in [play_update_score] to play_increase_level:518 +Calls in [keyboard_event_scan] to keyboard_matrix_read:641 keyboard_event_pressed:652 keyboard_event_pressed:658 keyboard_event_pressed:664 keyboard_event_pressed:670 +Calls in [render_init] to render_screen_original:783 render_screen_original:785 Created 176 initial phi equivalence classes -Coalesced [32] next_piece_idx#82 ← next_piece_idx#18 -Coalesced [33] game_over#89 ← game_over#52 -Not coalescing [37] current_ypos#97 ← current_ypos#6 -Not coalescing [38] current_xpos#118 ← current_xpos#100 -Not coalescing [40] current_piece_char#99 ← current_piece_char#5 -Not coalescing [42] next_piece_idx#76 ← next_piece_idx#18 -Coalesced [44] current_movedown_slow#96 ← current_movedown_slow#1 -Coalesced [46] current_piece_char#106 ← current_piece_char#5 -Coalesced [48] current_xpos#130 ← current_xpos#100 -Coalesced [49] current_ypos#104 ← current_ypos#6 -Coalesced [50] game_over#93 ← game_over#52 -Coalesced [51] next_piece_idx#85 ← next_piece_idx#18 -Coalesced [52] render_screen_showing#48 ← render_screen_showing#0 -Coalesced [53] score_bcd#91 ← score_bcd#0 -Not coalescing [72] render_screen_render#63 ← render_screen_render#18 -Not coalescing [74] current_ypos#98 ← current_ypos#19 -Not coalescing [75] render_screen_render#64 ← render_screen_render#18 -Not coalescing [76] current_xpos#119 ← current_xpos#19 -Not coalescing [77] current_piece_gfx#112 ← current_piece_gfx#18 -Not coalescing [78] current_piece_char#100 ← current_piece_char#16 -Not coalescing [80] render_screen_render#65 ← render_screen_render#18 -Not coalescing [81] next_piece_idx#77 ← next_piece_idx#16 -Coalesced [87] render_screen_show#60 ← render_screen_show#13 -Coalesced [88] render_screen_render#67 ← render_screen_render#11 -Coalesced [89] current_movedown_slow#97 ← current_movedown_slow#21 -Coalesced [90] current_piece#102 ← current_piece#15 -Coalesced [91] current_piece_char#107 ← current_piece_char#16 -Coalesced [92] current_orientation#104 ← current_orientation#17 -Coalesced [93] current_piece_gfx#124 ← current_piece_gfx#18 -Coalesced [94] current_xpos#131 ← current_xpos#19 -Coalesced [95] current_ypos#105 ← current_ypos#19 -Coalesced [96] game_over#94 ← game_over#15 -Coalesced [97] next_piece_idx#86 ← next_piece_idx#16 -Coalesced [98] render_screen_showing#49 ← render_screen_showing#1 -Coalesced [99] keyboard_events_size#91 ← keyboard_events_size#16 -Coalesced [100] current_movedown_counter#60 ← current_movedown_counter#14 -Coalesced [101] lines_bcd#95 ← lines_bcd#15 -Coalesced [102] score_bcd#92 ← score_bcd#14 -Coalesced [103] level#111 ← level#17 -Coalesced [104] level_bcd#110 ← level_bcd#17 -Coalesced (already) [105] render_screen_show#59 ← render_screen_show#16 -Coalesced (already) [106] render_screen_render#66 ← render_screen_render#18 -Coalesced (already) [107] current_movedown_slow#95 ← current_movedown_slow#21 -Coalesced (already) [108] current_piece#100 ← current_piece#15 -Coalesced (already) [109] current_piece_char#105 ← current_piece_char#16 -Coalesced (already) [110] current_orientation#103 ← current_orientation#17 -Coalesced (already) [111] current_piece_gfx#122 ← current_piece_gfx#18 -Coalesced (already) [112] current_xpos#129 ← current_xpos#19 -Coalesced (already) [113] current_ypos#103 ← current_ypos#19 -Coalesced (already) [114] game_over#92 ← game_over#15 -Coalesced (already) [115] next_piece_idx#84 ← next_piece_idx#16 -Coalesced (already) [116] render_screen_showing#47 ← render_screen_showing#1 -Coalesced (already) [117] keyboard_events_size#90 ← keyboard_events_size#16 -Coalesced (already) [118] current_movedown_counter#59 ← current_movedown_counter#14 -Coalesced (already) [119] lines_bcd#94 ← lines_bcd#15 -Coalesced (already) [120] score_bcd#90 ← score_bcd#14 -Coalesced (already) [121] level#110 ← level#17 -Coalesced (already) [122] level_bcd#109 ← level_bcd#17 -Coalesced [131] render_bcd::screen#7 ← render_bcd::screen#0 -Coalesced [132] render_bcd::bcd#9 ← render_bcd::bcd#0 -Coalesced [136] render_bcd::screen#8 ← render_bcd::screen#1 -Coalesced [137] render_bcd::bcd#10 ← render_bcd::bcd#1 -Coalesced [141] render_bcd::screen#9 ← render_bcd::screen#2 -Coalesced [142] render_bcd::bcd#11 ← render_bcd::bcd#2 -Coalesced [146] render_bcd::screen#10 ← render_bcd::screen#3 -Coalesced [147] render_bcd::bcd#12 ← render_bcd::bcd#3 -Coalesced [151] render_bcd::screen#11 ← render_bcd::screen#4 -Coalesced [152] render_bcd::bcd#13 ← render_bcd::bcd#4 -Coalesced [156] render_bcd::screen#12 ← render_bcd::screen#5 -Coalesced [157] render_bcd::bcd#14 ← render_bcd::bcd#5 -Coalesced [169] render_bcd::screen_pos#6 ← render_bcd::screen_pos#2 -Coalesced [175] render_bcd::screen_pos#5 ← render_bcd::screen_pos#0 -Coalesced [183] render_next::screen_next_area#13 ← render_next::screen_next_area#11 -Coalesced [185] render_next::next_piece_gfx#10 ← render_next::next_piece_gfx#3 -Coalesced [186] render_next::screen_next_area#14 ← render_next::screen_next_area#10 -Coalesced [199] render_next::next_piece_gfx#8 ← render_next::next_piece_gfx#1 -Coalesced [200] render_next::screen_next_area#12 ← render_next::screen_next_area#4 -Coalesced [201] render_next::l#8 ← render_next::l#1 -Coalesced (already) [202] render_next::next_piece_gfx#11 ← render_next::next_piece_gfx#1 -Coalesced [203] render_next::screen_next_area#15 ← render_next::screen_next_area#3 -Coalesced [204] render_next::c#6 ← render_next::c#1 -Coalesced [209] render_moving::ypos#9 ← render_moving::ypos#0 -Coalesced [213] render_moving::i#12 ← render_moving::i#1 -Coalesced [219] render_moving::ypos#10 ← render_moving::ypos#1 -Coalesced [220] render_moving::i#10 ← render_moving::i#8 -Coalesced [221] render_moving::l#9 ← render_moving::l#1 -Coalesced [226] render_moving::i#13 ← render_moving::i#3 -Coalesced [227] render_moving::xpos#5 ← render_moving::xpos#0 -Coalesced [236] render_moving::i#11 ← render_moving::i#2 -Coalesced (already) [237] render_moving::i#14 ← render_moving::i#2 -Coalesced [238] render_moving::xpos#6 ← render_moving::xpos#1 -Coalesced [239] render_moving::c#5 ← render_moving::c#1 -Coalesced [245] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [246] render_playfield::screen_line#3 ← render_playfield::screen_line#0 -Coalesced [256] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [257] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [258] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [259] render_playfield::screen_line#4 ← render_playfield::screen_line#1 -Coalesced [260] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [266] play_movement::return#6 ← play_movement::render#1 -Coalesced [267] current_orientation#95 ← current_orientation#20 -Coalesced [268] current_piece_gfx#113 ← current_piece_gfx#20 -Coalesced [269] current_xpos#120 ← current_xpos#22 -Coalesced [282] play_movement::return#7 ← play_movement::return#0 -Coalesced [283] current_orientation#96 ← current_orientation#25 -Coalesced [284] current_piece_gfx#114 ← current_piece_gfx#21 -Coalesced [285] current_xpos#121 ← current_xpos#26 -Coalesced (already) [288] current_orientation#102 ← current_orientation#20 -Coalesced (already) [289] current_piece_gfx#121 ← current_piece_gfx#20 -Coalesced [294] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [299] current_piece#98 ← current_piece#15 -Coalesced [300] play_collision::orientation#9 ← play_collision::orientation#3 -Coalesced [301] play_collision::yp#13 ← play_collision::ypos#3 -Coalesced [302] play_collision::xpos#17 ← play_collision::xpos#3 -Coalesced [309] current_orientation#100 ← current_orientation#7 -Coalesced [310] current_piece_gfx#119 ← current_piece_gfx#7 -Coalesced (already) [311] current_orientation#101 ← current_orientation#20 -Coalesced (already) [312] current_piece_gfx#120 ← current_piece_gfx#20 -Coalesced [315] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [318] play_collision::yp#15 ← play_collision::yp#0 -Coalesced [322] play_collision::i#11 ← play_collision::i#3 -Not coalescing [323] play_collision::xp#8 ← play_collision::xpos#6 -Coalesced [345] play_collision::yp#16 ← play_collision::yp#1 -Not coalescing [346] play_collision::i#10 ← play_collision::i#1 -Coalesced [347] play_collision::l#10 ← play_collision::l#1 -Not coalescing [348] play_collision::i#12 ← play_collision::i#1 -Coalesced [349] play_collision::xp#9 ← play_collision::xp#1 -Coalesced [350] play_collision::c#8 ← play_collision::c#1 -Not coalescing [356] current_piece#97 ← current_piece#15 -Coalesced [357] play_collision::orientation#8 ← play_collision::orientation#2 -Coalesced [358] play_collision::yp#12 ← play_collision::ypos#2 -Coalesced [359] play_collision::xpos#16 ← play_collision::xpos#2 -Coalesced [365] current_xpos#127 ← current_xpos#6 -Coalesced (already) [368] current_xpos#126 ← current_xpos#22 -Not coalescing [372] current_piece#96 ← current_piece#15 -Coalesced [373] play_collision::orientation#7 ← play_collision::orientation#1 -Coalesced [374] play_collision::yp#11 ← play_collision::ypos#1 -Coalesced [375] play_collision::xpos#15 ← play_collision::xpos#1 -Coalesced [381] current_xpos#128 ← current_xpos#8 -Coalesced [392] play_move_down::movedown#14 ← play_move_down::movedown#2 -Coalesced [396] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [402] current_piece#95 ← current_piece#10 -Coalesced [403] play_collision::orientation#6 ← play_collision::orientation#0 -Coalesced [404] play_collision::yp#10 ← play_collision::ypos#0 -Coalesced [405] play_collision::xpos#14 ← play_collision::xpos#0 -Coalesced (already) [418] next_piece_idx#83 ← next_piece_idx#10 -Coalesced (already) [419] game_over#90 ← game_over#10 -Coalesced [421] current_ypos#100 ← current_ypos#6 -Coalesced [422] lines_bcd#88 ← lines_bcd#17 -Coalesced [423] score_bcd#84 ← score_bcd#16 -Coalesced [424] level#104 ← level#19 -Coalesced [425] current_movedown_slow#88 ← current_movedown_slow#23 -Coalesced [426] level_bcd#101 ← level_bcd#19 -Coalesced [428] current_piece_char#102 ← current_piece_char#5 -Coalesced [430] current_xpos#123 ← current_xpos#100 -Coalesced [431] game_over#86 ← game_over#52 -Coalesced [432] next_piece_idx#79 ← next_piece_idx#18 -Coalesced (already) [434] current_ypos#101 ← current_ypos#38 -Coalesced [435] lines_bcd#89 ← lines_bcd#26 -Coalesced [436] score_bcd#85 ← score_bcd#26 -Coalesced [437] level#105 ← level#33 -Coalesced [438] current_movedown_slow#89 ← current_movedown_slow#37 -Coalesced [439] level_bcd#102 ← level_bcd#31 -Coalesced [440] current_piece#93 ← current_piece#28 -Coalesced (already) [441] current_piece_char#103 ← current_piece_char#29 -Coalesced [442] current_orientation#98 ← current_orientation#37 -Coalesced [443] current_piece_gfx#117 ← current_piece_gfx#35 -Coalesced (already) [444] current_xpos#124 ← current_xpos#43 -Coalesced (already) [445] game_over#87 ← game_over#27 -Coalesced (already) [446] next_piece_idx#80 ← next_piece_idx#30 -Coalesced [450] current_ypos#99 ← current_ypos#3 -Coalesced (already) [451] lines_bcd#87 ← lines_bcd#19 -Coalesced (already) [452] score_bcd#83 ← score_bcd#18 -Coalesced (already) [453] level#103 ← level#10 -Coalesced (already) [454] current_movedown_slow#87 ← current_movedown_slow#14 -Coalesced (already) [455] level_bcd#100 ← level_bcd#11 -Coalesced (already) [456] current_piece#91 ← current_piece#10 -Coalesced (already) [457] current_piece_char#101 ← current_piece_char#10 -Coalesced (already) [458] current_orientation#97 ← current_orientation#13 -Coalesced (already) [459] current_piece_gfx#115 ← current_piece_gfx#13 -Coalesced (already) [460] current_xpos#122 ← current_xpos#14 -Coalesced (already) [461] game_over#85 ← game_over#10 -Coalesced (already) [462] next_piece_idx#78 ← next_piece_idx#10 -Coalesced [463] current_movedown_counter#58 ← current_movedown_counter#12 -Coalesced (already) [464] current_ypos#102 ← current_ypos#11 -Coalesced (already) [465] lines_bcd#90 ← lines_bcd#19 -Coalesced (already) [466] score_bcd#86 ← score_bcd#18 -Coalesced (already) [467] level#106 ← level#10 -Coalesced (already) [468] current_movedown_slow#90 ← current_movedown_slow#14 -Coalesced (already) [469] level_bcd#103 ← level_bcd#11 -Coalesced (already) [470] current_piece#94 ← current_piece#10 -Coalesced (already) [471] current_piece_char#104 ← current_piece_char#10 -Coalesced (already) [472] current_orientation#99 ← current_orientation#13 -Coalesced (already) [473] current_piece_gfx#118 ← current_piece_gfx#13 -Coalesced (already) [474] current_xpos#125 ← current_xpos#14 -Coalesced (already) [475] game_over#88 ← game_over#10 -Coalesced (already) [476] next_piece_idx#81 ← next_piece_idx#10 -Coalesced [477] play_move_down::movedown#15 ← play_move_down::movedown#7 -Coalesced [478] play_move_down::movedown#13 ← play_move_down::movedown#10 -Coalesced (already) [479] play_move_down::movedown#12 ← play_move_down::movedown#10 -Coalesced [489] play_collision::yp#14 ← play_collision::ypos#4 -Coalesced [490] play_collision::xpos#18 ← play_collision::xpos#4 -Coalesced [499] next_piece_idx#18 ← play_spawn_current::piece_idx#2 -Coalesced [504] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 -Coalesced (already) [505] game_over#91 ← game_over#65 -Coalesced [520] lines_bcd#93 ← lines_bcd#29 -Coalesced [521] score_bcd#89 ← score_bcd#29 -Coalesced [522] level#109 ← level#21 -Coalesced [523] current_movedown_slow#93 ← current_movedown_slow#65 -Coalesced [524] level_bcd#106 ← level_bcd#62 -Coalesced (already) [527] lines_bcd#92 ← lines_bcd#29 -Coalesced (already) [528] score_bcd#88 ← score_bcd#29 -Coalesced (already) [529] level#108 ← level#10 -Coalesced (already) [530] current_movedown_slow#92 ← current_movedown_slow#14 -Coalesced (already) [531] level_bcd#105 ← level_bcd#11 -Coalesced (already) [532] lines_bcd#91 ← lines_bcd#19 -Coalesced (already) [533] score_bcd#87 ← score_bcd#18 -Coalesced (already) [534] level#107 ← level#10 -Coalesced (already) [535] current_movedown_slow#91 ← current_movedown_slow#14 -Coalesced (already) [536] level_bcd#104 ← level_bcd#11 -Coalesced [540] current_movedown_slow#94 ← current_movedown_slow#10 -Coalesced [546] level_bcd#108 ← level_bcd#8 -Coalesced [556] play_increase_level::b#3 ← play_increase_level::b#1 -Coalesced [557] level_bcd#107 ← level_bcd#21 -Coalesced [561] play_remove_lines::r#10 ← play_remove_lines::r#3 -Coalesced [562] play_remove_lines::w#14 ← play_remove_lines::w#12 -Coalesced [576] play_remove_lines::w#17 ← play_remove_lines::w#2 -Coalesced [577] play_remove_lines::removed#14 ← play_remove_lines::removed#1 -Coalesced [581] play_remove_lines::w#19 ← play_remove_lines::w#11 -Coalesced [588] play_remove_lines::w#18 ← play_remove_lines::w#3 -Coalesced [589] play_remove_lines::r#9 ← play_remove_lines::r#1 -Coalesced [590] play_remove_lines::w#13 ← play_remove_lines::w#11 -Coalesced [591] play_remove_lines::y#9 ← play_remove_lines::y#1 -Coalesced [592] play_remove_lines::removed#12 ← play_remove_lines::removed#8 -Coalesced [593] play_remove_lines::w#16 ← play_remove_lines::w#1 -Coalesced (already) [594] play_remove_lines::removed#13 ← play_remove_lines::removed#11 -Coalesced (already) [595] play_remove_lines::r#11 ← play_remove_lines::r#1 -Coalesced (already) [596] play_remove_lines::w#15 ← play_remove_lines::w#1 -Coalesced [597] play_remove_lines::x#5 ← play_remove_lines::x#1 -Coalesced [598] play_remove_lines::full#5 ← play_remove_lines::full#2 -Coalesced (already) [599] play_remove_lines::full#6 ← play_remove_lines::full#4 -Coalesced [601] play_lock_current::yp#7 ← play_lock_current::yp#0 -Coalesced [606] play_lock_current::i#8 ← play_lock_current::i#3 -Coalesced [607] play_lock_current::xp#5 ← play_lock_current::xp#0 -Coalesced [619] play_lock_current::yp#8 ← play_lock_current::yp#1 -Not coalescing [620] play_lock_current::i#7 ← play_lock_current::i#1 -Coalesced [621] play_lock_current::l#7 ← play_lock_current::l#1 -Not coalescing [622] play_lock_current::i#9 ← play_lock_current::i#1 -Coalesced [623] play_lock_current::xp#6 ← play_lock_current::xp#1 -Coalesced [624] play_lock_current::c#5 ← play_lock_current::c#1 -Coalesced [634] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [635] keyboard_events_size#89 ← keyboard_events_size#4 -Coalesced [638] keyboard_events_size#88 ← keyboard_events_size#13 -Coalesced [639] keyboard_events_size#78 ← keyboard_events_size#19 -Coalesced [647] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [648] keyboard_events_size#81 ← keyboard_events_size#30 -Coalesced [677] keyboard_event_scan::row#14 ← keyboard_event_scan::row#1 -Coalesced [678] keyboard_event_scan::keycode#15 ← keyboard_event_scan::keycode#13 -Coalesced (already) [679] keyboard_events_size#79 ← keyboard_events_size#13 -Coalesced [680] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [681] keyboard_events_size#83 ← keyboard_events_size#30 -Coalesced [691] keyboard_events_size#87 ← keyboard_events_size#2 -Coalesced [697] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced [698] keyboard_events_size#80 ← keyboard_events_size#29 -Coalesced [699] keyboard_event_scan::col#8 ← keyboard_event_scan::col#1 -Coalesced (already) [700] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#14 -Coalesced (already) [701] keyboard_events_size#82 ← keyboard_events_size#29 -Coalesced [705] keyboard_events_size#85 ← keyboard_events_size#1 -Coalesced (already) [706] keyboard_events_size#86 ← keyboard_events_size#10 -Coalesced (already) [707] keyboard_events_size#84 ← keyboard_events_size#10 -Not coalescing [720] render_screen_showing#1 ← render_screen_show#16 -Coalesced [743] play_init::b#3 ← play_init::b#1 -Coalesced [744] play_init::j#3 ← play_init::j#1 -Coalesced [745] play_init::pli#3 ← play_init::pli#1 -Coalesced [746] play_init::idx#3 ← play_init::idx#1 -Coalesced [771] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [772] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [798] render_init::i#3 ← render_init::i#1 -Coalesced [799] render_init::li_1#3 ← render_init::li_1#1 -Coalesced [800] render_init::li_2#3 ← render_init::li_2#1 -Coalesced [802] render_screen_original::screen#11 ← render_screen_original::screen#9 -Coalesced [804] render_screen_original::screen#13 ← render_screen_original::screen#8 -Coalesced [805] render_screen_original::cols#10 ← render_screen_original::cols#7 -Coalesced [813] render_screen_original::oscr#8 ← render_screen_original::oscr#4 -Coalesced [814] render_screen_original::screen#15 ← render_screen_original::screen#2 -Coalesced [815] render_screen_original::ocols#8 ← render_screen_original::ocols#4 -Coalesced [816] render_screen_original::cols#12 ← render_screen_original::cols#1 -Coalesced [817] render_screen_original::x#8 ← render_screen_original::x#1 -Coalesced [827] render_screen_original::screen#17 ← render_screen_original::screen#3 -Coalesced [828] render_screen_original::cols#14 ← render_screen_original::cols#2 -Coalesced [829] render_screen_original::x#10 ← render_screen_original::x#2 -Coalesced [840] render_screen_original::screen#12 ← render_screen_original::screen#10 -Coalesced [841] render_screen_original::cols#9 ← render_screen_original::cols#3 -Coalesced [842] render_screen_original::oscr#7 ← render_screen_original::oscr#1 -Coalesced [843] render_screen_original::ocols#7 ← render_screen_original::ocols#1 -Coalesced [844] render_screen_original::y#7 ← render_screen_original::y#1 -Coalesced [845] render_screen_original::screen#18 ← render_screen_original::screen#10 -Coalesced [846] render_screen_original::cols#15 ← render_screen_original::cols#3 -Coalesced [847] render_screen_original::x#11 ← render_screen_original::x#3 -Coalesced (already) [848] render_screen_original::oscr#9 ← render_screen_original::oscr#1 -Coalesced [849] render_screen_original::screen#16 ← render_screen_original::screen#3 -Coalesced (already) [850] render_screen_original::ocols#9 ← render_screen_original::ocols#1 -Coalesced [851] render_screen_original::cols#13 ← render_screen_original::cols#2 -Coalesced [852] render_screen_original::x#9 ← render_screen_original::x#2 -Coalesced (already) [853] render_screen_original::screen#14 ← render_screen_original::screen#2 -Coalesced (already) [854] render_screen_original::cols#11 ← render_screen_original::cols#1 -Coalesced [855] render_screen_original::x#7 ← render_screen_original::x#1 -Coalesced [882] irq_raster_next#26 ← irq_raster_next#3 -Coalesced [883] irq_cnt#22 ← irq_cnt#1 -Coalesced [884] irq_sprite_ypos#26 ← irq_sprite_ypos#3 -Coalesced [885] irq_sprite_ptr#20 ← irq_sprite_ptr#3 -Coalesced [894] irq_raster_next#25 ← irq_raster_next#2 -Coalesced [895] irq_cnt#21 ← irq_cnt#2 -Coalesced [896] irq_sprite_ypos#25 ← irq_sprite_ypos#2 -Coalesced [897] irq_sprite_ptr#19 ← irq_sprite_ptr#2 -Coalesced [903] irq_raster_next#24 ← irq_raster_next#1 -Coalesced (already) [904] irq_cnt#20 ← irq_cnt#1 -Coalesced [905] irq_sprite_ypos#24 ← irq_sprite_ypos#1 -Coalesced [906] irq_sprite_ptr#18 ← irq_sprite_ptr#1 +Coalesced [31] next_piece_idx#82 ← next_piece_idx#18 +Coalesced [32] game_over#89 ← game_over#52 +Not coalescing [36] current_ypos#97 ← current_ypos#6 +Not coalescing [37] current_xpos#118 ← current_xpos#100 +Not coalescing [39] current_piece_char#99 ← current_piece_char#5 +Not coalescing [41] next_piece_idx#76 ← next_piece_idx#18 +Coalesced [43] current_movedown_slow#96 ← current_movedown_slow#1 +Coalesced [45] current_piece_char#106 ← current_piece_char#5 +Coalesced [47] current_xpos#130 ← current_xpos#100 +Coalesced [48] current_ypos#104 ← current_ypos#6 +Coalesced [49] game_over#93 ← game_over#52 +Coalesced [50] next_piece_idx#85 ← next_piece_idx#18 +Coalesced [51] render_screen_showing#48 ← render_screen_showing#0 +Coalesced [52] score_bcd#91 ← score_bcd#0 +Not coalescing [71] render_screen_render#63 ← render_screen_render#18 +Not coalescing [73] current_ypos#98 ← current_ypos#19 +Not coalescing [74] render_screen_render#64 ← render_screen_render#18 +Not coalescing [75] current_xpos#119 ← current_xpos#19 +Not coalescing [76] current_piece_gfx#112 ← current_piece_gfx#18 +Not coalescing [77] current_piece_char#100 ← current_piece_char#16 +Not coalescing [79] render_screen_render#65 ← render_screen_render#18 +Not coalescing [80] next_piece_idx#77 ← next_piece_idx#16 +Coalesced [86] render_screen_show#60 ← render_screen_show#13 +Coalesced [87] render_screen_render#67 ← render_screen_render#11 +Coalesced [88] current_movedown_slow#97 ← current_movedown_slow#21 +Coalesced [89] current_piece#102 ← current_piece#15 +Coalesced [90] current_piece_char#107 ← current_piece_char#16 +Coalesced [91] current_orientation#104 ← current_orientation#17 +Coalesced [92] current_piece_gfx#124 ← current_piece_gfx#18 +Coalesced [93] current_xpos#131 ← current_xpos#19 +Coalesced [94] current_ypos#105 ← current_ypos#19 +Coalesced [95] game_over#94 ← game_over#15 +Coalesced [96] next_piece_idx#86 ← next_piece_idx#16 +Coalesced [97] render_screen_showing#49 ← render_screen_showing#1 +Coalesced [98] keyboard_events_size#91 ← keyboard_events_size#16 +Coalesced [99] current_movedown_counter#60 ← current_movedown_counter#14 +Coalesced [100] lines_bcd#95 ← lines_bcd#15 +Coalesced [101] score_bcd#92 ← score_bcd#14 +Coalesced [102] level#111 ← level#17 +Coalesced [103] level_bcd#110 ← level_bcd#17 +Coalesced (already) [104] render_screen_show#59 ← render_screen_show#16 +Coalesced (already) [105] render_screen_render#66 ← render_screen_render#18 +Coalesced (already) [106] current_movedown_slow#95 ← current_movedown_slow#21 +Coalesced (already) [107] current_piece#100 ← current_piece#15 +Coalesced (already) [108] current_piece_char#105 ← current_piece_char#16 +Coalesced (already) [109] current_orientation#103 ← current_orientation#17 +Coalesced (already) [110] current_piece_gfx#122 ← current_piece_gfx#18 +Coalesced (already) [111] current_xpos#129 ← current_xpos#19 +Coalesced (already) [112] current_ypos#103 ← current_ypos#19 +Coalesced (already) [113] game_over#92 ← game_over#15 +Coalesced (already) [114] next_piece_idx#84 ← next_piece_idx#16 +Coalesced (already) [115] render_screen_showing#47 ← render_screen_showing#1 +Coalesced (already) [116] keyboard_events_size#90 ← keyboard_events_size#16 +Coalesced (already) [117] current_movedown_counter#59 ← current_movedown_counter#14 +Coalesced (already) [118] lines_bcd#94 ← lines_bcd#15 +Coalesced (already) [119] score_bcd#90 ← score_bcd#14 +Coalesced (already) [120] level#110 ← level#17 +Coalesced (already) [121] level_bcd#109 ← level_bcd#17 +Coalesced [130] render_bcd::screen#7 ← render_bcd::screen#0 +Coalesced [131] render_bcd::bcd#9 ← render_bcd::bcd#0 +Coalesced [135] render_bcd::screen#8 ← render_bcd::screen#1 +Coalesced [136] render_bcd::bcd#10 ← render_bcd::bcd#1 +Coalesced [140] render_bcd::screen#9 ← render_bcd::screen#2 +Coalesced [141] render_bcd::bcd#11 ← render_bcd::bcd#2 +Coalesced [145] render_bcd::screen#10 ← render_bcd::screen#3 +Coalesced [146] render_bcd::bcd#12 ← render_bcd::bcd#3 +Coalesced [150] render_bcd::screen#11 ← render_bcd::screen#4 +Coalesced [151] render_bcd::bcd#13 ← render_bcd::bcd#4 +Coalesced [155] render_bcd::screen#12 ← render_bcd::screen#5 +Coalesced [156] render_bcd::bcd#14 ← render_bcd::bcd#5 +Coalesced [168] render_bcd::screen_pos#6 ← render_bcd::screen_pos#2 +Coalesced [174] render_bcd::screen_pos#5 ← render_bcd::screen_pos#0 +Coalesced [182] render_next::screen_next_area#13 ← render_next::screen_next_area#11 +Coalesced [184] render_next::next_piece_gfx#10 ← render_next::next_piece_gfx#3 +Coalesced [185] render_next::screen_next_area#14 ← render_next::screen_next_area#10 +Coalesced [198] render_next::next_piece_gfx#8 ← render_next::next_piece_gfx#1 +Coalesced [199] render_next::screen_next_area#12 ← render_next::screen_next_area#4 +Coalesced [200] render_next::l#8 ← render_next::l#1 +Coalesced (already) [201] render_next::next_piece_gfx#11 ← render_next::next_piece_gfx#1 +Coalesced [202] render_next::screen_next_area#15 ← render_next::screen_next_area#3 +Coalesced [203] render_next::c#6 ← render_next::c#1 +Coalesced [208] render_moving::ypos#9 ← render_moving::ypos#0 +Coalesced [212] render_moving::i#12 ← render_moving::i#1 +Coalesced [218] render_moving::ypos#10 ← render_moving::ypos#1 +Coalesced [219] render_moving::i#10 ← render_moving::i#8 +Coalesced [220] render_moving::l#9 ← render_moving::l#1 +Coalesced [225] render_moving::i#13 ← render_moving::i#3 +Coalesced [226] render_moving::xpos#5 ← render_moving::xpos#0 +Coalesced [235] render_moving::i#11 ← render_moving::i#2 +Coalesced (already) [236] render_moving::i#14 ← render_moving::i#2 +Coalesced [237] render_moving::xpos#6 ← render_moving::xpos#1 +Coalesced [238] render_moving::c#5 ← render_moving::c#1 +Coalesced [244] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [245] render_playfield::screen_line#3 ← render_playfield::screen_line#0 +Coalesced [255] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [256] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [257] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [258] render_playfield::screen_line#4 ← render_playfield::screen_line#1 +Coalesced [259] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [265] play_movement::return#6 ← play_movement::render#1 +Coalesced [266] current_orientation#95 ← current_orientation#20 +Coalesced [267] current_piece_gfx#113 ← current_piece_gfx#20 +Coalesced [268] current_xpos#120 ← current_xpos#22 +Coalesced [281] play_movement::return#7 ← play_movement::return#0 +Coalesced [282] current_orientation#96 ← current_orientation#25 +Coalesced [283] current_piece_gfx#114 ← current_piece_gfx#21 +Coalesced [284] current_xpos#121 ← current_xpos#26 +Coalesced (already) [287] current_orientation#102 ← current_orientation#20 +Coalesced (already) [288] current_piece_gfx#121 ← current_piece_gfx#20 +Coalesced [293] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [298] current_piece#98 ← current_piece#15 +Coalesced [299] play_collision::orientation#9 ← play_collision::orientation#3 +Coalesced [300] play_collision::yp#13 ← play_collision::ypos#3 +Coalesced [301] play_collision::xpos#17 ← play_collision::xpos#3 +Coalesced [308] current_orientation#100 ← current_orientation#7 +Coalesced [309] current_piece_gfx#119 ← current_piece_gfx#7 +Coalesced (already) [310] current_orientation#101 ← current_orientation#20 +Coalesced (already) [311] current_piece_gfx#120 ← current_piece_gfx#20 +Coalesced [314] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [317] play_collision::yp#15 ← play_collision::yp#0 +Coalesced [321] play_collision::i#11 ← play_collision::i#3 +Not coalescing [322] play_collision::xp#8 ← play_collision::xpos#6 +Coalesced [344] play_collision::yp#16 ← play_collision::yp#1 +Not coalescing [345] play_collision::i#10 ← play_collision::i#1 +Coalesced [346] play_collision::l#10 ← play_collision::l#1 +Not coalescing [347] play_collision::i#12 ← play_collision::i#1 +Coalesced [348] play_collision::xp#9 ← play_collision::xp#1 +Coalesced [349] play_collision::c#8 ← play_collision::c#1 +Not coalescing [355] current_piece#97 ← current_piece#15 +Coalesced [356] play_collision::orientation#8 ← play_collision::orientation#2 +Coalesced [357] play_collision::yp#12 ← play_collision::ypos#2 +Coalesced [358] play_collision::xpos#16 ← play_collision::xpos#2 +Coalesced [364] current_xpos#127 ← current_xpos#6 +Coalesced (already) [367] current_xpos#126 ← current_xpos#22 +Not coalescing [371] current_piece#96 ← current_piece#15 +Coalesced [372] play_collision::orientation#7 ← play_collision::orientation#1 +Coalesced [373] play_collision::yp#11 ← play_collision::ypos#1 +Coalesced [374] play_collision::xpos#15 ← play_collision::xpos#1 +Coalesced [380] current_xpos#128 ← current_xpos#8 +Coalesced [391] play_move_down::movedown#14 ← play_move_down::movedown#2 +Coalesced [395] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [401] current_piece#95 ← current_piece#10 +Coalesced [402] play_collision::orientation#6 ← play_collision::orientation#0 +Coalesced [403] play_collision::yp#10 ← play_collision::ypos#0 +Coalesced [404] play_collision::xpos#14 ← play_collision::xpos#0 +Coalesced (already) [417] next_piece_idx#83 ← next_piece_idx#10 +Coalesced (already) [418] game_over#90 ← game_over#10 +Coalesced [420] current_ypos#100 ← current_ypos#6 +Coalesced [421] lines_bcd#88 ← lines_bcd#17 +Coalesced [422] score_bcd#84 ← score_bcd#16 +Coalesced [423] level#104 ← level#19 +Coalesced [424] current_movedown_slow#88 ← current_movedown_slow#23 +Coalesced [425] level_bcd#101 ← level_bcd#19 +Coalesced [427] current_piece_char#102 ← current_piece_char#5 +Coalesced [429] current_xpos#123 ← current_xpos#100 +Coalesced [430] game_over#86 ← game_over#52 +Coalesced [431] next_piece_idx#79 ← next_piece_idx#18 +Coalesced (already) [433] current_ypos#101 ← current_ypos#38 +Coalesced [434] lines_bcd#89 ← lines_bcd#26 +Coalesced [435] score_bcd#85 ← score_bcd#26 +Coalesced [436] level#105 ← level#33 +Coalesced [437] current_movedown_slow#89 ← current_movedown_slow#37 +Coalesced [438] level_bcd#102 ← level_bcd#31 +Coalesced [439] current_piece#93 ← current_piece#28 +Coalesced (already) [440] current_piece_char#103 ← current_piece_char#29 +Coalesced [441] current_orientation#98 ← current_orientation#37 +Coalesced [442] current_piece_gfx#117 ← current_piece_gfx#35 +Coalesced (already) [443] current_xpos#124 ← current_xpos#43 +Coalesced (already) [444] game_over#87 ← game_over#27 +Coalesced (already) [445] next_piece_idx#80 ← next_piece_idx#30 +Coalesced [449] current_ypos#99 ← current_ypos#3 +Coalesced (already) [450] lines_bcd#87 ← lines_bcd#19 +Coalesced (already) [451] score_bcd#83 ← score_bcd#18 +Coalesced (already) [452] level#103 ← level#10 +Coalesced (already) [453] current_movedown_slow#87 ← current_movedown_slow#14 +Coalesced (already) [454] level_bcd#100 ← level_bcd#11 +Coalesced (already) [455] current_piece#91 ← current_piece#10 +Coalesced (already) [456] current_piece_char#101 ← current_piece_char#10 +Coalesced (already) [457] current_orientation#97 ← current_orientation#13 +Coalesced (already) [458] current_piece_gfx#115 ← current_piece_gfx#13 +Coalesced (already) [459] current_xpos#122 ← current_xpos#14 +Coalesced (already) [460] game_over#85 ← game_over#10 +Coalesced (already) [461] next_piece_idx#78 ← next_piece_idx#10 +Coalesced [462] current_movedown_counter#58 ← current_movedown_counter#12 +Coalesced (already) [463] current_ypos#102 ← current_ypos#11 +Coalesced (already) [464] lines_bcd#90 ← lines_bcd#19 +Coalesced (already) [465] score_bcd#86 ← score_bcd#18 +Coalesced (already) [466] level#106 ← level#10 +Coalesced (already) [467] current_movedown_slow#90 ← current_movedown_slow#14 +Coalesced (already) [468] level_bcd#103 ← level_bcd#11 +Coalesced (already) [469] current_piece#94 ← current_piece#10 +Coalesced (already) [470] current_piece_char#104 ← current_piece_char#10 +Coalesced (already) [471] current_orientation#99 ← current_orientation#13 +Coalesced (already) [472] current_piece_gfx#118 ← current_piece_gfx#13 +Coalesced (already) [473] current_xpos#125 ← current_xpos#14 +Coalesced (already) [474] game_over#88 ← game_over#10 +Coalesced (already) [475] next_piece_idx#81 ← next_piece_idx#10 +Coalesced [476] play_move_down::movedown#15 ← play_move_down::movedown#7 +Coalesced [477] play_move_down::movedown#13 ← play_move_down::movedown#10 +Coalesced (already) [478] play_move_down::movedown#12 ← play_move_down::movedown#10 +Coalesced [488] play_collision::yp#14 ← play_collision::ypos#4 +Coalesced [489] play_collision::xpos#18 ← play_collision::xpos#4 +Coalesced [498] next_piece_idx#18 ← play_spawn_current::piece_idx#2 +Coalesced [503] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced (already) [504] game_over#91 ← game_over#65 +Coalesced [519] lines_bcd#93 ← lines_bcd#29 +Coalesced [520] score_bcd#89 ← score_bcd#29 +Coalesced [521] level#109 ← level#21 +Coalesced [522] current_movedown_slow#93 ← current_movedown_slow#65 +Coalesced [523] level_bcd#106 ← level_bcd#62 +Coalesced (already) [526] lines_bcd#92 ← lines_bcd#29 +Coalesced (already) [527] score_bcd#88 ← score_bcd#29 +Coalesced (already) [528] level#108 ← level#10 +Coalesced (already) [529] current_movedown_slow#92 ← current_movedown_slow#14 +Coalesced (already) [530] level_bcd#105 ← level_bcd#11 +Coalesced (already) [531] lines_bcd#91 ← lines_bcd#19 +Coalesced (already) [532] score_bcd#87 ← score_bcd#18 +Coalesced (already) [533] level#107 ← level#10 +Coalesced (already) [534] current_movedown_slow#91 ← current_movedown_slow#14 +Coalesced (already) [535] level_bcd#104 ← level_bcd#11 +Coalesced [539] current_movedown_slow#94 ← current_movedown_slow#10 +Coalesced [545] level_bcd#108 ← level_bcd#8 +Coalesced [555] play_increase_level::b#3 ← play_increase_level::b#1 +Coalesced [556] level_bcd#107 ← level_bcd#21 +Coalesced [560] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [561] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [575] play_remove_lines::w#17 ← play_remove_lines::w#2 +Coalesced [576] play_remove_lines::removed#14 ← play_remove_lines::removed#1 +Coalesced [580] play_remove_lines::w#19 ← play_remove_lines::w#11 +Coalesced [587] play_remove_lines::w#18 ← play_remove_lines::w#3 +Coalesced [588] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [589] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [590] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [591] play_remove_lines::removed#12 ← play_remove_lines::removed#8 +Coalesced [592] play_remove_lines::w#16 ← play_remove_lines::w#1 +Coalesced (already) [593] play_remove_lines::removed#13 ← play_remove_lines::removed#11 +Coalesced (already) [594] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [595] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [596] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [597] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [598] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [600] play_lock_current::yp#7 ← play_lock_current::yp#0 +Coalesced [605] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [606] play_lock_current::xp#5 ← play_lock_current::xp#0 +Coalesced [618] play_lock_current::yp#8 ← play_lock_current::yp#1 +Not coalescing [619] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [620] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [621] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [622] play_lock_current::xp#6 ← play_lock_current::xp#1 +Coalesced [623] play_lock_current::c#5 ← play_lock_current::c#1 +Coalesced [633] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [634] keyboard_events_size#89 ← keyboard_events_size#4 +Coalesced [637] keyboard_events_size#88 ← keyboard_events_size#13 +Coalesced [638] keyboard_events_size#78 ← keyboard_events_size#19 +Coalesced [646] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [647] keyboard_events_size#81 ← keyboard_events_size#30 +Coalesced [676] keyboard_event_scan::row#14 ← keyboard_event_scan::row#1 +Coalesced [677] keyboard_event_scan::keycode#15 ← keyboard_event_scan::keycode#13 +Coalesced (already) [678] keyboard_events_size#79 ← keyboard_events_size#13 +Coalesced [679] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [680] keyboard_events_size#83 ← keyboard_events_size#30 +Coalesced [690] keyboard_events_size#87 ← keyboard_events_size#2 +Coalesced [696] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced [697] keyboard_events_size#80 ← keyboard_events_size#29 +Coalesced [698] keyboard_event_scan::col#8 ← keyboard_event_scan::col#1 +Coalesced (already) [699] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#14 +Coalesced (already) [700] keyboard_events_size#82 ← keyboard_events_size#29 +Coalesced [704] keyboard_events_size#85 ← keyboard_events_size#1 +Coalesced (already) [705] keyboard_events_size#86 ← keyboard_events_size#10 +Coalesced (already) [706] keyboard_events_size#84 ← keyboard_events_size#10 +Not coalescing [719] render_screen_showing#1 ← render_screen_show#16 +Coalesced [742] play_init::b#3 ← play_init::b#1 +Coalesced [743] play_init::j#3 ← play_init::j#1 +Coalesced [744] play_init::pli#3 ← play_init::pli#1 +Coalesced [745] play_init::idx#3 ← play_init::idx#1 +Coalesced [770] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [771] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [797] render_init::i#3 ← render_init::i#1 +Coalesced [798] render_init::li_1#3 ← render_init::li_1#1 +Coalesced [799] render_init::li_2#3 ← render_init::li_2#1 +Coalesced [801] render_screen_original::screen#11 ← render_screen_original::screen#9 +Coalesced [803] render_screen_original::screen#13 ← render_screen_original::screen#8 +Coalesced [804] render_screen_original::cols#10 ← render_screen_original::cols#7 +Coalesced [812] render_screen_original::oscr#8 ← render_screen_original::oscr#4 +Coalesced [813] render_screen_original::screen#15 ← render_screen_original::screen#2 +Coalesced [814] render_screen_original::ocols#8 ← render_screen_original::ocols#4 +Coalesced [815] render_screen_original::cols#12 ← render_screen_original::cols#1 +Coalesced [816] render_screen_original::x#8 ← render_screen_original::x#1 +Coalesced [826] render_screen_original::screen#17 ← render_screen_original::screen#3 +Coalesced [827] render_screen_original::cols#14 ← render_screen_original::cols#2 +Coalesced [828] render_screen_original::x#10 ← render_screen_original::x#2 +Coalesced [839] render_screen_original::screen#12 ← render_screen_original::screen#10 +Coalesced [840] render_screen_original::cols#9 ← render_screen_original::cols#3 +Coalesced [841] render_screen_original::oscr#7 ← render_screen_original::oscr#1 +Coalesced [842] render_screen_original::ocols#7 ← render_screen_original::ocols#1 +Coalesced [843] render_screen_original::y#7 ← render_screen_original::y#1 +Coalesced [844] render_screen_original::screen#18 ← render_screen_original::screen#10 +Coalesced [845] render_screen_original::cols#15 ← render_screen_original::cols#3 +Coalesced [846] render_screen_original::x#11 ← render_screen_original::x#3 +Coalesced (already) [847] render_screen_original::oscr#9 ← render_screen_original::oscr#1 +Coalesced [848] render_screen_original::screen#16 ← render_screen_original::screen#3 +Coalesced (already) [849] render_screen_original::ocols#9 ← render_screen_original::ocols#1 +Coalesced [850] render_screen_original::cols#13 ← render_screen_original::cols#2 +Coalesced [851] render_screen_original::x#9 ← render_screen_original::x#2 +Coalesced (already) [852] render_screen_original::screen#14 ← render_screen_original::screen#2 +Coalesced (already) [853] render_screen_original::cols#11 ← render_screen_original::cols#1 +Coalesced [854] render_screen_original::x#7 ← render_screen_original::x#1 +Coalesced [881] irq_raster_next#26 ← irq_raster_next#3 +Coalesced [882] irq_cnt#22 ← irq_cnt#1 +Coalesced [883] irq_sprite_ypos#26 ← irq_sprite_ypos#3 +Coalesced [884] irq_sprite_ptr#20 ← irq_sprite_ptr#3 +Coalesced [893] irq_raster_next#25 ← irq_raster_next#2 +Coalesced [894] irq_cnt#21 ← irq_cnt#2 +Coalesced [895] irq_sprite_ypos#25 ← irq_sprite_ypos#2 +Coalesced [896] irq_sprite_ptr#19 ← irq_sprite_ptr#2 +Coalesced [902] irq_raster_next#24 ← irq_raster_next#1 +Coalesced (already) [903] irq_cnt#20 ← irq_cnt#1 +Coalesced [904] irq_sprite_ypos#24 ← irq_sprite_ypos#1 +Coalesced [905] irq_sprite_ptr#18 ← irq_sprite_ptr#1 Coalesced down to 99 phi equivalence classes -Culled Empty Block (label) @4 Culled Empty Block (label) @8 Culled Empty Block (label) toSpritePtr1_@return Culled Empty Block (label) @25 @@ -16856,23 +16805,6 @@ sprites_irq: { keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // The playfield. 0 is empty non-zero is color. - // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, - playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - // The color #1 to use for the pieces for each level - PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED - // The color #2 to use for the pieces for each level - PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE - // Pointers to the screen address for rendering each playfield line - // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. - .align $80 - screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 - .align $40 - screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 @@ -16901,16 +16833,33 @@ sprites_irq: { // The initial X/Y for each piece PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 - // Pointers to the playfield address for each playfield line - playfield_lines: .fill 2*PLAYFIELD_LINES, 0 - // Indixes into the playfield for each playfield line - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // The speed of moving down the piece when soft-drop is not activated // This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1. MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 // Base Score values for removing 0-4 lines (in BCD) // These values are added to score_add_bcd for each level gained. SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // The playfield. 0 is empty non-zero is color. + // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, + playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 + // The color #1 to use for the pieces for each level + PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED + // The color #2 to use for the pieces for each level + PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE + // Pointers to the screen address for rendering each playfield line + // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. + .align $80 + screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 + .align $40 + screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 + // Pointers to the playfield address for each playfield line + playfield_lines: .fill 2*PLAYFIELD_LINES, 0 + // Indixes into the playfield for each playfield line + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // Score values for removing 0-4 lines (in BCD) // These values are updated based on the players level and the base values from SCORE_BASE_BCD score_add_bcd: .fill 4*5, 0 @@ -21586,23 +21535,6 @@ sprites_irq: { keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // The playfield. 0 is empty non-zero is color. - // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, - playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - // The color #1 to use for the pieces for each level - PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED - // The color #2 to use for the pieces for each level - PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE - // Pointers to the screen address for rendering each playfield line - // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. - .align $80 - screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 - .align $40 - screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 @@ -21631,16 +21563,33 @@ sprites_irq: { // The initial X/Y for each piece PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 - // Pointers to the playfield address for each playfield line - playfield_lines: .fill 2*PLAYFIELD_LINES, 0 - // Indixes into the playfield for each playfield line - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // The speed of moving down the piece when soft-drop is not activated // This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1. MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 // Base Score values for removing 0-4 lines (in BCD) // These values are added to score_add_bcd for each level gained. SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // The playfield. 0 is empty non-zero is color. + // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, + playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 + // The color #1 to use for the pieces for each level + PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED + // The color #2 to use for the pieces for each level + PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE + // Pointers to the screen address for rendering each playfield line + // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. + .align $80 + screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 + .align $40 + screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 + // Pointers to the playfield address for each playfield line + playfield_lines: .fill 2*PLAYFIELD_LINES, 0 + // Indixes into the playfield for each playfield line + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // Score values for removing 0-4 lines (in BCD) // These values are updated based on the players level and the base values from SCORE_BASE_BCD score_add_bcd: .fill 4*5, 0 @@ -26677,23 +26626,6 @@ sprites_irq: { keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f // Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7) keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 - // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() - keyboard_events: .fill 8, 0 - // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() - keyboard_scan_values: .fill 8, 0 - // The playfield. 0 is empty non-zero is color. - // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, - playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 - // The color #1 to use for the pieces for each level - PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED - // The color #2 to use for the pieces for each level - PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE - // Pointers to the screen address for rendering each playfield line - // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. - .align $80 - screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 - .align $40 - screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 // The T-piece .align $40 PIECE_T: .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 @@ -26722,16 +26654,33 @@ sprites_irq: { // The initial X/Y for each piece PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4 PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1 - // Pointers to the playfield address for each playfield line - playfield_lines: .fill 2*PLAYFIELD_LINES, 0 - // Indixes into the playfield for each playfield line - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // The speed of moving down the piece when soft-drop is not activated // This array holds the number of frames per move by level (0-29). For all levels 29+ the value is 1. MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 // Base Score values for removing 0-4 lines (in BCD) // These values are added to score_add_bcd for each level gained. SCORE_BASE_BCD: .dword 0, $40, $100, $300, $1200 + // Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan() + keyboard_events: .fill 8, 0 + // The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event() + keyboard_scan_values: .fill 8, 0 + // The playfield. 0 is empty non-zero is color. + // The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth, + playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0 + // The color #1 to use for the pieces for each level + PIECES_COLORS_1: .byte BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED, BLUE, GREEN, PURPLE, BLUE, RED, LIGHT_GREEN, RED, BLUE, LIGHT_BLUE, RED + // The color #2 to use for the pieces for each level + PIECES_COLORS_2: .byte CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE, CYAN, LIGHT_GREEN, PINK, LIGHT_GREEN, LIGHT_GREEN, LIGHT_BLUE, DARK_GREY, PURPLE, RED, ORANGE + // Pointers to the screen address for rendering each playfield line + // The lines for screen 1 is aligned with 0x80 and screen 2 with 0x40 - so XOR'ing with 0x40 gives screen 2 lines. + .align $80 + screen_lines_1: .fill 2*PLAYFIELD_LINES, 0 + .align $40 + screen_lines_2: .fill 2*PLAYFIELD_LINES, 0 + // Pointers to the playfield address for each playfield line + playfield_lines: .fill 2*PLAYFIELD_LINES, 0 + // Indixes into the playfield for each playfield line + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 // Score values for removing 0-4 lines (in BCD) // These values are updated based on the players level and the base values from SCORE_BASE_BCD score_add_bcd: .fill 4*5, 0 diff --git a/src/test/ref/complex/xmega65/xmega65.log b/src/test/ref/complex/xmega65/xmega65.log index 759c98533..e93376c2f 100644 --- a/src/test/ref/complex/xmega65/xmega65.log +++ b/src/test/ref/complex/xmega65/xmega65.log @@ -141,9 +141,9 @@ syscall2::@return: scope:[syscall2] from syscall2 @7: scope:[] from @begin (void()*~) $0 ← & (void()) syscall1() (void()*~) $1 ← & (void()) syscall2() - (struct SysCall[]) SYSCALLS ← { { (const byte) JMP, (void()*~) $0, (const byte) NOP }, { (const byte) JMP, (void()*~) $1, (const byte) NOP } } + (struct SysCall[]) SYSCALLS ← { (struct SysCall){ (const byte) JMP, (void()*)(void()*~) $0, (const byte) NOP }, (struct SysCall){ (const byte) JMP, (void()*)(void()*~) $1, (const byte) NOP } } (void()*~) $2 ← & (void()) main() - (struct SysCall[]) SYSCALL_RESET ← { { (const byte) JMP, (void()*~) $2, (const byte) NOP } } + (struct SysCall[]) SYSCALL_RESET ← { (struct SysCall){ (const byte) JMP, (void()*)(void()*~) $2, (const byte) NOP } } call main to:@8 @8: scope:[] from @7 @@ -278,6 +278,9 @@ Simplifying constant integer cast $36 Simplifying constant integer cast $42 Simplifying constant integer cast $4f Simplifying constant integer cast $4e +Simplifying constant integer cast (void()*~) $0 +Simplifying constant integer cast (void()*~) $1 +Simplifying constant integer cast (void()*~) $2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $14 diff --git a/src/test/ref/cordic-atan2-16-ref.asm b/src/test/ref/cordic-atan2-16-ref.asm index 3894a6f2a..d16b507cd 100644 --- a/src/test/ref/cordic-atan2-16-ref.asm +++ b/src/test/ref/cordic-atan2-16-ref.asm @@ -436,9 +436,9 @@ init_font_hex: { bne __b1 rts } - print_hextab: .text "0123456789abcdef" // Bit patterns for symbols 0-f (3x5 pixels) used in font hex FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 + print_hextab: .text "0123456789abcdef" // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ... CORDIC_ATAN2_ANGLES_16: .for (var i=0; i (unumber~) main::$10 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) FONT_HEX_PROTO ← (byte[]){ (byte)(number) 2, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 1, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 1, (byte)(number) 6, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 5, (byte)(number) 2, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 2, (byte)(number) 5, (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 7, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 2, (byte)(number) 5, (byte)(number) 4, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 7, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 4 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) init_font_hex::idx#0 ← (unumber)(number) 0 Inlining cast *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#0) ← (unumber)(number) 0 Inlining cast *((byte*) init_font_hex::charset#4 + (byte) init_font_hex::idx#6) ← (unumber)(number) 0 @@ -1166,6 +1163,86 @@ Inlining cast (signed word~) main::$5 ← (signed word)(word~) main::$4 Inlining cast (byte~) main::$6 ← (byte)(signed byte) main::y#2 Inlining cast (signed word~) main::$8 ← (signed word)(word~) main::$7 Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 7 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 7 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 7 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 +Simplifying constant integer cast 3 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 7 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 7 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 4 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 4 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (byte*) 8192 @@ -1180,86 +1257,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 5 Simplifying constant integer cast 8 Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 7 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 7 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 7 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 -Simplifying constant integer cast 3 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 7 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 7 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 4 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 4 -Simplifying constant integer cast 7 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -1337,10 +1334,10 @@ Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::t Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 Inferred type updated to word in (unumber~) main::$10 ← (word) main::angle_w#0 + (byte) $80 Inferred type updated to byte in (unumber~) main::$11 ← > (word~) main::$10 -Inversing boolean not [61] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [60] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 -Inversing boolean not [70] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [69] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 -Inversing boolean not [81] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [80] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 -Inversing boolean not [105] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [104] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 +Inversing boolean not [60] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [59] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 +Inversing boolean not [69] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [68] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 +Inversing boolean not [80] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [79] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 +Inversing boolean not [104] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [103] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 @@ -1477,28 +1474,27 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) init_font_hex::$3 [19] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [29] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [34] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) atan2_16::$0 [40] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -Simple Condition (bool~) atan2_16::$5 [49] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -Simple Condition (bool~) atan2_16::$17 [62] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 -Simple Condition (bool~) atan2_16::$11 [71] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -Simple Condition (bool~) atan2_16::$18 [74] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 -Simple Condition (bool~) atan2_16::$19 [82] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 -Simple Condition (bool~) atan2_16::$20 [85] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 -Simple Condition (bool~) atan2_16::$21 [102] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 -Simple Condition (bool~) atan2_16::$14 [106] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -Simple Condition (bool~) main::$14 [219] if((signed byte) main::x#1!=rangelast(-$13,$14)) goto main::@2 -Simple Condition (bool~) main::$15 [223] if((signed byte) main::y#1!=rangelast(-$c,$c)) goto main::@1 -Simple Condition (bool~) diff::$0 [238] if((byte) diff::bb1#0<(byte) diff::bb2#0) goto diff::@1 +Simple Condition (bool~) atan2_16::$0 [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 +Simple Condition (bool~) atan2_16::$5 [48] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 +Simple Condition (bool~) atan2_16::$17 [61] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 +Simple Condition (bool~) atan2_16::$11 [70] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 +Simple Condition (bool~) atan2_16::$18 [73] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 +Simple Condition (bool~) atan2_16::$19 [81] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 +Simple Condition (bool~) atan2_16::$20 [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 +Simple Condition (bool~) atan2_16::$21 [101] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 +Simple Condition (bool~) atan2_16::$14 [105] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 +Simple Condition (bool~) main::$14 [218] if((signed byte) main::x#1!=rangelast(-$13,$14)) goto main::@2 +Simple Condition (bool~) main::$15 [222] if((signed byte) main::y#1!=rangelast(-$c,$c)) goto main::@1 +Simple Condition (bool~) diff::$0 [237] if((byte) diff::bb1#0<(byte) diff::bb2#0) goto diff::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [102] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 +Negating conditional jump and destination [101] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const word[CORDIC_ITERATIONS_16]) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i (unumber~) main::$9 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) FONT_HEX_PROTO ← (byte[]){ (byte)(number) 2, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 1, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 1, (byte)(number) 6, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 5, (byte)(number) 2, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 2, (byte)(number) 5, (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 7, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 2, (byte)(number) 5, (byte)(number) 4, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 7, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 4 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) init_font_hex::idx#0 ← (unumber)(number) 0 Inlining cast *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#0) ← (unumber)(number) 0 Inlining cast *((byte*) init_font_hex::charset#4 + (byte) init_font_hex::idx#6) ← (unumber)(number) 0 @@ -818,6 +815,86 @@ Inlining cast (signed word~) main::$4 ← (signed word)(word~) main::$3 Inlining cast (byte~) main::$5 ← (byte)(signed byte) main::y#2 Inlining cast (signed word~) main::$7 ← (signed word)(word~) main::$6 Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 7 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 7 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 7 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 +Simplifying constant integer cast 3 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 7 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 7 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 4 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 4 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (byte*) 8192 @@ -832,86 +909,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 5 Simplifying constant integer cast 8 Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 7 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 7 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 7 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 -Simplifying constant integer cast 3 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 7 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 7 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 4 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 4 -Simplifying constant integer cast 7 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -981,10 +978,10 @@ Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::t Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 Inferred type updated to word in (unumber~) main::$9 ← (word) main::angle_w#0 + (byte) $80 Inferred type updated to byte in (unumber~) main::$10 ← > (word~) main::$9 -Inversing boolean not [61] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [60] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 -Inversing boolean not [70] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [69] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 -Inversing boolean not [81] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [80] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 -Inversing boolean not [105] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [104] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 +Inversing boolean not [60] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [59] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 +Inversing boolean not [69] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [68] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 +Inversing boolean not [80] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [79] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 +Inversing boolean not [104] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [103] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 @@ -1082,27 +1079,26 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) init_font_hex::$3 [19] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [29] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [34] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) atan2_16::$0 [40] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -Simple Condition (bool~) atan2_16::$5 [49] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -Simple Condition (bool~) atan2_16::$17 [62] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 -Simple Condition (bool~) atan2_16::$11 [71] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -Simple Condition (bool~) atan2_16::$18 [74] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 -Simple Condition (bool~) atan2_16::$19 [82] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 -Simple Condition (bool~) atan2_16::$20 [85] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 -Simple Condition (bool~) atan2_16::$21 [102] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 -Simple Condition (bool~) atan2_16::$14 [106] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -Simple Condition (bool~) main::$11 [167] if((signed byte) main::x#1!=rangelast(-$13,$14)) goto main::@2 -Simple Condition (bool~) main::$12 [171] if((signed byte) main::y#1!=rangelast(-$c,$c)) goto main::@1 +Simple Condition (bool~) atan2_16::$0 [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 +Simple Condition (bool~) atan2_16::$5 [48] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 +Simple Condition (bool~) atan2_16::$17 [61] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 +Simple Condition (bool~) atan2_16::$11 [70] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 +Simple Condition (bool~) atan2_16::$18 [73] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 +Simple Condition (bool~) atan2_16::$19 [81] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 +Simple Condition (bool~) atan2_16::$20 [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 +Simple Condition (bool~) atan2_16::$21 [101] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 +Simple Condition (bool~) atan2_16::$14 [105] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 +Simple Condition (bool~) main::$11 [166] if((signed byte) main::x#1!=rangelast(-$13,$14)) goto main::@2 +Simple Condition (bool~) main::$12 [170] if((signed byte) main::y#1!=rangelast(-$c,$c)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [102] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 +Negating conditional jump and destination [101] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const word[CORDIC_ITERATIONS_16]) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i (word~) init_angle_screen::$11 Inferred type updated to byte in (unumber~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 Inferred type updated to byte in (unumber~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -Inversing boolean not [61] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [60] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 -Inversing boolean not [70] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [69] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 -Inversing boolean not [81] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [80] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 -Inversing boolean not [105] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [104] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 -Inversing boolean not [148] (bool~) main::$5 ← (byte*) main::clear_char#2 >= (const byte*) CHARSET+(word) $800 from [147] (bool~) main::$4 ← (byte*) main::clear_char#2 < (const byte*) CHARSET+(word) $800 +Inversing boolean not [60] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [59] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 +Inversing boolean not [69] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [68] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 +Inversing boolean not [80] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [79] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 +Inversing boolean not [104] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [103] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 +Inversing boolean not [147] (bool~) main::$5 ← (byte*) main::clear_char#2 >= (const byte*) CHARSET+(word) $800 from [146] (bool~) main::$4 ← (byte*) main::clear_char#2 < (const byte*) CHARSET+(word) $800 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 @@ -1236,29 +1233,28 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) init_font_hex::$3 [19] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [29] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [34] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) atan2_16::$0 [40] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -Simple Condition (bool~) atan2_16::$5 [49] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -Simple Condition (bool~) atan2_16::$17 [62] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 -Simple Condition (bool~) atan2_16::$11 [71] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -Simple Condition (bool~) atan2_16::$18 [74] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 -Simple Condition (bool~) atan2_16::$19 [82] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 -Simple Condition (bool~) atan2_16::$20 [85] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 -Simple Condition (bool~) atan2_16::$21 [102] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 -Simple Condition (bool~) atan2_16::$14 [106] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -Simple Condition (bool~) main::$3 [145] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 -Simple Condition (bool~) main::$5 [149] if((byte*) main::clear_char#5>=(const byte*) CHARSET+(word) $800) goto main::@1 -Simple Condition (bool~) init_angle_screen::$2 [165] if((byte) init_angle_screen::x#2<=(byte) $13) goto init_angle_screen::@3 -Simple Condition (bool~) init_angle_screen::$16 [202] if((byte) init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 +Simple Condition (bool~) atan2_16::$0 [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 +Simple Condition (bool~) atan2_16::$5 [48] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 +Simple Condition (bool~) atan2_16::$17 [61] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 +Simple Condition (bool~) atan2_16::$11 [70] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 +Simple Condition (bool~) atan2_16::$18 [73] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 +Simple Condition (bool~) atan2_16::$19 [81] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 +Simple Condition (bool~) atan2_16::$20 [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 +Simple Condition (bool~) atan2_16::$21 [101] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 +Simple Condition (bool~) atan2_16::$14 [105] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 +Simple Condition (bool~) main::$3 [144] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 +Simple Condition (bool~) main::$5 [148] if((byte*) main::clear_char#5>=(const byte*) CHARSET+(word) $800) goto main::@1 +Simple Condition (bool~) init_angle_screen::$2 [164] if((byte) init_angle_screen::x#2<=(byte) $13) goto init_angle_screen::@3 +Simple Condition (bool~) init_angle_screen::$16 [201] if((byte) init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [102] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 +Negating conditional jump and destination [101] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const word[CORDIC_ITERATIONS_16]) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i (word~) main: Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4 Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 -Inversing boolean not [61] (bool~) atan2_8::$18 ← (signed byte) atan2_8::yi#3 != (signed byte) 0 from [60] (bool~) atan2_8::$17 ← (signed byte) atan2_8::yi#3 == (signed byte) 0 -Inversing boolean not [74] (bool~) atan2_8::$12 ← (signed byte) atan2_8::x#4 >= (signed byte) 0 from [73] (bool~) atan2_8::$11 ← (signed byte) atan2_8::x#4 < (signed byte) 0 -Inversing boolean not [90] (bool~) atan2_8::$15 ← (signed byte) atan2_8::y#4 >= (signed byte) 0 from [89] (bool~) atan2_8::$14 ← (signed byte) atan2_8::y#4 < (signed byte) 0 +Inversing boolean not [60] (bool~) atan2_8::$18 ← (signed byte) atan2_8::yi#3 != (signed byte) 0 from [59] (bool~) atan2_8::$17 ← (signed byte) atan2_8::yi#3 == (signed byte) 0 +Inversing boolean not [73] (bool~) atan2_8::$12 ← (signed byte) atan2_8::x#4 >= (signed byte) 0 from [72] (bool~) atan2_8::$11 ← (signed byte) atan2_8::x#4 < (signed byte) 0 +Inversing boolean not [89] (bool~) atan2_8::$15 ← (signed byte) atan2_8::y#4 >= (signed byte) 0 from [88] (bool~) atan2_8::$14 ← (signed byte) atan2_8::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 @@ -868,25 +863,24 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) init_font_hex::$3 [19] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [29] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [34] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) atan2_8::$0 [40] if((signed byte) atan2_8::y#0>(signed byte) 0) goto atan2_8::@1 -Simple Condition (bool~) atan2_8::$5 [49] if((signed byte) atan2_8::x#0>(signed byte) 0) goto atan2_8::@4 -Simple Condition (bool~) atan2_8::$18 [62] if((signed byte) atan2_8::yi#3!=(signed byte) 0) goto atan2_8::@16 -Simple Condition (bool~) atan2_8::$21 [69] if((signed byte) atan2_8::yi#3>(signed byte) 0) goto atan2_8::@18 -Simple Condition (bool~) atan2_8::$12 [75] if((signed byte) atan2_8::x#0>=(signed byte) 0) goto atan2_8::@7 -Simple Condition (bool~) atan2_8::$22 [87] if((byte) atan2_8::i#1!=rangelast(0,CORDIC_ITERATIONS_8-1)) goto atan2_8::@15 -Simple Condition (bool~) atan2_8::$15 [91] if((signed byte) atan2_8::y#0>=(signed byte) 0) goto atan2_8::@8 -Simple Condition (bool~) main::$3 [139] if((signed byte) main::x#1!=rangelast(-$13,$14)) goto main::@2 -Simple Condition (bool~) main::$4 [143] if((signed byte) main::y#1!=rangelast(-$c,$c)) goto main::@1 +Simple Condition (bool~) atan2_8::$0 [39] if((signed byte) atan2_8::y#0>(signed byte) 0) goto atan2_8::@1 +Simple Condition (bool~) atan2_8::$5 [48] if((signed byte) atan2_8::x#0>(signed byte) 0) goto atan2_8::@4 +Simple Condition (bool~) atan2_8::$18 [61] if((signed byte) atan2_8::yi#3!=(signed byte) 0) goto atan2_8::@16 +Simple Condition (bool~) atan2_8::$21 [68] if((signed byte) atan2_8::yi#3>(signed byte) 0) goto atan2_8::@18 +Simple Condition (bool~) atan2_8::$12 [74] if((signed byte) atan2_8::x#0>=(signed byte) 0) goto atan2_8::@7 +Simple Condition (bool~) atan2_8::$22 [86] if((byte) atan2_8::i#1!=rangelast(0,CORDIC_ITERATIONS_8-1)) goto atan2_8::@15 +Simple Condition (bool~) atan2_8::$15 [90] if((signed byte) atan2_8::y#0>=(signed byte) 0) goto atan2_8::@8 +Simple Condition (bool~) main::$3 [138] if((signed byte) main::x#1!=rangelast(-$13,$14)) goto main::@2 +Simple Condition (bool~) main::$4 [142] if((signed byte) main::y#1!=rangelast(-$c,$c)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [87] if((byte) atan2_8::i#1==rangelast(0,CORDIC_ITERATIONS_8-1)) goto atan2_8::@17 +Negating conditional jump and destination [86] if((byte) atan2_8::i#1==rangelast(0,CORDIC_ITERATIONS_8-1)) goto atan2_8::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const byte[CORDIC_ITERATIONS_8]) CORDIC_ATAN2_ANGLES_8 = kickasm {{ .fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2 }} Constant (const byte) atan2_8::angle#0 = 0 @@ -898,12 +892,10 @@ Constant (const byte*) main::screen#0 = SCREEN Constant (const signed byte) main::y#0 = -$c Constant (const signed byte) main::x#0 = -$13 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO -Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0 Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [144] if(true) goto main::@6 +if() condition always true - replacing block destination [143] if(true) goto main::@6 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [17] init_font_hex::i#1 ← ++ init_font_hex::i#2 to ++ Resolved ranged comparison value [19] if(init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 to (number) 5 @@ -911,12 +903,12 @@ Resolved ranged next value [27] init_font_hex::c1#1 ← ++ init_font_hex::c1#4 t Resolved ranged comparison value [29] if(init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 to (number) $10 Resolved ranged next value [32] init_font_hex::c#1 ← ++ init_font_hex::c#6 to ++ Resolved ranged comparison value [34] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to (number) $10 -Resolved ranged next value [85] atan2_8::i#1 ← ++ atan2_8::i#2 to ++ -Resolved ranged comparison value [87] if(atan2_8::i#1==rangelast(0,CORDIC_ITERATIONS_8-1)) goto atan2_8::@17 to (const byte) CORDIC_ITERATIONS_8-(byte) 1+(number) 1 -Resolved ranged next value [137] main::x#1 ← ++ main::x#2 to ++ -Resolved ranged comparison value [139] if(main::x#1!=rangelast(-$13,$14)) goto main::@2 to (number) $15 -Resolved ranged next value [141] main::y#1 ← ++ main::y#4 to ++ -Resolved ranged comparison value [143] if(main::y#1!=rangelast(-$c,$c)) goto main::@1 to (number) $d +Resolved ranged next value [84] atan2_8::i#1 ← ++ atan2_8::i#2 to ++ +Resolved ranged comparison value [86] if(atan2_8::i#1==rangelast(0,CORDIC_ITERATIONS_8-1)) goto atan2_8::@17 to (const byte) CORDIC_ITERATIONS_8-(byte) 1+(number) 1 +Resolved ranged next value [136] main::x#1 ← ++ main::x#2 to ++ +Resolved ranged comparison value [138] if(main::x#1!=rangelast(-$13,$14)) goto main::@2 to (number) $15 +Resolved ranged next value [140] main::y#1 ← ++ main::y#4 to ++ +Resolved ranged comparison value [142] if(main::y#1!=rangelast(-$c,$c)) goto main::@1 to (number) $d Simplifying expression containing zero init_font_hex::charset#2 in [8] *((byte*) init_font_hex::charset#2 + (const byte) init_font_hex::idx#0) ← (byte) 0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte) init_font_hex::idx#4 and assignment [15] (byte) init_font_hex::idx#4 ← ++ (byte) init_font_hex::idx#3 @@ -972,13 +964,13 @@ Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7 Successful SSA optimization Pass2ConstantIdentification Rewriting division to use shift [34] (byte) atan2_8::angle#1 ← (byte) atan2_8::angle#6 / (byte) 2 Successful SSA optimization Pass2MultiplyToShiftRewriting +Inlining constant with var siblings (const byte*) init_font_hex::proto_hi#0 Inlining constant with var siblings (const byte) init_font_hex::c#0 +Inlining constant with var siblings (const byte*) init_font_hex::proto_lo#0 Inlining constant with var siblings (const byte) init_font_hex::c1#0 Inlining constant with var siblings (const byte) init_font_hex::idx#0 Inlining constant with var siblings (const byte) init_font_hex::i#0 Inlining constant with var siblings (const byte*) init_font_hex::charset#1 -Inlining constant with var siblings (const byte*) init_font_hex::proto_hi#0 -Inlining constant with var siblings (const byte*) init_font_hex::proto_lo#0 Inlining constant with var siblings (const byte) init_font_hex::idx#1 Inlining constant with var siblings (const byte) atan2_8::angle#0 Inlining constant with var siblings (const byte) atan2_8::i#0 @@ -1022,7 +1014,6 @@ Added new block during phi lifting atan2_8::@30(between atan2_8::@7 and atan2_8: Added new block during phi lifting main::@14(between main::@3 and main::@1) Added new block during phi lifting main::@15(between main::@13 and main::@2) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @1 Adding NOP phi() at start of @6 Adding NOP phi() at start of @8 Adding NOP phi() at start of @9 @@ -1034,48 +1025,47 @@ Adding NOP phi() at start of main::toD0181_@return Adding NOP phi() at start of main::@5 Adding NOP phi() at start of init_font_hex CALL GRAPH -Calls in [] to main:4 -Calls in [main] to init_font_hex:8 atan2_8:18 +Calls in [] to main:3 +Calls in [main] to init_font_hex:7 atan2_8:17 Created 24 initial phi equivalence classes -Coalesced [14] main::screen#7 ← main::screen#4 -Coalesced [29] main::y#6 ← main::y#1 -Coalesced [30] main::screen#6 ← main::screen#1 -Coalesced [31] main::x#4 ← main::x#1 -Coalesced (already) [32] main::screen#8 ← main::screen#1 -Coalesced [35] atan2_8::yi#12 ← atan2_8::$2 -Coalesced [39] atan2_8::xi#9 ← atan2_8::$7 -Coalesced [41] atan2_8::yi#14 ← atan2_8::yi#0 -Coalesced [42] atan2_8::xi#11 ← atan2_8::xi#0 -Coalesced [45] atan2_8::angle#17 ← atan2_8::angle#12 -Coalesced [50] atan2_8::angle#22 ← atan2_8::angle#4 -Coalesced [54] atan2_8::return#5 ← atan2_8::angle#5 -Coalesced [57] atan2_8::return#6 ← atan2_8::angle#11 -Coalesced [58] atan2_8::angle#21 ← atan2_8::angle#1 -Coalesced [65] atan2_8::yi#16 ← atan2_8::yi#2 -Coalesced [66] atan2_8::angle#20 ← atan2_8::angle#3 -Coalesced [67] atan2_8::xi#13 ← atan2_8::xi#2 -Coalesced [71] atan2_8::yi#13 ← atan2_8::yi#7 -Coalesced [72] atan2_8::xi#10 ← atan2_8::xi#7 -Coalesced [73] atan2_8::i#7 ← atan2_8::i#1 -Coalesced [74] atan2_8::angle#16 ← atan2_8::angle#13 -Coalesced (already) [75] atan2_8::angle#18 ← atan2_8::angle#13 -Coalesced [79] atan2_8::yi#15 ← atan2_8::yi#1 -Coalesced [80] atan2_8::angle#19 ← atan2_8::angle#2 -Coalesced [81] atan2_8::xi#12 ← atan2_8::xi#1 -Not coalescing [82] atan2_8::xi#8 ← atan2_8::x#0 -Not coalescing [83] atan2_8::yi#11 ← atan2_8::y#0 -Coalesced [86] init_font_hex::charset#9 ← init_font_hex::charset#5 -Coalesced [108] init_font_hex::charset#8 ← init_font_hex::charset#0 -Coalesced [109] init_font_hex::proto_hi#7 ← init_font_hex::proto_hi#1 -Coalesced [110] init_font_hex::c#7 ← init_font_hex::c#1 -Coalesced (already) [111] init_font_hex::charset#10 ← init_font_hex::charset#0 -Coalesced [112] init_font_hex::proto_lo#5 ← init_font_hex::proto_lo#1 -Coalesced [113] init_font_hex::c1#5 ← init_font_hex::c1#1 -Coalesced [114] init_font_hex::i#3 ← init_font_hex::i#1 -Coalesced [115] init_font_hex::idx#7 ← init_font_hex::idx#2 +Coalesced [13] main::screen#7 ← main::screen#4 +Coalesced [28] main::y#6 ← main::y#1 +Coalesced [29] main::screen#6 ← main::screen#1 +Coalesced [30] main::x#4 ← main::x#1 +Coalesced (already) [31] main::screen#8 ← main::screen#1 +Coalesced [34] atan2_8::yi#12 ← atan2_8::$2 +Coalesced [38] atan2_8::xi#9 ← atan2_8::$7 +Coalesced [40] atan2_8::yi#14 ← atan2_8::yi#0 +Coalesced [41] atan2_8::xi#11 ← atan2_8::xi#0 +Coalesced [44] atan2_8::angle#17 ← atan2_8::angle#12 +Coalesced [49] atan2_8::angle#22 ← atan2_8::angle#4 +Coalesced [53] atan2_8::return#5 ← atan2_8::angle#5 +Coalesced [56] atan2_8::return#6 ← atan2_8::angle#11 +Coalesced [57] atan2_8::angle#21 ← atan2_8::angle#1 +Coalesced [64] atan2_8::yi#16 ← atan2_8::yi#2 +Coalesced [65] atan2_8::angle#20 ← atan2_8::angle#3 +Coalesced [66] atan2_8::xi#13 ← atan2_8::xi#2 +Coalesced [70] atan2_8::yi#13 ← atan2_8::yi#7 +Coalesced [71] atan2_8::xi#10 ← atan2_8::xi#7 +Coalesced [72] atan2_8::i#7 ← atan2_8::i#1 +Coalesced [73] atan2_8::angle#16 ← atan2_8::angle#13 +Coalesced (already) [74] atan2_8::angle#18 ← atan2_8::angle#13 +Coalesced [78] atan2_8::yi#15 ← atan2_8::yi#1 +Coalesced [79] atan2_8::angle#19 ← atan2_8::angle#2 +Coalesced [80] atan2_8::xi#12 ← atan2_8::xi#1 +Not coalescing [81] atan2_8::xi#8 ← atan2_8::x#0 +Not coalescing [82] atan2_8::yi#11 ← atan2_8::y#0 +Coalesced [85] init_font_hex::charset#9 ← init_font_hex::charset#5 +Coalesced [107] init_font_hex::charset#8 ← init_font_hex::charset#0 +Coalesced [108] init_font_hex::proto_hi#7 ← init_font_hex::proto_hi#1 +Coalesced [109] init_font_hex::c#7 ← init_font_hex::c#1 +Coalesced (already) [110] init_font_hex::charset#10 ← init_font_hex::charset#0 +Coalesced [111] init_font_hex::proto_lo#5 ← init_font_hex::proto_lo#1 +Coalesced [112] init_font_hex::c1#5 ← init_font_hex::c1#1 +Coalesced [113] init_font_hex::i#3 ← init_font_hex::i#1 +Coalesced [114] init_font_hex::idx#7 ← init_font_hex::idx#2 Coalesced down to 17 phi equivalence classes -Culled Empty Block (label) @1 Culled Empty Block (label) @6 Culled Empty Block (label) @9 Culled Empty Block (label) main::@12 diff --git a/src/test/ref/examples/3d/3d.log b/src/test/ref/examples/3d/3d.log index f7c360f55..f4be65347 100644 --- a/src/test/ref/examples/3d/3d.log +++ b/src/test/ref/examples/3d/3d.log @@ -431,9 +431,6 @@ main::@return: scope:[main] from main::@3 to:@return @41: scope:[] from @16 (byte*) print_screen#47 ← phi( @16/(byte*) print_screen#0 ) - (signed byte[8]) xs ← { (number) -$34, (number) -$34, (number) -$34, (number) 0, (number) 0, (number) $34, (number) $34, (number) $34 } - (signed byte[8]) ys ← { (number) -$34, (number) 0, (number) $34, (number) -$34, (number) $34, (number) -$34, (number) 0, (number) $34 } - (signed byte[8]) zs ← { (number) $34, (number) $34, (number) $34, (number) $34, (number) $34, (number) $34, (number) $34, (number) $34 } (signed byte[8]) xrs ← { fill( 8, 0) } (signed byte[8]) yrs ← { fill( 8, 0) } (signed byte[8]) zrs ← { fill( 8, 0) } @@ -523,9 +520,9 @@ anim::@22: scope:[anim] from anim::@28 anim::@29 (signed byte) sx#25 ← phi( anim::@28/(signed byte) sx#26 anim::@29/(signed byte) sx#21 ) (byte) anim::i#2 ← phi( anim::@28/(byte) anim::i#0 anim::@29/(byte) anim::i#1 ) *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL) - (signed byte) rotate_matrix::x#0 ← *((signed byte[8]) xs + (byte) anim::i#2) - (signed byte) rotate_matrix::y#0 ← *((signed byte[8]) ys + (byte) anim::i#2) - (signed byte) rotate_matrix::z#0 ← *((signed byte[8]) zs + (byte) anim::i#2) + (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs + (byte) anim::i#2) + (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys + (byte) anim::i#2) + (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs + (byte) anim::i#2) call rotate_matrix to:anim::@29 anim::@29: scope:[anim] from anim::@22 @@ -675,7 +672,7 @@ debug_print_init::@1: scope:[debug_print_init] from debug_print_init::@17 debug (byte*) debug_print_init::at_line#1 ← phi( debug_print_init::@17/(byte*) debug_print_init::at_line#0 debug_print_init::@3/(byte*) debug_print_init::at_line#4 ) (byte*~) debug_print_init::$30 ← (byte*) debug_print_init::at_line#1 + (number) $28*(number) 0 (byte*~) debug_print_init::$31 ← (byte*~) debug_print_init::$30 + (byte) debug_print_init::c#2 - (signed byte) print_sbyte_at::b#1 ← *((signed byte[8]) xs + (byte) debug_print_init::i#2) + (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs + (byte) debug_print_init::i#2) (byte*) print_sbyte_at::at#0 ← (byte*~) debug_print_init::$31 call print_sbyte_at to:debug_print_init::@18 @@ -686,7 +683,7 @@ debug_print_init::@18: scope:[debug_print_init] from debug_print_init::@1 (byte*) debug_print_init::at_line#2 ← phi( debug_print_init::@1/(byte*) debug_print_init::at_line#1 ) (byte*~) debug_print_init::$33 ← (byte*) debug_print_init::at_line#2 + (number) $28*(number) 1 (byte*~) debug_print_init::$34 ← (byte*~) debug_print_init::$33 + (byte) debug_print_init::c#3 - (signed byte) print_sbyte_at::b#2 ← *((signed byte[8]) ys + (byte) debug_print_init::i#3) + (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys + (byte) debug_print_init::i#3) (byte*) print_sbyte_at::at#1 ← (byte*~) debug_print_init::$34 call print_sbyte_at to:debug_print_init::@19 @@ -697,7 +694,7 @@ debug_print_init::@19: scope:[debug_print_init] from debug_print_init::@18 (byte*) debug_print_init::at_line#3 ← phi( debug_print_init::@18/(byte*) debug_print_init::at_line#2 ) (byte*~) debug_print_init::$36 ← (byte*) debug_print_init::at_line#3 + (number) $28*(number) 2 (byte*~) debug_print_init::$37 ← (byte*~) debug_print_init::$36 + (byte) debug_print_init::c#4 - (signed byte) print_sbyte_at::b#3 ← *((signed byte[8]) zs + (byte) debug_print_init::i#4) + (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs + (byte) debug_print_init::i#4) (byte*) print_sbyte_at::at#2 ← (byte*~) debug_print_init::$37 call print_sbyte_at to:debug_print_init::@20 @@ -2155,15 +2152,15 @@ SYMBOL TABLE SSA (signed byte[8]) xps (const signed byte*) xr = (signed byte*)(number) $f0 (signed byte[8]) xrs -(signed byte[8]) xs +(const signed byte[8]) xs = { (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 } (const signed byte*) yp = (signed byte*)(number) $f5 (signed byte[8]) yps (const signed byte*) yr = (signed byte*)(number) $f1 (signed byte[8]) yrs -(signed byte[8]) ys +(const signed byte[8]) ys = { (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34 } (const signed byte*) zr = (signed byte*)(number) $f2 (signed byte[8]) zrs -(signed byte[8]) zs +(const signed byte[8]) zs = { (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 } Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (unumber) 0 in (bool~) print_str_at::$0 ← (number) 0 != *((byte*) print_str_at::str#13) @@ -2301,10 +2298,6 @@ Adding number conversion cast (unumber) 8 in *((signed byte[9]) rotation_matrix Adding number conversion cast (unumber) $40 in (signed byte*~) $0 ← (signed byte[$140]) SINH + (number) $40 Adding number conversion cast (unumber) $40 in (signed byte*~) $1 ← (signed byte[$140]) SINQ + (number) $40 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed byte[8]) xs ← (signed byte[8]){ (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 } -Added casts to value list in (signed byte[8]) ys ← (signed byte[8]){ (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34 } -Added casts to value list in (signed byte[8]) zs ← (signed byte[8]){ (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -2351,6 +2344,30 @@ Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53287 +Simplifying constant integer cast -$34 +Simplifying constant integer cast -$34 +Simplifying constant integer cast -$34 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast -$34 +Simplifying constant integer cast 0 +Simplifying constant integer cast $34 +Simplifying constant integer cast -$34 +Simplifying constant integer cast $34 +Simplifying constant integer cast -$34 +Simplifying constant integer cast 0 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 +Simplifying constant integer cast $34 Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (signed byte*) 240 @@ -2372,30 +2389,6 @@ Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast 1 Simplifying constant integer cast $3e8 -Simplifying constant integer cast -$34 -Simplifying constant integer cast -$34 -Simplifying constant integer cast -$34 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast -$34 -Simplifying constant integer cast 0 -Simplifying constant integer cast $34 -Simplifying constant integer cast -$34 -Simplifying constant integer cast $34 -Simplifying constant integer cast -$34 -Simplifying constant integer cast 0 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 -Simplifying constant integer cast $34 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $ff @@ -2799,52 +2792,45 @@ Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_str_at::$0 [24] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 Simple Condition (bool~) print_sbyte_at::$0 [32] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -Simple Condition (bool~) anim::$0 [109] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@4 -Simple Condition (bool~) anim::$1 [112] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@10 -Simple Condition (bool~) anim::$2 [115] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@16 -Simple Condition (bool~) anim::$13 [149] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@22 -Simple Condition (bool~) debug_print_init::$67 [281] if((byte) debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 -Simple Condition (bool~) debug_print_init::$68 [286] if((byte) debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 -Simple Condition (bool~) debug_print::$31 [475] if((byte) debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 -Simple Condition (bool~) sprites_init::$3 [488] if((byte) sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 +Simple Condition (bool~) anim::$0 [106] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@4 +Simple Condition (bool~) anim::$1 [109] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@10 +Simple Condition (bool~) anim::$2 [112] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@16 +Simple Condition (bool~) anim::$13 [146] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@22 +Simple Condition (bool~) debug_print_init::$67 [278] if((byte) debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 +Simple Condition (bool~) debug_print_init::$68 [283] if((byte) debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 +Simple Condition (bool~) debug_print::$31 [472] if((byte) debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 +Simple Condition (bool~) sprites_init::$3 [485] if((byte) sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [96] (signed byte[8]) xrs ← { fill( 8, 0) } -Constant right-side identified [97] (signed byte[8]) yrs ← { fill( 8, 0) } -Constant right-side identified [98] (signed byte[8]) zrs ← { fill( 8, 0) } -Constant right-side identified [99] (signed byte[8]) pps ← { fill( 8, 0) } -Constant right-side identified [100] (signed byte[8]) xps ← { fill( 8, 0) } -Constant right-side identified [101] (signed byte[8]) yps ← { fill( 8, 0) } -Constant right-side identified [163] (byte*~) debug_print_init::$1 ← (const byte*) SCREEN + (byte)(number) $28*(number) 0 -Constant right-side identified [168] (byte*~) debug_print_init::$4 ← (const byte*) SCREEN + (byte)(number) $28*(number) 1 -Constant right-side identified [173] (byte*~) debug_print_init::$7 ← (const byte*) SCREEN + (byte)(number) $28*(number) 2 -Constant right-side identified [178] (byte*) print_str_at::at#4 ← (const byte*) SCREEN + (word)(number) $28*(number) $10 -Constant right-side identified [182] (byte*) print_str_at::at#5 ← (const byte*) SCREEN + (word)(number) $28*(number) $11 -Constant right-side identified [186] (byte*) print_str_at::at#6 ← (const byte*) SCREEN + (word)(number) $28*(number) $12 -Constant right-side identified [190] (byte*) print_str_at::at#7 ← (const byte*) SCREEN + (word)(number) $28*(number) $13 -Constant right-side identified [194] (byte*) print_str_at::at#8 ← (const byte*) SCREEN + (word)(number) $28*(number) $14 -Constant right-side identified [198] (byte*) print_str_at::at#9 ← (const byte*) SCREEN + (word)(number) $28*(number) $15 -Constant right-side identified [202] (byte*) print_str_at::at#10 ← (const byte*) SCREEN + (word)(number) $28*(number) $16 -Constant right-side identified [206] (byte*) print_str_at::at#11 ← (const byte*) SCREEN + (word)(number) $28*(number) $17 -Constant right-side identified [210] (byte*) print_str_at::at#12 ← (const byte*) SCREEN + (word)(number) $28*(number) $18 -Constant right-side identified [214] (byte*) debug_print_init::at_line#0 ← (const byte*) SCREEN + (word)(number) $10*(number) $28 -Constant right-side identified [217] (byte*) debug_print_init::at_cols#0 ← (const byte*) debug_print_init::COLS + (word)(number) $10*(number) $28 -Constant right-side identified [431] (byte*) debug_print::at_line#0 ← (const byte*) SCREEN + (word)(number) $13*(number) $28 -Constant right-side identified [478] (byte*) sprites_init::sprites_ptr#0 ← (const byte*) sprites_init::SCREEN + (word) $3f8 -Constant right-side identified [482] (byte*~) sprites_init::$1 ← (const byte*) SPRITE / (byte) $40 -Constant right-side identified [491] (signed byte[9]) rotation_matrix ← { fill( 9, 0) } +Constant right-side identified [93] (signed byte[8]) xrs ← { fill( 8, 0) } +Constant right-side identified [94] (signed byte[8]) yrs ← { fill( 8, 0) } +Constant right-side identified [95] (signed byte[8]) zrs ← { fill( 8, 0) } +Constant right-side identified [96] (signed byte[8]) pps ← { fill( 8, 0) } +Constant right-side identified [97] (signed byte[8]) xps ← { fill( 8, 0) } +Constant right-side identified [98] (signed byte[8]) yps ← { fill( 8, 0) } +Constant right-side identified [160] (byte*~) debug_print_init::$1 ← (const byte*) SCREEN + (byte)(number) $28*(number) 0 +Constant right-side identified [165] (byte*~) debug_print_init::$4 ← (const byte*) SCREEN + (byte)(number) $28*(number) 1 +Constant right-side identified [170] (byte*~) debug_print_init::$7 ← (const byte*) SCREEN + (byte)(number) $28*(number) 2 +Constant right-side identified [175] (byte*) print_str_at::at#4 ← (const byte*) SCREEN + (word)(number) $28*(number) $10 +Constant right-side identified [179] (byte*) print_str_at::at#5 ← (const byte*) SCREEN + (word)(number) $28*(number) $11 +Constant right-side identified [183] (byte*) print_str_at::at#6 ← (const byte*) SCREEN + (word)(number) $28*(number) $12 +Constant right-side identified [187] (byte*) print_str_at::at#7 ← (const byte*) SCREEN + (word)(number) $28*(number) $13 +Constant right-side identified [191] (byte*) print_str_at::at#8 ← (const byte*) SCREEN + (word)(number) $28*(number) $14 +Constant right-side identified [195] (byte*) print_str_at::at#9 ← (const byte*) SCREEN + (word)(number) $28*(number) $15 +Constant right-side identified [199] (byte*) print_str_at::at#10 ← (const byte*) SCREEN + (word)(number) $28*(number) $16 +Constant right-side identified [203] (byte*) print_str_at::at#11 ← (const byte*) SCREEN + (word)(number) $28*(number) $17 +Constant right-side identified [207] (byte*) print_str_at::at#12 ← (const byte*) SCREEN + (word)(number) $28*(number) $18 +Constant right-side identified [211] (byte*) debug_print_init::at_line#0 ← (const byte*) SCREEN + (word)(number) $10*(number) $28 +Constant right-side identified [214] (byte*) debug_print_init::at_cols#0 ← (const byte*) debug_print_init::COLS + (word)(number) $10*(number) $28 +Constant right-side identified [428] (byte*) debug_print::at_line#0 ← (const byte*) SCREEN + (word)(number) $13*(number) $28 +Constant right-side identified [475] (byte*) sprites_init::sprites_ptr#0 ← (const byte*) sprites_init::SCREEN + (word) $3f8 +Constant right-side identified [479] (byte*~) sprites_init::$1 ← (const byte*) SPRITE / (byte) $40 +Constant right-side identified [488] (signed byte[9]) rotation_matrix ← { fill( 9, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (signed byte[8]) { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 } -Identified constant from value list (signed byte[8]) { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 } -Identified constant from value list (signed byte[8]) { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_screen#0 = (byte*) 1024 Constant (const byte) print_char_at::ch#0 = '-' Constant (const byte) print_char_at::ch#1 = ' ' Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const signed byte[8]) xs = { -$34, -$34, -$34, 0, 0, $34, $34, $34 } -Constant (const signed byte[8]) ys = { -$34, 0, $34, -$34, $34, -$34, 0, $34 } -Constant (const signed byte[8]) zs = { $34, $34, $34, $34, $34, $34, $34, $34 } Constant (const signed byte[8]) xrs = { fill( 8, 0) } Constant (const signed byte[8]) yrs = { fill( 8, 0) } Constant (const signed byte[8]) zrs = { fill( 8, 0) } @@ -2973,43 +2959,43 @@ Constant (const byte*) memset::dst#0 = (byte*)memset::str#0 Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -if() condition always true - replacing block destination [106] if(true) goto anim::@4 +if() condition always true - replacing block destination [103] if(true) goto anim::@4 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [147] anim::i#1 ← ++ anim::i#2 to ++ -Resolved ranged comparison value [149] if(anim::i#1!=rangelast(0,7)) goto anim::@22 to (number) 8 -Resolved ranged next value [279] debug_print_init::j#1 ← ++ debug_print_init::j#2 to ++ -Resolved ranged comparison value [281] if(debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 to (number) 4 -Resolved ranged next value [284] debug_print_init::i#1 ← ++ debug_print_init::i#2 to ++ -Resolved ranged comparison value [286] if(debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 to (number) 8 -Resolved ranged next value [473] debug_print::i#1 ← ++ debug_print::i#2 to ++ -Resolved ranged comparison value [475] if(debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 to (number) 8 -Resolved ranged next value [486] sprites_init::i#1 ← ++ sprites_init::i#2 to ++ -Resolved ranged comparison value [488] if(sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 to (number) 8 -Converting *(pointer+n) to pointer[n] [246] *((byte*~) debug_print_init::$42) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$41 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [250] *((byte*~) debug_print_init::$45) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$44 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [254] *((byte*~) debug_print_init::$48) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$47 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [258] *((byte*~) debug_print_init::$51) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$50 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [262] *((byte*~) debug_print_init::$54) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$53 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [266] *((byte*~) debug_print_init::$57) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$56 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [270] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$59 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [274] *((byte*~) debug_print_init::$63) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$62 + debug_print_init::j#2) -Converting *(pointer+n) to pointer[n] [278] *((byte*~) debug_print_init::$66) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$65 + debug_print_init::j#2) +Resolved ranged next value [144] anim::i#1 ← ++ anim::i#2 to ++ +Resolved ranged comparison value [146] if(anim::i#1!=rangelast(0,7)) goto anim::@22 to (number) 8 +Resolved ranged next value [276] debug_print_init::j#1 ← ++ debug_print_init::j#2 to ++ +Resolved ranged comparison value [278] if(debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 to (number) 4 +Resolved ranged next value [281] debug_print_init::i#1 ← ++ debug_print_init::i#2 to ++ +Resolved ranged comparison value [283] if(debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 to (number) 8 +Resolved ranged next value [470] debug_print::i#1 ← ++ debug_print::i#2 to ++ +Resolved ranged comparison value [472] if(debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 to (number) 8 +Resolved ranged next value [483] sprites_init::i#1 ← ++ sprites_init::i#2 to ++ +Resolved ranged comparison value [485] if(sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 to (number) 8 +Converting *(pointer+n) to pointer[n] [243] *((byte*~) debug_print_init::$42) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$41 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [247] *((byte*~) debug_print_init::$45) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$44 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [251] *((byte*~) debug_print_init::$48) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$47 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [255] *((byte*~) debug_print_init::$51) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$50 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [259] *((byte*~) debug_print_init::$54) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$53 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [263] *((byte*~) debug_print_init::$57) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$56 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [267] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$59 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [271] *((byte*~) debug_print_init::$63) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$62 + debug_print_init::j#2) +Converting *(pointer+n) to pointer[n] [275] *((byte*~) debug_print_init::$66) ← (byte) debug_print_init::col#0 -- *(debug_print_init::$65 + debug_print_init::j#2) Successful SSA optimization Pass2InlineDerefIdx Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in -Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [221] (byte*~) debug_print_init::$30 ← (const byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 0 -Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [243] (byte*~) debug_print_init::$40 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 0 -Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [436] (byte*~) debug_print::$13 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 0 +Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [218] (byte*~) debug_print_init::$30 ← (const byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 0 +Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [240] (byte*~) debug_print_init::$40 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 0 +Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [433] (byte*~) debug_print::$13 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 0 Successful SSA optimization PassNSimplifyConstantZero Simplifying expression containing zero SCREEN in -Simplifying expression containing zero debug_print_init::at_line#0 in [221] (byte*~) debug_print_init::$30 ← (const byte*) debug_print_init::at_line#0 + (byte) 0 -Simplifying expression containing zero debug_print_init::at_cols#0 in [243] (byte*~) debug_print_init::$40 ← (const byte*) debug_print_init::at_cols#0 + (byte) 0 -Simplifying expression containing zero rotation_matrix in [325] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix + (byte) 0) -Simplifying expression containing zero debug_print::at_line#0 in [436] (byte*~) debug_print::$13 ← (const byte*) debug_print::at_line#0 + (byte) 0 -Simplifying expression containing zero calculate_matrix::sy#0 in [493] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) calculate_matrix::sz#0 -Simplifying expression containing zero calculate_matrix::sy#0 in [495] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) calculate_matrix::sz#0 -Simplifying expression containing zero calculate_matrix::sx#0 in [497] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) calculate_matrix::sz#0 -Simplifying expression containing zero calculate_matrix::sx#0 in [499] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) calculate_matrix::sz#0 -Simplifying expression containing zero rotation_matrix in [514] *((const signed byte[9]) rotation_matrix + (byte) 0) ← (signed byte~) calculate_matrix::$10 +Simplifying expression containing zero debug_print_init::at_line#0 in [218] (byte*~) debug_print_init::$30 ← (const byte*) debug_print_init::at_line#0 + (byte) 0 +Simplifying expression containing zero debug_print_init::at_cols#0 in [240] (byte*~) debug_print_init::$40 ← (const byte*) debug_print_init::at_cols#0 + (byte) 0 +Simplifying expression containing zero rotation_matrix in [322] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix + (byte) 0) +Simplifying expression containing zero debug_print::at_line#0 in [433] (byte*~) debug_print::$13 ← (const byte*) debug_print::at_line#0 + (byte) 0 +Simplifying expression containing zero calculate_matrix::sy#0 in [490] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) calculate_matrix::sz#0 +Simplifying expression containing zero calculate_matrix::sy#0 in [492] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) calculate_matrix::sz#0 +Simplifying expression containing zero calculate_matrix::sx#0 in [494] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) calculate_matrix::sz#0 +Simplifying expression containing zero calculate_matrix::sx#0 in [496] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) calculate_matrix::sz#0 +Simplifying expression containing zero rotation_matrix in [511] *((const signed byte[9]) rotation_matrix + (byte) 0) ← (signed byte~) calculate_matrix::$10 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte*~) debug_print_init::$42 and assignment [115] (byte*~) debug_print_init::$42 ← (byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2 Eliminating unused variable (byte*~) debug_print_init::$45 and assignment [119] (byte*~) debug_print_init::$45 ← (byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2 diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.asm b/src/test/ref/examples/bresenham/bitmap-bresenham.asm index e3a4d5cc6..d40f663f4 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.asm +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.asm @@ -417,11 +417,11 @@ bitmap_init: { bne __b3 rts } + lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c + lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 - lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c - lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log index e9203a9eb..f9d30a251 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.log +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log @@ -30,6 +30,7 @@ Culled Empty Block (label) @10 Culled Empty Block (label) bitmap_line_ydxi::@4 Culled Empty Block (label) @11 Culled Empty Block (label) bitmap_line_ydxd::@4 +Culled Empty Block (label) @12 Culled Empty Block (label) main::@2 Culled Empty Block (label) @13 Culled Empty Block (label) lines::@4 @@ -51,7 +52,7 @@ CONTROL FLOW GRAPH SSA (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } - to:@12 + to:@15 (void()) bitmap_init((byte*) bitmap_init::bitmap) bitmap_init: scope:[bitmap_init] from main @@ -612,10 +613,6 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -@12: scope:[] from @4 - (byte[]) lines_x ← { (number) $3c, (number) $50, (number) $6e, (number) $50, (number) $3c, (number) $28, (number) $a, (number) $28, (number) $3c } - (byte[]) lines_y ← { (number) $a, (number) $28, (number) $3c, (number) $50, (number) $6e, (number) $50, (number) $3c, (number) $28, (number) $a } - to:@15 (void()) main() main: scope:[main] from @15 @@ -665,10 +662,10 @@ lines::@2: scope:[lines] from lines::@1 (byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 ) (number~) lines::$1 ← (byte) lines::l#3 + (number) 1 (number~) lines::$2 ← (byte) lines::l#3 + (number) 1 - (byte) bitmap_line::x0#0 ← *((byte[]) lines_x + (byte) lines::l#3) - (byte) bitmap_line::x1#0 ← *((byte[]) lines_x + (number~) lines::$1) - (byte) bitmap_line::y0#0 ← *((byte[]) lines_y + (byte) lines::l#3) - (byte) bitmap_line::y1#0 ← *((byte[]) lines_y + (number~) lines::$2) + (byte) bitmap_line::x0#0 ← *((const byte[]) lines_x + (byte) lines::l#3) + (byte) bitmap_line::x1#0 ← *((const byte[]) lines_x + (number~) lines::$1) + (byte) bitmap_line::y0#0 ← *((const byte[]) lines_y + (byte) lines::l#3) + (byte) bitmap_line::y1#0 ← *((const byte[]) lines_y + (number~) lines::$2) call bitmap_line to:lines::@7 lines::@7: scope:[lines] from lines::@2 @@ -696,7 +693,7 @@ init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@return: scope:[init_screen] from init_screen::@1 return to:@return -@15: scope:[] from @12 +@15: scope:[] from @4 call main to:@16 @16: scope:[] from @15 @@ -704,7 +701,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@1 @end: scope:[] from @16 SYMBOL TABLE SSA -(label) @12 (label) @15 (label) @16 (label) @4 @@ -1229,8 +1225,8 @@ SYMBOL TABLE SSA (byte) lines::l#3 (byte) lines::l#4 (const byte) lines_cnt = (byte) 8 -(byte[]) lines_x -(byte[]) lines_y +(const byte[]) lines_x = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c } +(const byte[]) lines_y = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a } (void()) main() (word~) main::$0 (number~) main::$1 @@ -1300,9 +1296,6 @@ Adding number conversion cast (unumber) lines::$2 in (number~) lines::$2 ← (by Adding number conversion cast (unumber) $400 in (bool~) init_screen::$0 ← (byte*) init_screen::c#2 != (const byte*) SCREEN+(number) $400 Adding number conversion cast (unumber) $14 in *((byte*) init_screen::c#3) ← (number) $14 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) lines_x ← (byte[]){ (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c } -Added casts to value list in (byte[]) lines_y ← (byte[]){ (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80 Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80 Inlining cast (byte*) bitmap_init::yoffs#0 ← (byte*)(number) 0 @@ -1323,6 +1316,24 @@ Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 +Simplifying constant integer cast $3c +Simplifying constant integer cast $50 +Simplifying constant integer cast $6e +Simplifying constant integer cast $50 +Simplifying constant integer cast $3c +Simplifying constant integer cast $28 +Simplifying constant integer cast $a +Simplifying constant integer cast $28 +Simplifying constant integer cast $3c +Simplifying constant integer cast $a +Simplifying constant integer cast $28 +Simplifying constant integer cast $3c +Simplifying constant integer cast $50 +Simplifying constant integer cast $6e +Simplifying constant integer cast $50 +Simplifying constant integer cast $3c +Simplifying constant integer cast $28 +Simplifying constant integer cast $a Simplifying constant integer cast $80 Simplifying constant integer cast $f8 Simplifying constant integer cast 1 @@ -1349,24 +1360,6 @@ Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 -Simplifying constant integer cast $3c -Simplifying constant integer cast $50 -Simplifying constant integer cast $6e -Simplifying constant integer cast $50 -Simplifying constant integer cast $3c -Simplifying constant integer cast $28 -Simplifying constant integer cast $a -Simplifying constant integer cast $28 -Simplifying constant integer cast $3c -Simplifying constant integer cast $a -Simplifying constant integer cast $28 -Simplifying constant integer cast $3c -Simplifying constant integer cast $50 -Simplifying constant integer cast $6e -Simplifying constant integer cast $50 -Simplifying constant integer cast $3c -Simplifying constant integer cast $28 -Simplifying constant integer cast $a Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3 @@ -1564,20 +1557,17 @@ Simple Condition (bool~) bitmap_line_ydxi::$4 [224] if((byte) bitmap_line_ydxi:: Simple Condition (bool~) bitmap_line_ydxi::$7 [228] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 Simple Condition (bool~) bitmap_line_ydxd::$4 [248] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 Simple Condition (bool~) bitmap_line_ydxd::$7 [252] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -Simple Condition (bool~) lines::$0 [282] if((byte) lines::l#2<(const byte) lines_cnt) goto lines::@2 -Simple Condition (bool~) init_screen::$0 [297] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 +Simple Condition (bool~) lines::$0 [280] if((byte) lines::l#2<(const byte) lines_cnt) goto lines::@2 +Simple Condition (bool~) init_screen::$0 [295] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [0] (byte[$100]) bitmap_plot_xlo ← { fill( $100, 0) } Constant right-side identified [1] (byte[$100]) bitmap_plot_xhi ← { fill( $100, 0) } Constant right-side identified [2] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } Constant right-side identified [3] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } Constant right-side identified [4] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } -Constant right-side identified [263] (word~) main::$0 ← (word)(const byte*) SCREEN -Constant right-side identified [266] (word~) main::$3 ← (word)(const byte*) BITMAP +Constant right-side identified [261] (word~) main::$0 ← (word)(const byte*) SCREEN +Constant right-side identified [264] (word~) main::$3 ← (word)(const byte*) BITMAP Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c } -Identified constant from value list (byte[]) { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte[$100]) bitmap_plot_xlo = { fill( $100, 0) } Constant (const byte[$100]) bitmap_plot_xhi = { fill( $100, 0) } Constant (const byte[$100]) bitmap_plot_ylo = { fill( $100, 0) } @@ -1592,15 +1582,13 @@ Constant (const byte) bitmap_clear::y#0 = 0 Constant (const byte) bitmap_clear::x#0 = 0 Constant (const byte) bitmap_line::xd#0 = 0 Constant (const byte) bitmap_line::yd#0 = 0 -Constant (const byte[]) lines_x = { $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c } -Constant (const byte[]) lines_y = { $a, $28, $3c, $50, $6e, $50, $3c, $28, $a } Constant (const word) main::$0 = (word)SCREEN Constant (const word) main::$3 = (word)BITMAP Constant (const byte*) bitmap_init::bitmap#0 = BITMAP Constant (const byte) lines::l#0 = 0 Constant (const byte*) init_screen::c#0 = SCREEN Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [277] if(true) goto main::@1 +if() condition always true - replacing block destination [275] if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [20] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ Resolved ranged comparison value [22] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 @@ -1710,7 +1698,6 @@ Added new block during phi lifting bitmap_line_ydxd::@6(between bitmap_line_ydxd Added new block during phi lifting bitmap_line_ydxd::@7(between bitmap_line_ydxd::@5 and bitmap_line_ydxd::@2) Adding NOP phi() at start of @begin Adding NOP phi() at start of @4 -Adding NOP phi() at start of @12 Adding NOP phi() at start of @15 Adding NOP phi() at start of @16 Adding NOP phi() at start of @end @@ -1733,121 +1720,120 @@ Adding NOP phi() at start of bitmap_init Adding NOP phi() at start of bitmap_init::@3 Adding NOP phi() at start of bitmap_init::@4 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to bitmap_init:11 bitmap_clear:13 init_screen:15 lines:18 -Calls in [lines] to bitmap_line:28 -Calls in [bitmap_line] to bitmap_line_ydxi:46 bitmap_line_xdyi:59 bitmap_line_ydxd:73 bitmap_line_xdyd:85 bitmap_line_ydxd:101 bitmap_line_xdyd:113 bitmap_line_ydxi:127 bitmap_line_xdyi:139 -Calls in [bitmap_line_xdyi] to bitmap_plot:151 -Calls in [bitmap_line_ydxi] to bitmap_plot:185 -Calls in [bitmap_line_xdyd] to bitmap_plot:212 -Calls in [bitmap_line_ydxd] to bitmap_plot:239 +Calls in [] to main:3 +Calls in [main] to bitmap_init:10 bitmap_clear:12 init_screen:14 lines:17 +Calls in [lines] to bitmap_line:27 +Calls in [bitmap_line] to bitmap_line_ydxi:45 bitmap_line_xdyi:58 bitmap_line_ydxd:72 bitmap_line_xdyd:84 bitmap_line_ydxd:100 bitmap_line_xdyd:112 bitmap_line_ydxi:126 bitmap_line_xdyi:138 +Calls in [bitmap_line_xdyi] to bitmap_plot:150 +Calls in [bitmap_line_ydxi] to bitmap_plot:184 +Calls in [bitmap_line_xdyd] to bitmap_plot:211 +Calls in [bitmap_line_ydxd] to bitmap_plot:238 Created 54 initial phi equivalence classes -Coalesced [30] lines::l#5 ← lines::l#1 -Coalesced [41] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#0 -Coalesced [42] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#0 -Coalesced [43] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#0 -Coalesced [44] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#0 -Coalesced [45] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#0 -Coalesced [54] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#0 -Coalesced [55] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#0 -Coalesced [56] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#0 -Coalesced [57] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#0 -Coalesced [58] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#0 -Coalesced [68] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 -Coalesced [69] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 -Coalesced [70] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 -Coalesced [71] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 -Coalesced [72] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 -Coalesced [80] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#0 -Coalesced [81] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 -Coalesced [82] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#0 -Coalesced [83] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#0 -Coalesced [84] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#0 -Coalesced [96] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 -Coalesced [97] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 -Coalesced [98] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 -Coalesced [99] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 -Coalesced [100] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 -Coalesced [108] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#1 -Coalesced [109] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#1 -Coalesced [110] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#1 -Coalesced [111] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#1 -Coalesced [112] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#1 -Coalesced [122] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#1 -Coalesced [123] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#1 -Coalesced [124] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#1 -Coalesced [125] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#1 -Coalesced [126] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#1 -Coalesced [134] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#1 -Coalesced [135] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#1 -Coalesced [136] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#1 -Coalesced [137] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#1 -Coalesced [138] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#1 -Coalesced [143] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 -Coalesced [144] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 -Coalesced [145] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 -Coalesced [149] bitmap_plot::x#6 ← bitmap_plot::x#0 -Coalesced [150] bitmap_plot::y#6 ← bitmap_plot::y#0 -Coalesced [157] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 -Coalesced [158] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 -Coalesced [163] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 -Coalesced [164] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 -Coalesced [165] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 -Coalesced (already) [166] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 -Coalesced [167] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 -Coalesced [177] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 -Coalesced [178] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 -Coalesced [179] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 -Coalesced [183] bitmap_plot::x#8 ← bitmap_plot::x#2 -Coalesced [184] bitmap_plot::y#8 ← bitmap_plot::y#2 -Coalesced [191] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 -Coalesced [192] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 -Coalesced [197] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 -Coalesced [198] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 -Coalesced [199] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 -Coalesced (already) [200] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 -Coalesced [201] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 -Coalesced [204] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 -Coalesced [205] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 -Coalesced [206] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 -Coalesced [210] bitmap_plot::x#5 ← bitmap_plot::x#1 -Coalesced [211] bitmap_plot::y#5 ← bitmap_plot::y#1 -Coalesced [218] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 -Coalesced [219] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 -Coalesced [224] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 -Coalesced [225] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 -Coalesced [226] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 -Coalesced (already) [227] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 -Coalesced [228] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 -Coalesced [231] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 -Coalesced [232] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 -Coalesced [233] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 -Coalesced [237] bitmap_plot::x#7 ← bitmap_plot::x#3 -Coalesced [238] bitmap_plot::y#7 ← bitmap_plot::y#3 -Coalesced [245] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 -Coalesced [246] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 -Coalesced [251] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 -Coalesced [252] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 -Coalesced [253] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 -Coalesced (already) [254] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 -Coalesced [255] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 -Coalesced [262] init_screen::c#4 ← init_screen::c#1 -Coalesced [266] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [275] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [276] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [277] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [278] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [301] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [306] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [307] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [308] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [309] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [310] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [311] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [29] lines::l#5 ← lines::l#1 +Coalesced [40] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#0 +Coalesced [41] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#0 +Coalesced [42] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#0 +Coalesced [43] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#0 +Coalesced [44] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#0 +Coalesced [53] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#0 +Coalesced [54] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#0 +Coalesced [55] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#0 +Coalesced [56] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#0 +Coalesced [57] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#0 +Coalesced [67] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 +Coalesced [68] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 +Coalesced [69] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 +Coalesced [70] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 +Coalesced [71] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 +Coalesced [79] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#0 +Coalesced [80] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 +Coalesced [81] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#0 +Coalesced [82] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#0 +Coalesced [83] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#0 +Coalesced [95] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 +Coalesced [96] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 +Coalesced [97] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 +Coalesced [98] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 +Coalesced [99] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 +Coalesced [107] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#1 +Coalesced [108] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#1 +Coalesced [109] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#1 +Coalesced [110] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#1 +Coalesced [111] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#1 +Coalesced [121] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#1 +Coalesced [122] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#1 +Coalesced [123] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#1 +Coalesced [124] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#1 +Coalesced [125] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#1 +Coalesced [133] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#1 +Coalesced [134] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#1 +Coalesced [135] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#1 +Coalesced [136] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#1 +Coalesced [137] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#1 +Coalesced [142] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 +Coalesced [143] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 +Coalesced [144] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 +Coalesced [148] bitmap_plot::x#6 ← bitmap_plot::x#0 +Coalesced [149] bitmap_plot::y#6 ← bitmap_plot::y#0 +Coalesced [156] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 +Coalesced [157] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 +Coalesced [162] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 +Coalesced [163] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 +Coalesced [164] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 +Coalesced (already) [165] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 +Coalesced [166] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 +Coalesced [176] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 +Coalesced [177] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 +Coalesced [178] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 +Coalesced [182] bitmap_plot::x#8 ← bitmap_plot::x#2 +Coalesced [183] bitmap_plot::y#8 ← bitmap_plot::y#2 +Coalesced [190] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 +Coalesced [191] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 +Coalesced [196] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 +Coalesced [197] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 +Coalesced [198] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 +Coalesced (already) [199] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 +Coalesced [200] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 +Coalesced [203] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 +Coalesced [204] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 +Coalesced [205] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 +Coalesced [209] bitmap_plot::x#5 ← bitmap_plot::x#1 +Coalesced [210] bitmap_plot::y#5 ← bitmap_plot::y#1 +Coalesced [217] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 +Coalesced [218] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 +Coalesced [223] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 +Coalesced [224] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 +Coalesced [225] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 +Coalesced (already) [226] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 +Coalesced [227] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 +Coalesced [230] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 +Coalesced [231] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 +Coalesced [232] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 +Coalesced [236] bitmap_plot::x#7 ← bitmap_plot::x#3 +Coalesced [237] bitmap_plot::y#7 ← bitmap_plot::y#3 +Coalesced [244] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 +Coalesced [245] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 +Coalesced [250] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 +Coalesced [251] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 +Coalesced [252] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 +Coalesced (already) [253] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 +Coalesced [254] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 +Coalesced [261] init_screen::c#4 ← init_screen::c#1 +Coalesced [265] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [274] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [275] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [276] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [277] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [300] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [305] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [306] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [307] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [308] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [309] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [310] bitmap_init::bits#6 ← bitmap_init::bits#1 Coalesced down to 35 phi equivalence classes Culled Empty Block (label) @4 -Culled Empty Block (label) @12 Culled Empty Block (label) @16 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@6 @@ -3772,14 +3758,14 @@ bitmap_init: { rts } // File Data + lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c + lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 - lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c - lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:65 [ bitmap_init::$7 ] has ALU potential. @@ -5077,14 +5063,14 @@ bitmap_init: { rts } // File Data + lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c + lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 - lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c - lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 @@ -6502,12 +6488,12 @@ bitmap_init: { rts } // File Data + lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c + lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 - lines_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28, $3c - lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a diff --git a/src/test/ref/examples/chargen/chargen-analysis.log b/src/test/ref/examples/chargen/chargen-analysis.log index 1c5bf8177..13b992bdf 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.log +++ b/src/test/ref/examples/chargen/chargen-analysis.log @@ -13,6 +13,7 @@ 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) keyboard_matrix_read::@1 Culled Empty Block (label) @11 @@ -37,7 +38,7 @@ Culled Empty Block (label) @18 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@9 + to:@19 (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) mul8u: scope:[mul8u] from plot_chargen::@1 @@ -87,16 +88,11 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (word) mul8u::return#1 ← (word) mul8u::return#3 return to:@return -@9: scope:[] from @begin - (byte[]) keyboard_char_keycodes ← { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (number) $3f, (const byte) KEY_POUND, (number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (number) $3f, (const byte) KEY_EQUALS, (number) $3f, (number) $3f } - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } - to:@19 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -122,7 +118,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 ) (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4 - (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) + (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3 to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2 @@ -134,7 +130,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) keyboard_get_keycode: scope:[keyboard_get_keycode] from main::@16 (byte) keyboard_get_keycode::ch#1 ← phi( main::@16/(byte) keyboard_get_keycode::ch#0 ) - (byte) keyboard_get_keycode::return#0 ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#1) + (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#1) to:keyboard_get_keycode::@return keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_keycode (byte) keyboard_get_keycode::return#3 ← phi( keyboard_get_keycode/(byte) keyboard_get_keycode::return#0 ) @@ -495,7 +491,7 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7 plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8 return to:@return -@19: scope:[] from @9 +@19: scope:[] from @begin call main to:@20 @20: scope:[] from @19 @@ -505,7 +501,6 @@ plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8 SYMBOL TABLE SSA (label) @19 (label) @20 -(label) @9 (label) @begin (label) @end (const byte*) CHARGEN = (byte*)(number) $d000 @@ -568,7 +563,7 @@ SYMBOL TABLE SSA (const byte) KEY_Z = (number) $c (const byte*) PROCPORT = (byte*)(number) 1 (const byte*) SCREEN = (byte*)(number) $400 -(byte[]) keyboard_char_keycodes +(const byte[]) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f } (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -616,7 +611,7 @@ SYMBOL TABLE SSA (byte) keyboard_key_pressed::return#9 (byte) keyboard_key_pressed::rowidx (byte) keyboard_key_pressed::rowidx#0 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -631,7 +626,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() (byte*~) main::$0 (byte*~) main::$11 @@ -984,10 +979,6 @@ Adding number conversion cast (unumber) plot_chargen::$13 in (number~) plot_char Adding number conversion cast (unumber) $20 in (byte*~) plot_chargen::$15 ← (byte*) plot_chargen::sc#4 + (number) $20 Adding number conversion cast (unumber) $37 in *((const byte*) PROCPORT) ← (number) $37 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) keyboard_char_keycodes ← (byte[]){ (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f } -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 Inlining cast (byte) plot_chargen::ch#0 ← (unumber)(number) $20 Inlining cast (byte) plot_chargen::shift#0 ← (unumber)(number) 0 @@ -1009,13 +1000,6 @@ Simplifying constant pointer cast (byte*) 1 Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 56320 Simplifying constant pointer cast (byte*) 56321 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 Simplifying constant integer cast $3f Simplifying constant integer cast $3f Simplifying constant integer cast $3f @@ -1046,6 +1030,13 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 Simplifying constant integer cast 7 Simplifying constant integer cast 3 Simplifying constant integer cast $3e8 @@ -1142,14 +1133,14 @@ Inferred type updated to word in (unumber~) plot_chargen::$1 ← (word~) plot_ch Inferred type updated to byte in (unumber~) plot_chargen::$10 ← (byte) plot_chargen::bits#2 & (byte) $80 Inferred type updated to byte in (unumber~) plot_chargen::$13 ← (byte) plot_chargen::bits#3 * (byte) 2 Inversing boolean not [9] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [8] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0 -Inversing boolean not [101] (bool~) main::$17 ← (byte~) main::$15 == (byte) 0 from [100] (bool~) main::$16 ← (byte~) main::$15 != (byte) 0 -Inversing boolean not [110] (bool~) main::$20 ← (byte~) main::$18 == (byte) 0 from [109] (bool~) main::$19 ← (byte~) main::$18 != (byte) 0 -Inversing boolean not [120] (bool~) main::$23 ← (byte~) main::$21 == (byte) 0 from [119] (bool~) main::$22 ← (byte~) main::$21 != (byte) 0 -Inversing boolean not [130] (bool~) main::$26 ← (byte~) main::$24 == (byte) 0 from [129] (bool~) main::$25 ← (byte~) main::$24 != (byte) 0 -Inversing boolean not [157] (bool~) main::$31 ← (byte) main::key#0 == (byte) $3f from [156] (bool~) main::$30 ← (byte) main::key#0 != (byte) $3f -Inversing boolean not [161] (bool~) main::$34 ← (byte) main::pressed#2 == (byte) 0 from [160] (bool~) main::$33 ← (byte) main::pressed#2 != (byte) 0 -Inversing boolean not [199] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte) 0 from [198] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte) 0 -Inversing boolean not [224] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte) 0 from [223] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte) 0 +Inversing boolean not [98] (bool~) main::$17 ← (byte~) main::$15 == (byte) 0 from [97] (bool~) main::$16 ← (byte~) main::$15 != (byte) 0 +Inversing boolean not [107] (bool~) main::$20 ← (byte~) main::$18 == (byte) 0 from [106] (bool~) main::$19 ← (byte~) main::$18 != (byte) 0 +Inversing boolean not [117] (bool~) main::$23 ← (byte~) main::$21 == (byte) 0 from [116] (bool~) main::$22 ← (byte~) main::$21 != (byte) 0 +Inversing boolean not [127] (bool~) main::$26 ← (byte~) main::$24 == (byte) 0 from [126] (bool~) main::$25 ← (byte~) main::$24 != (byte) 0 +Inversing boolean not [154] (bool~) main::$31 ← (byte) main::key#0 == (byte) $3f from [153] (bool~) main::$30 ← (byte) main::key#0 != (byte) $3f +Inversing boolean not [158] (bool~) main::$34 ← (byte) main::pressed#2 == (byte) 0 from [157] (bool~) main::$33 ← (byte) main::pressed#2 != (byte) 0 +Inversing boolean not [196] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte) 0 from [195] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte) 0 +Inversing boolean not [221] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte) 0 from [220] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) mul8u::mb#0 = (byte) mul8u::b#1 Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 @@ -1237,37 +1228,30 @@ Identical Phi Values (byte*) plot_chargen::chargen#3 (byte*) plot_chargen::charg Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) mul8u::$0 [5] if((byte) mul8u::a#2!=(byte) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [10] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 -Simple Condition (bool~) main::$12 [59] if((byte*) main::sc#2<(byte*~) main::$11) goto main::@2 -Simple Condition (bool~) main::$14 [91] if((byte) main::i#1!=rangelast(0,3)) goto main::@7 -Simple Condition (bool~) main::$17 [102] if((byte~) main::$15==(byte) 0) goto main::@10 -Simple Condition (bool~) main::$20 [111] if((byte~) main::$18==(byte) 0) goto main::@11 -Simple Condition (bool~) main::$23 [121] if((byte~) main::$21==(byte) 0) goto main::@12 -Simple Condition (bool~) main::$26 [131] if((byte~) main::$24==(byte) 0) goto main::@13 -Simple Condition (bool~) main::$28 [140] if((byte~) main::$27!=(byte) 0) goto main::@14 -Simple Condition (bool~) main::$31 [158] if((byte) main::key#0==(byte) $3f) goto main::@17 -Simple Condition (bool~) main::$34 [162] if((byte) main::pressed#2==(byte) 0) goto main::@18 -Simple Condition (bool~) main::$36 [173] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@16 -Simple Condition (bool~) print_str_at::$0 [186] if((byte) 0!=*((byte*) print_str_at::str#5)) goto print_str_at::@2 -Simple Condition (bool~) plot_chargen::$4 [200] if((byte) plot_chargen::shift#2==(byte) 0) goto plot_chargen::@1 -Simple Condition (bool~) plot_chargen::$12 [225] if((byte~) plot_chargen::$10==(byte) 0) goto plot_chargen::@5 -Simple Condition (bool~) plot_chargen::$14 [233] if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@4 -Simple Condition (bool~) plot_chargen::$16 [241] if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@3 +Simple Condition (bool~) main::$12 [56] if((byte*) main::sc#2<(byte*~) main::$11) goto main::@2 +Simple Condition (bool~) main::$14 [88] if((byte) main::i#1!=rangelast(0,3)) goto main::@7 +Simple Condition (bool~) main::$17 [99] if((byte~) main::$15==(byte) 0) goto main::@10 +Simple Condition (bool~) main::$20 [108] if((byte~) main::$18==(byte) 0) goto main::@11 +Simple Condition (bool~) main::$23 [118] if((byte~) main::$21==(byte) 0) goto main::@12 +Simple Condition (bool~) main::$26 [128] if((byte~) main::$24==(byte) 0) goto main::@13 +Simple Condition (bool~) main::$28 [137] if((byte~) main::$27!=(byte) 0) goto main::@14 +Simple Condition (bool~) main::$31 [155] if((byte) main::key#0==(byte) $3f) goto main::@17 +Simple Condition (bool~) main::$34 [159] if((byte) main::pressed#2==(byte) 0) goto main::@18 +Simple Condition (bool~) main::$36 [170] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@16 +Simple Condition (bool~) print_str_at::$0 [183] if((byte) 0!=*((byte*) print_str_at::str#5)) goto print_str_at::@2 +Simple Condition (bool~) plot_chargen::$4 [197] if((byte) plot_chargen::shift#2==(byte) 0) goto plot_chargen::@1 +Simple Condition (bool~) plot_chargen::$12 [222] if((byte~) plot_chargen::$10==(byte) 0) goto plot_chargen::@5 +Simple Condition (bool~) plot_chargen::$14 [230] if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@4 +Simple Condition (bool~) plot_chargen::$16 [238] if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [57] (byte*~) main::$11 ← (const byte*) SCREEN + (word) $3e8 -Constant right-side identified [63] (byte*) print_str_at::at#0 ← (const byte*) SCREEN + (byte) 1 -Constant right-side identified [67] (byte*~) main::$2 ← (const byte*) SCREEN + (byte) 1 -Constant right-side identified [72] (byte*~) main::$5 ← (const byte*) SCREEN + (byte) 1 -Constant right-side identified [77] (byte*~) main::$8 ← (const byte*) SCREEN + (byte) 1 -Constant right-side identified [203] (byte*~) plot_chargen::$5 ← (const byte*) SCREEN + (byte) $28 +Constant right-side identified [54] (byte*~) main::$11 ← (const byte*) SCREEN + (word) $3e8 +Constant right-side identified [60] (byte*) print_str_at::at#0 ← (const byte*) SCREEN + (byte) 1 +Constant right-side identified [64] (byte*~) main::$2 ← (const byte*) SCREEN + (byte) 1 +Constant right-side identified [69] (byte*~) main::$5 ← (const byte*) SCREEN + (byte) 1 +Constant right-side identified [74] (byte*~) main::$8 ← (const byte*) SCREEN + (byte) 1 +Constant right-side identified [200] (byte*~) plot_chargen::$5 ← (const byte*) SCREEN + (byte) $28 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f } -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const word) mul8u::res#0 = 0 -Constant (const byte[]) keyboard_char_keycodes = { KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f } -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte*) main::sc#0 = SCREEN Constant (const byte*) main::$11 = SCREEN+$3e8 Constant (const byte*) print_str_at::at#0 = SCREEN+1 @@ -1303,16 +1287,16 @@ Constant (const byte) plot_chargen::x#0 = 0 Constant (const byte) plot_chargen::c#0 = '.' Constant (const byte) plot_chargen::c#1 = '*' Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [181] if(true) goto main::@9 +if() condition always true - replacing block destination [178] if(true) goto main::@9 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [89] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [91] if(main::i#1!=rangelast(0,3)) goto main::@7 to (number) 4 -Resolved ranged next value [171] main::ch#1 ← ++ main::ch#2 to ++ -Resolved ranged comparison value [173] if(main::ch#1!=rangelast(0,$3f)) goto main::@16 to (number) $40 -Resolved ranged next value [231] plot_chargen::x#1 ← ++ plot_chargen::x#2 to ++ -Resolved ranged comparison value [233] if(plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@4 to (number) 8 -Resolved ranged next value [239] plot_chargen::y#1 ← ++ plot_chargen::y#2 to ++ -Resolved ranged comparison value [241] if(plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@3 to (number) 8 +Resolved ranged next value [86] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [88] if(main::i#1!=rangelast(0,3)) goto main::@7 to (number) 4 +Resolved ranged next value [168] main::ch#1 ← ++ main::ch#2 to ++ +Resolved ranged comparison value [170] if(main::ch#1!=rangelast(0,$3f)) goto main::@16 to (number) $40 +Resolved ranged next value [228] plot_chargen::x#1 ← ++ plot_chargen::x#2 to ++ +Resolved ranged comparison value [230] if(plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@4 to (number) 8 +Resolved ranged next value [236] plot_chargen::y#1 ← ++ plot_chargen::y#2 to ++ +Resolved ranged comparison value [238] if(plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@3 to (number) 8 Eliminating unused constant (const byte) main::shift#0 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -1425,7 +1409,6 @@ Added new block during phi lifting plot_chargen::@10(between plot_chargen and pl Added new block during phi lifting plot_chargen::@11(between plot_chargen::@7 and plot_chargen::@3) Added new block during phi lifting plot_chargen::@12(between plot_chargen::@5 and plot_chargen::@4) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @9 Adding NOP phi() at start of @19 Adding NOP phi() at start of @20 Adding NOP phi() at start of @end @@ -1446,48 +1429,47 @@ Adding NOP phi() at start of main::@14 Adding NOP phi() at start of plot_chargen::@6 Adding NOP phi() at start of mul8u::@3 CALL GRAPH -Calls in [] to main:3 -Calls in [main] to print_str_at:10 print_str_at:12 print_str_at:14 print_str_at:16 plot_chargen:21 keyboard_key_pressed:26 keyboard_key_pressed:32 keyboard_key_pressed:38 keyboard_key_pressed:44 keyboard_key_pressed:50 keyboard_get_keycode:58 keyboard_key_pressed:64 plot_chargen:76 -Calls in [plot_chargen] to mul8u:102 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:153 +Calls in [] to main:2 +Calls in [main] to print_str_at:9 print_str_at:11 print_str_at:13 print_str_at:15 plot_chargen:20 keyboard_key_pressed:25 keyboard_key_pressed:31 keyboard_key_pressed:37 keyboard_key_pressed:43 keyboard_key_pressed:49 keyboard_get_keycode:57 keyboard_key_pressed:63 plot_chargen:75 +Calls in [plot_chargen] to mul8u:101 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:152 Created 29 initial phi equivalence classes -Coalesced [20] plot_chargen::pos#6 ← plot_chargen::pos#0 -Coalesced [63] keyboard_key_pressed::key#7 ← keyboard_key_pressed::key#5 -Coalesced [67] main::pressed#4 ← main::pressed#1 -Coalesced [73] plot_chargen::ch#3 ← plot_chargen::ch#1 -Coalesced [74] plot_chargen::shift#3 ← plot_chargen::shift#1 -Coalesced [75] plot_chargen::pos#5 ← plot_chargen::pos#1 -Coalesced [80] main::cur_pos#27 ← main::cur_pos#11 -Coalesced [81] main::ch#10 ← main::ch#1 -Coalesced [83] main::cur_pos#31 ← main::cur_pos#18 -Coalesced [84] main::cur_pos#30 ← main::cur_pos#20 -Coalesced [85] main::cur_pos#29 ← main::cur_pos#22 -Coalesced (already) [86] main::cur_pos#28 ← main::cur_pos#24 -Coalesced [87] main::i#4 ← main::i#1 -Coalesced [90] main::sc#4 ← main::sc#1 -Coalesced [98] plot_chargen::chargen#11 ← plot_chargen::chargen#1 -Coalesced [106] plot_chargen::sc#9 ← plot_chargen::sc#0 -Coalesced [109] plot_chargen::bits#5 ← plot_chargen::bits#0 -Coalesced [110] plot_chargen::sc#10 ← plot_chargen::sc#7 -Coalesced [127] plot_chargen::y#7 ← plot_chargen::y#1 -Coalesced [128] plot_chargen::sc#8 ← plot_chargen::sc#2 -Coalesced [129] plot_chargen::bits#6 ← plot_chargen::bits#1 -Coalesced [130] plot_chargen::sc#11 ← plot_chargen::sc#1 -Coalesced [131] plot_chargen::x#5 ← plot_chargen::x#1 -Coalesced [132] plot_chargen::chargen#10 ← plot_chargen::chargen#0 -Coalesced [133] mul8u::a#7 ← mul8u::a#1 -Coalesced [141] mul8u::res#9 ← mul8u::res#1 -Coalesced [145] mul8u::a#8 ← mul8u::a#0 -Coalesced [146] mul8u::res#7 ← mul8u::res#6 -Coalesced [147] mul8u::mb#6 ← mul8u::mb#1 -Coalesced (already) [148] mul8u::res#8 ← mul8u::res#2 -Coalesced [164] print_str_at::str#8 ← print_str_at::str#7 -Coalesced [165] print_str_at::at#8 ← print_str_at::at#7 -Coalesced [172] print_str_at::str#9 ← print_str_at::str#4 -Coalesced [173] print_str_at::at#9 ← print_str_at::at#4 +Coalesced [19] plot_chargen::pos#6 ← plot_chargen::pos#0 +Coalesced [62] keyboard_key_pressed::key#7 ← keyboard_key_pressed::key#5 +Coalesced [66] main::pressed#4 ← main::pressed#1 +Coalesced [72] plot_chargen::ch#3 ← plot_chargen::ch#1 +Coalesced [73] plot_chargen::shift#3 ← plot_chargen::shift#1 +Coalesced [74] plot_chargen::pos#5 ← plot_chargen::pos#1 +Coalesced [79] main::cur_pos#27 ← main::cur_pos#11 +Coalesced [80] main::ch#10 ← main::ch#1 +Coalesced [82] main::cur_pos#31 ← main::cur_pos#18 +Coalesced [83] main::cur_pos#30 ← main::cur_pos#20 +Coalesced [84] main::cur_pos#29 ← main::cur_pos#22 +Coalesced (already) [85] main::cur_pos#28 ← main::cur_pos#24 +Coalesced [86] main::i#4 ← main::i#1 +Coalesced [89] main::sc#4 ← main::sc#1 +Coalesced [97] plot_chargen::chargen#11 ← plot_chargen::chargen#1 +Coalesced [105] plot_chargen::sc#9 ← plot_chargen::sc#0 +Coalesced [108] plot_chargen::bits#5 ← plot_chargen::bits#0 +Coalesced [109] plot_chargen::sc#10 ← plot_chargen::sc#7 +Coalesced [126] plot_chargen::y#7 ← plot_chargen::y#1 +Coalesced [127] plot_chargen::sc#8 ← plot_chargen::sc#2 +Coalesced [128] plot_chargen::bits#6 ← plot_chargen::bits#1 +Coalesced [129] plot_chargen::sc#11 ← plot_chargen::sc#1 +Coalesced [130] plot_chargen::x#5 ← plot_chargen::x#1 +Coalesced [131] plot_chargen::chargen#10 ← plot_chargen::chargen#0 +Coalesced [132] mul8u::a#7 ← mul8u::a#1 +Coalesced [140] mul8u::res#9 ← mul8u::res#1 +Coalesced [144] mul8u::a#8 ← mul8u::a#0 +Coalesced [145] mul8u::res#7 ← mul8u::res#6 +Coalesced [146] mul8u::mb#6 ← mul8u::mb#1 +Coalesced (already) [147] mul8u::res#8 ← mul8u::res#2 +Coalesced [163] print_str_at::str#8 ← print_str_at::str#7 +Coalesced [164] print_str_at::at#8 ← print_str_at::at#7 +Coalesced [171] print_str_at::str#9 ← print_str_at::str#4 +Coalesced [172] print_str_at::at#9 ← print_str_at::at#4 Coalesced down to 21 phi equivalence classes -Culled Empty Block (label) @9 Culled Empty Block (label) @20 Culled Empty Block (label) main::@32 Culled Empty Block (label) main::@8 diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.log b/src/test/ref/examples/fastmultiply/fastmultiply8.log index dfd659bf1..19ad82a51 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.log +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.log @@ -56,6 +56,7 @@ 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) main::@6 Culled Empty Block (label) @37 Culled Empty Block (label) init_screen::@4 @@ -111,7 +112,7 @@ memset::@return: scope:[memset] from memset::@1 to:@return @12: scope:[] from @begin (byte*) print_screen#0 ← ((byte*)) (number) $400 - to:@36 + to:@39 (void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at) print_sbyte_at: scope:[print_sbyte_at] from main::@1 main::@10 main::@3 @@ -207,10 +208,6 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@return: scope:[print_cls] from print_cls::@1 return to:@return -@36: scope:[] from @12 - (byte*) print_screen#5 ← phi( @12/(byte*) print_screen#0 ) - (signed byte[]) vals ← { (number) -$5f, (number) -$40, (number) -$20, (number) -$10, (number) 0, (number) $10, (number) $20, (number) $40, (number) $5f } - to:@39 (void()) main() main: scope:[main] from @39 @@ -227,7 +224,7 @@ main::@1: scope:[main] from main::@7 main::@8 (byte*) main::at_line#7 ← phi( main::@7/(byte*) main::at_line#0 main::@8/(byte*) main::at_line#5 ) (byte*) main::at#4 ← phi( main::@7/(byte*) main::at#0 main::@8/(byte*) main::at#1 ) (byte) main::k#2 ← phi( main::@7/(byte) main::k#0 main::@8/(byte) main::k#1 ) - (signed byte) print_sbyte_at::b#1 ← *((signed byte[]) vals + (byte) main::k#2) + (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals + (byte) main::k#2) (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 call print_sbyte_at to:main::@8 @@ -249,7 +246,7 @@ main::@3: scope:[main] from main::@2 main::@5 (byte*) main::at_line#2 ← phi( main::@2/(byte*) main::at_line#3 main::@5/(byte*) main::at_line#4 ) (byte*) main::at_line#1 ← (byte*) main::at_line#2 + (number) $28 (byte*) main::at#2 ← (byte*) main::at_line#1 - (signed byte) print_sbyte_at::b#2 ← *((signed byte[]) vals + (byte) main::i#2) + (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals + (byte) main::i#2) (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 call print_sbyte_at to:main::@9 @@ -265,8 +262,8 @@ main::@4: scope:[main] from main::@11 main::@9 (byte) main::i#3 ← phi( main::@11/(byte) main::i#5 main::@9/(byte) main::i#6 ) (byte*) main::at#6 ← phi( main::@11/(byte*) main::at#8 main::@9/(byte*) main::at#9 ) (byte*) main::at#3 ← (byte*) main::at#6 + (number) 4 - (signed byte) fmul8::a#0 ← *((signed byte[]) vals + (byte) main::i#3) - (signed byte) fmul8::b#0 ← *((signed byte[]) vals + (byte) main::j#2) + (signed byte) fmul8::a#0 ← *((const signed byte[]) vals + (byte) main::i#3) + (signed byte) fmul8::b#0 ← *((const signed byte[]) vals + (byte) main::j#2) call fmul8 (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#2 to:main::@10 @@ -353,8 +350,8 @@ fmul8::@return: scope:[fmul8] from fmul8 (signed byte) fmul8::return#2 ← (signed byte) fmul8::return#4 return to:@return -@39: scope:[] from @36 - (byte*) print_screen#4 ← phi( @36/(byte*) print_screen#5 ) +@39: scope:[] from @12 + (byte*) print_screen#4 ← phi( @12/(byte*) print_screen#0 ) (byte[$200]) mulf_sqr1 ← kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } @@ -375,7 +372,6 @@ fmul8::@return: scope:[fmul8] from fmul8 SYMBOL TABLE SSA (label) @12 -(label) @36 (label) @39 (label) @40 (label) @begin @@ -602,8 +598,7 @@ SYMBOL TABLE SSA (byte*) print_screen#2 (byte*) print_screen#3 (byte*) print_screen#4 -(byte*) print_screen#5 -(signed byte[]) vals +(const signed byte[]) vals = { (signed byte)(number) -$5f, (signed byte)(number) -$40, (signed byte)(number) -$20, (signed byte)(number) -$10, (signed byte)(number) 0, (signed byte)(number) $10, (signed byte)(number) $20, (signed byte)(number) $40, (signed byte)(number) $5f } Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (snumber) 0 in (bool~) print_sbyte_at::$0 ← (signed byte) print_sbyte_at::b#4 < (number) 0 @@ -623,8 +618,6 @@ Adding number conversion cast (unumber) 2 in *((byte*) init_screen::COLS#3 + (nu Adding number conversion cast (unumber) 3 in *((byte*) init_screen::COLS#3 + (number) 3) ← (const byte) init_screen::WHITE Adding number conversion cast (unumber) $28 in (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (number) $28 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed byte[]) vals ← (signed byte[]){ (signed byte)(number) -$5f, (signed byte)(number) -$40, (signed byte)(number) -$20, (signed byte)(number) -$10, (signed byte)(number) 0, (signed byte)(number) $10, (signed byte)(number) $20, (signed byte)(number) $40, (signed byte)(number) $5f } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -633,6 +626,15 @@ Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8 Inlining cast (byte*) main::at_line#0 ← (byte*)(number) $400 Inlining cast (byte*) init_screen::COLS#0 ← (byte*)(number) $d800 Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast -$5f +Simplifying constant integer cast -$40 +Simplifying constant integer cast -$20 +Simplifying constant integer cast -$10 +Simplifying constant integer cast 0 +Simplifying constant integer cast $10 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $5f Simplifying constant pointer cast (signed byte*) 253 Simplifying constant pointer cast (signed byte*) 254 Simplifying constant pointer cast (signed byte*) 255 @@ -644,15 +646,6 @@ Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast 1 Simplifying constant integer cast $3e8 -Simplifying constant integer cast -$5f -Simplifying constant integer cast -$40 -Simplifying constant integer cast -$20 -Simplifying constant integer cast -$10 -Simplifying constant integer cast 0 -Simplifying constant integer cast $10 -Simplifying constant integer cast $20 -Simplifying constant integer cast $40 -Simplifying constant integer cast $5f Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 4 Simplifying constant integer cast 4 @@ -702,7 +695,6 @@ Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$2 Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2 Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2 Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3 -Alias (byte*) print_screen#0 = (byte*) print_screen#5 (byte*) print_screen#4 Alias (byte*) main::at#0 = (byte*~) main::$1 Alias (byte*) main::at#4 = (byte*) main::at#5 Alias (byte) main::k#2 = (byte) main::k#3 @@ -717,6 +709,7 @@ Alias (byte*) main::at_line#4 = (byte*) main::at_line#8 (byte*) main::at_line#9 Alias (signed byte) main::r#0 = (signed byte~) main::$5 Alias (byte*) init_screen::COLS#2 = (byte*) init_screen::COLS#4 Alias (signed byte) fmul8::return#1 = (signed byte) fmul8::return#4 (signed byte) fmul8::return#2 +Alias (byte*) print_screen#0 = (byte*) print_screen#4 Successful SSA optimization Pass2AliasElimination Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#5 Successful SSA optimization Pass2AliasElimination @@ -743,20 +736,17 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto memset::@1 Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_sbyte_at::$0 [23] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -Simple Condition (bool~) main::$3 [81] if((byte) main::k#1!=rangelast(0,8)) goto main::@1 -Simple Condition (bool~) main::$7 [107] if((byte) main::j#1!=rangelast(0,8)) goto main::@4 -Simple Condition (bool~) main::$8 [111] if((byte) main::i#1!=rangelast(0,8)) goto main::@3 -Simple Condition (bool~) init_screen::$1 [121] if((byte) init_screen::l#1!=rangelast(0,$27)) goto init_screen::@1 -Simple Condition (bool~) init_screen::$2 [132] if((byte) init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3 +Simple Condition (bool~) main::$3 [79] if((byte) main::k#1!=rangelast(0,8)) goto main::@1 +Simple Condition (bool~) main::$7 [105] if((byte) main::j#1!=rangelast(0,8)) goto main::@4 +Simple Condition (bool~) main::$8 [109] if((byte) main::i#1!=rangelast(0,8)) goto main::@3 +Simple Condition (bool~) init_screen::$1 [119] if((byte) init_screen::l#1!=rangelast(0,$27)) goto init_screen::@1 +Simple Condition (bool~) init_screen::$2 [130] if((byte) init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (signed byte[]) { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_screen#0 = (byte*) 1024 Constant (const byte) print_char_at::ch#0 = '-' Constant (const byte) print_char_at::ch#1 = ' ' Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const signed byte[]) vals = { -$5f, -$40, -$20, -$10, 0, $10, $20, $40, $5f } Constant (const byte*) main::at_line#0 = (byte*) 1024 Constant (const byte) main::k#0 = 0 Constant (const byte) main::i#0 = 0 @@ -785,17 +775,17 @@ Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [79] main::k#1 ← ++ main::k#2 to ++ -Resolved ranged comparison value [81] if(main::k#1!=rangelast(0,8)) goto main::@1 to (number) 9 -Resolved ranged next value [105] main::j#1 ← ++ main::j#2 to ++ -Resolved ranged comparison value [107] if(main::j#1!=rangelast(0,8)) goto main::@4 to (number) 9 -Resolved ranged next value [109] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [111] if(main::i#1!=rangelast(0,8)) goto main::@3 to (number) 9 -Resolved ranged next value [119] init_screen::l#1 ← ++ init_screen::l#2 to ++ -Resolved ranged comparison value [121] if(init_screen::l#1!=rangelast(0,$27)) goto init_screen::@1 to (number) $28 -Resolved ranged next value [130] init_screen::m#1 ← ++ init_screen::m#2 to ++ -Resolved ranged comparison value [132] if(init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3 to (number) $19 -Simplifying expression containing zero init_screen::COLS#3 in [125] *((byte*) init_screen::COLS#3 + (byte) 0) ← (const byte) init_screen::WHITE +Resolved ranged next value [77] main::k#1 ← ++ main::k#2 to ++ +Resolved ranged comparison value [79] if(main::k#1!=rangelast(0,8)) goto main::@1 to (number) 9 +Resolved ranged next value [103] main::j#1 ← ++ main::j#2 to ++ +Resolved ranged comparison value [105] if(main::j#1!=rangelast(0,8)) goto main::@4 to (number) 9 +Resolved ranged next value [107] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [109] if(main::i#1!=rangelast(0,8)) goto main::@3 to (number) 9 +Resolved ranged next value [117] init_screen::l#1 ← ++ init_screen::l#2 to ++ +Resolved ranged comparison value [119] if(init_screen::l#1!=rangelast(0,$27)) goto init_screen::@1 to (number) $28 +Resolved ranged next value [128] init_screen::m#1 ← ++ init_screen::m#2 to ++ +Resolved ranged comparison value [130] if(init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3 to (number) $19 +Simplifying expression containing zero init_screen::COLS#3 in [123] *((byte*) init_screen::COLS#3 + (byte) 0) ← (const byte) init_screen::WHITE Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars @@ -854,7 +844,6 @@ Added new block during phi lifting init_screen::@6(between init_screen::@1 and i Added new block during phi lifting init_screen::@7(between init_screen::@3 and init_screen::@3) Adding NOP phi() at start of @begin Adding NOP phi() at start of @12 -Adding NOP phi() at start of @36 Adding NOP phi() at start of @39 Adding NOP phi() at start of @40 Adding NOP phi() at start of @end @@ -872,42 +861,41 @@ Adding NOP phi() at start of memset Adding NOP phi() at start of memset::@2 Adding NOP phi() at start of memset::@1 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to init_screen:8 print_sbyte_at:15 print_sbyte_at:26 fmul8:32 print_sbyte_at:39 -Calls in [print_sbyte_at] to print_char_at:55 print_byte_at:60 print_char_at:65 -Calls in [print_byte_at] to print_char_at:76 print_char_at:82 -Calls in [init_screen] to print_cls:91 -Calls in [print_cls] to memset:111 +Calls in [] to main:3 +Calls in [main] to init_screen:7 print_sbyte_at:14 print_sbyte_at:25 fmul8:31 print_sbyte_at:38 +Calls in [print_sbyte_at] to print_char_at:54 print_byte_at:59 print_char_at:64 +Calls in [print_byte_at] to print_char_at:75 print_char_at:81 +Calls in [init_screen] to print_cls:90 +Calls in [print_cls] to memset:110 Created 15 initial phi equivalence classes -Coalesced [13] print_sbyte_at::b#10 ← print_sbyte_at::b#1 -Coalesced [14] print_sbyte_at::at#9 ← print_sbyte_at::at#0 -Coalesced [24] print_sbyte_at::b#12 ← print_sbyte_at::b#2 -Coalesced [25] print_sbyte_at::at#11 ← print_sbyte_at::at#1 -Not coalescing [27] main::at#12 ← main::at#2 -Coalesced [37] print_sbyte_at::b#11 ← print_sbyte_at::b#3 -Coalesced [38] print_sbyte_at::at#10 ← print_sbyte_at::at#2 -Coalesced [45] main::at_line#11 ← main::at#2 -Coalesced [46] main::i#8 ← main::i#1 -Coalesced [47] main::at#11 ← main::at#3 -Coalesced [48] main::j#5 ← main::j#1 -Coalesced [49] main::k#4 ← main::k#1 -Coalesced [50] main::at#10 ← main::at#1 -Coalesced [54] print_char_at::at#8 ← print_char_at::at#1 -Coalesced [56] print_sbyte_at::b#14 ← print_sbyte_at::b#4 -Coalesced [64] print_char_at::at#7 ← print_char_at::at#0 -Coalesced [67] print_sbyte_at::b#13 ← print_sbyte_at::b#0 -Coalesced [74] print_char_at::ch#5 ← print_char_at::ch#2 -Coalesced [75] print_char_at::at#5 ← print_char_at::at#2 -Coalesced [80] print_char_at::ch#6 ← print_char_at::ch#3 -Coalesced [81] print_char_at::at#6 ← print_char_at::at#3 -Coalesced [107] init_screen::COLS#5 ← init_screen::COLS#1 -Coalesced [108] init_screen::m#3 ← init_screen::m#1 -Coalesced [109] init_screen::l#3 ← init_screen::l#1 -Coalesced [122] memset::dst#4 ← memset::dst#1 +Coalesced [12] print_sbyte_at::b#10 ← print_sbyte_at::b#1 +Coalesced [13] print_sbyte_at::at#9 ← print_sbyte_at::at#0 +Coalesced [23] print_sbyte_at::b#12 ← print_sbyte_at::b#2 +Coalesced [24] print_sbyte_at::at#11 ← print_sbyte_at::at#1 +Not coalescing [26] main::at#12 ← main::at#2 +Coalesced [36] print_sbyte_at::b#11 ← print_sbyte_at::b#3 +Coalesced [37] print_sbyte_at::at#10 ← print_sbyte_at::at#2 +Coalesced [44] main::at_line#11 ← main::at#2 +Coalesced [45] main::i#8 ← main::i#1 +Coalesced [46] main::at#11 ← main::at#3 +Coalesced [47] main::j#5 ← main::j#1 +Coalesced [48] main::k#4 ← main::k#1 +Coalesced [49] main::at#10 ← main::at#1 +Coalesced [53] print_char_at::at#8 ← print_char_at::at#1 +Coalesced [55] print_sbyte_at::b#14 ← print_sbyte_at::b#4 +Coalesced [63] print_char_at::at#7 ← print_char_at::at#0 +Coalesced [66] print_sbyte_at::b#13 ← print_sbyte_at::b#0 +Coalesced [73] print_char_at::ch#5 ← print_char_at::ch#2 +Coalesced [74] print_char_at::at#5 ← print_char_at::at#2 +Coalesced [79] print_char_at::ch#6 ← print_char_at::ch#3 +Coalesced [80] print_char_at::at#6 ← print_char_at::at#3 +Coalesced [106] init_screen::COLS#5 ← init_screen::COLS#1 +Coalesced [107] init_screen::m#3 ← init_screen::m#1 +Coalesced [108] init_screen::l#3 ← init_screen::l#1 +Coalesced [121] memset::dst#4 ← memset::dst#1 Coalesced down to 14 phi equivalence classes Culled Empty Block (label) @12 -Culled Empty Block (label) @36 Culled Empty Block (label) @40 Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@2 diff --git a/src/test/ref/examples/fire/fire.log b/src/test/ref/examples/fire/fire.log index 3b0f22326..beae61d80 100644 --- a/src/test/ref/examples/fire/fire.log +++ b/src/test/ref/examples/fire/fire.log @@ -252,7 +252,6 @@ fire::@return: scope:[fire] from fire::@9 (void()) makecharset((byte*) makecharset::charset) makecharset: scope:[makecharset] from main::@13 (byte*) makecharset::charset#1 ← phi( main::@13/(byte*) makecharset::charset#0 ) - (byte[8]) makecharset::bittab ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } (byte*) makecharset::font#0 ← (byte*) makecharset::charset#1 to:makecharset::@1 makecharset::@1: scope:[makecharset] from makecharset makecharset::@2 @@ -379,7 +378,7 @@ makecharset::@25: scope:[makecharset] from makecharset::@20 (number~) makecharset::$11 ← (byte) makecharset::i#4 & (number) 1 (number~) makecharset::$12 ← (byte) makecharset::ii#4 + (number~) makecharset::$11 (number~) makecharset::$13 ← (number~) makecharset::$12 & (number) 7 - (byte) makecharset::b#1 ← (byte) makecharset::b#3 + *((byte[8]) makecharset::bittab + (number~) makecharset::$13) + (byte) makecharset::b#1 ← (byte) makecharset::b#3 + *((const byte[8]) makecharset::bittab + (number~) makecharset::$13) to:makecharset::@22 makecharset::@return: scope:[makecharset] from makecharset::@13 return @@ -631,7 +630,7 @@ SYMBOL TABLE SSA (byte) makecharset::bc#7 (byte) makecharset::bc#8 (byte) makecharset::bc#9 -(byte[8]) makecharset::bittab +(const byte[8]) makecharset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte) makecharset::c (byte) makecharset::c#0 (byte) makecharset::c#1 @@ -766,8 +765,6 @@ Adding number conversion cast (unumber) makecharset::$12 in (number~) makecharse Adding number conversion cast (unumber) 7 in (number~) makecharset::$13 ← (unumber~) makecharset::$12 & (number) 7 Adding number conversion cast (unumber) makecharset::$13 in (number~) makecharset::$13 ← (unumber~) makecharset::$12 & (unumber)(number) 7 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) makecharset::bittab ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const word*) SID_VOICE3_FREQ) ← (unumber)(number) $ffff Inlining cast (byte) fillscreen::fill#0 ← (unumber)(number) 0 Inlining cast (byte) fillscreen::fill#1 ← (unumber)(number) 0 @@ -792,6 +789,14 @@ Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (word*) 54286 Simplifying constant pointer cast (byte*) 54290 Simplifying constant pointer cast (byte*) 54299 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 8 +Simplifying constant integer cast $10 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $80 Simplifying constant pointer cast (byte*) 14336 Simplifying constant pointer cast (byte*) 15360 Simplifying constant pointer cast (byte*) 16384 @@ -815,14 +820,6 @@ Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast $10 Simplifying constant integer cast $30 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 8 -Simplifying constant integer cast $10 -Simplifying constant integer cast $20 -Simplifying constant integer cast $40 -Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast $ff Simplifying constant integer cast 0 @@ -894,7 +891,7 @@ Inferred type updated to byte in (unumber~) makecharset::$11 ← (byte) makechar Inferred type updated to byte in (unumber~) makecharset::$12 ← (byte) makecharset::ii#4 + (byte~) makecharset::$11 Inferred type updated to byte in (unumber~) makecharset::$13 ← (byte~) makecharset::$12 & (byte) 7 Inversing boolean not [81] (bool~) fire::$9 ← (byte) fire::c#0 <= (byte) 2 from [80] (bool~) fire::$8 ← (byte) fire::c#0 > (byte) 2 -Inversing boolean not [153] (bool~) makecharset::$9 ← (byte) makecharset::bc#1 <= (byte) $3f from [152] (bool~) makecharset::$8 ← (byte) makecharset::bc#1 > (byte) $3f +Inversing boolean not [152] (bool~) makecharset::$9 ← (byte) makecharset::bc#1 <= (byte) $3f from [151] (bool~) makecharset::$8 ← (byte) makecharset::bc#1 > (byte) $3f Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 @@ -959,20 +956,18 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) fire::$3 [73] if((byte*) fire::buffer#4!=(byte*~) fire::$2) goto fire::@2 Simple Condition (bool~) fire::$9 [82] if((byte) fire::c#0<=(byte) 2) goto fire::@4 Simple Condition (bool~) fire::$11 [98] if((byte*) fire::buffer#10!=(byte*~) fire::$10) goto fire::@10 -Simple Condition (bool~) makecharset::$1 [117] if((byte*) makecharset::font#2!=(byte*~) makecharset::$0) goto makecharset::@2 -Simple Condition (bool~) makecharset::$4 [127] if((byte*) makecharset::font1#2!=(byte*~) makecharset::$3) goto makecharset::@8 -Simple Condition (bool~) makecharset::$5 [135] if((byte) makecharset::c#2<(byte) $40) goto makecharset::@14 -Simple Condition (bool~) makecharset::$6 [141] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@17 -Simple Condition (bool~) makecharset::$7 [149] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@20 -Simple Condition (bool~) makecharset::$9 [154] if((byte) makecharset::bc#1<=(byte) $3f) goto makecharset::@22 -Simple Condition (bool~) fillscreen::$0 [179] if((word) fillscreen::i#1!=rangelast(0,$3e7)) goto fillscreen::@1 +Simple Condition (bool~) makecharset::$1 [116] if((byte*) makecharset::font#2!=(byte*~) makecharset::$0) goto makecharset::@2 +Simple Condition (bool~) makecharset::$4 [126] if((byte*) makecharset::font1#2!=(byte*~) makecharset::$3) goto makecharset::@8 +Simple Condition (bool~) makecharset::$5 [134] if((byte) makecharset::c#2<(byte) $40) goto makecharset::@14 +Simple Condition (bool~) makecharset::$6 [140] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@17 +Simple Condition (bool~) makecharset::$7 [148] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@20 +Simple Condition (bool~) makecharset::$9 [153] if((byte) makecharset::bc#1<=(byte) $3f) goto makecharset::@22 +Simple Condition (bool~) fillscreen::$0 [178] if((word) fillscreen::i#1!=rangelast(0,$3e7)) goto fillscreen::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [71] (byte*~) fire::$2 ← (const byte*) BUFFER + (word)(number) $18*(number) $28 Constant right-side identified [86] (byte*) fire::buffer#1 ← (const byte*) BUFFER + (word)(number) $18*(number) $28 Constant right-side identified [96] (byte*~) fire::$10 ← (const byte*) BUFFER + (word)(number) $19*(number) $28 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) fillscreen::screen#0 = BUFFER Constant (const byte) fillscreen::fill#0 = 0 Constant (const byte*) fillscreen::screen#1 = SCREEN1 @@ -992,7 +987,6 @@ Constant (const byte*) fire::buffer#0 = BUFFER Constant (const byte*) fire::$2 = BUFFER+(word)$18*$28 Constant (const byte*) fire::buffer#1 = BUFFER+(word)$18*$28 Constant (const byte*) fire::$10 = BUFFER+(word)$19*$28 -Constant (const byte[8]) makecharset::bittab = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte) makecharset::c#0 = 0 Constant (const byte) makecharset::bc#0 = 0 Constant (const byte) makecharset::i#0 = 0 @@ -1007,11 +1001,11 @@ Constant (const word) main::toD0182_$4 = (word)main::toD0182_gfx#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [25] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [177] fillscreen::i#1 ← ++ fillscreen::i#2 to ++ -Resolved ranged comparison value [179] if(fillscreen::i#1!=rangelast(0,$3e7)) goto fillscreen::@1 to (number) $3e8 +Resolved ranged next value [176] fillscreen::i#1 ← ++ fillscreen::i#2 to ++ +Resolved ranged comparison value [178] if(fillscreen::i#1!=rangelast(0,$3e7)) goto fillscreen::@1 to (number) $3e8 Rewriting conditional comparison [82] if((byte) fire::c#0<=(byte) 2) goto fire::@4 -Rewriting conditional comparison [154] if((byte) makecharset::bc#1<=(byte) $3f) goto makecharset::@22 -De-inlining pointer[w] to *(pointer+w) [160] *((byte*~) makecharset::$14 + (word~) makecharset::$17) ← (byte) makecharset::b#2 +Rewriting conditional comparison [153] if((byte) makecharset::bc#1<=(byte) $3f) goto makecharset::@22 +De-inlining pointer[w] to *(pointer+w) [159] *((byte*~) makecharset::$14 + (word~) makecharset::$17) ← (byte) makecharset::b#2 Successful SSA optimization Pass2DeInlineWordDerefIdx Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks diff --git a/src/test/ref/examples/plasma/plasma-unroll.log b/src/test/ref/examples/plasma/plasma-unroll.log index 2589e9ab1..b2a83a3b4 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.log +++ b/src/test/ref/examples/plasma/plasma-unroll.log @@ -520,7 +520,6 @@ makecharset: scope:[makecharset] from main::@2 (byte*) print_char_cursor#29 ← phi( main::@2/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#22 ← phi( main::@2/(byte*) print_line_cursor#14 ) (byte*) print_screen#4 ← phi( main::@2/(byte*) print_screen#5 ) - (byte[8]) makecharset::bittab ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } call sid_rnd_init to:makecharset::@23 makecharset::@23: scope:[makecharset] from makecharset @@ -658,7 +657,7 @@ makecharset::@13: scope:[makecharset] from makecharset::@25 (word) makecharset::c#13 ← phi( makecharset::@25/(word) makecharset::c#14 ) (byte) makecharset::ii#4 ← phi( makecharset::@25/(byte) makecharset::ii#5 ) (byte) makecharset::b#3 ← phi( makecharset::@25/(byte) makecharset::b#5 ) - (byte) makecharset::b#1 ← (byte) makecharset::b#3 | *((byte[8]) makecharset::bittab + (byte) makecharset::ii#4) + (byte) makecharset::b#1 ← (byte) makecharset::b#3 | *((const byte[8]) makecharset::bittab + (byte) makecharset::ii#4) to:makecharset::@10 makecharset::@19: scope:[makecharset] from makecharset::@26 makecharset::@6 (byte*) makecharset::charset#11 ← phi( makecharset::@26/(byte*) makecharset::charset#14 makecharset::@6/(byte*) makecharset::charset#15 ) @@ -1042,7 +1041,7 @@ SYMBOL TABLE SSA (byte) makecharset::b#5 (byte) makecharset::b#6 (byte) makecharset::b#7 -(byte[8]) makecharset::bittab +(const byte[8]) makecharset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (word) makecharset::c (word) makecharset::c#0 (word) makecharset::c#1 @@ -1325,8 +1324,6 @@ Adding number conversion cast (unumber) 8 in (number~) makecharset::$10 ← (wor Adding number conversion cast (unumber) makecharset::$10 in (number~) makecharset::$10 ← (word) makecharset::c#5 * (unumber)(number) 8 Adding number conversion cast (unumber) makecharset::$11 in (number~) makecharset::$11 ← (unumber~) makecharset::$10 + (byte) makecharset::i#3 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) makecharset::bittab ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -1357,6 +1354,14 @@ Simplifying constant pointer cast (byte*) 54290 Simplifying constant pointer cast (byte*) 54299 Simplifying constant pointer cast (byte*) 10240 Simplifying constant pointer cast (byte*) 8192 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 8 +Simplifying constant integer cast $10 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3e8 @@ -1388,14 +1393,6 @@ Simplifying constant integer cast $28 Simplifying constant integer cast 0 Simplifying constant integer cast $19 Simplifying constant integer cast $28 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 8 -Simplifying constant integer cast $10 -Simplifying constant integer cast $20 -Simplifying constant integer cast $40 -Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast $100 Simplifying constant integer cast 0 @@ -1462,8 +1459,8 @@ Inferred type updated to byte in (unumber~) makecharset::$7 ← (byte~) makechar Inferred type updated to word in (unumber~) makecharset::$10 ← (word) makecharset::c#5 * (byte) 8 Inferred type updated to word in (unumber~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#3 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [194] (bool~) makecharset::$14 ← (byte~) makecharset::$12 != (byte) 0 from [193] (bool~) makecharset::$13 ← (byte~) makecharset::$12 == (byte) 0 -Inversing boolean not [206] (bool~) makecharset::$9 ← (byte~) makecharset::$7 <= (byte) makecharset::s#1 from [205] (bool~) makecharset::$8 ← (byte~) makecharset::$7 > (byte) makecharset::s#1 +Inversing boolean not [193] (bool~) makecharset::$14 ← (byte~) makecharset::$12 != (byte) 0 from [192] (bool~) makecharset::$13 ← (byte~) makecharset::$12 == (byte) 0 +Inversing boolean not [205] (bool~) makecharset::$9 ← (byte~) makecharset::$7 <= (byte) makecharset::s#1 from [204] (bool~) makecharset::$8 ← (byte~) makecharset::$7 > (byte) makecharset::s#1 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -1674,17 +1671,15 @@ Simple Condition (bool~) doplasma::$0 [117] if((byte) doplasma::i#2<(byte) $19) Simple Condition (bool~) doplasma::$3 [135] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@8 Simple Condition (bool~) doplasma::$5 [148] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@14 Simple Condition (bool~) doplasma::$6 [154] unroll if((byte) doplasma::ii#2<(byte) $19) goto doplasma::@17 -Simple Condition (bool~) makecharset::$2 [180] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 -Simple Condition (bool~) makecharset::$4 [187] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 -Simple Condition (bool~) makecharset::$14 [195] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@19 -Simple Condition (bool~) makecharset::$5 [198] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@8 -Simple Condition (bool~) makecharset::$9 [207] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@10 +Simple Condition (bool~) makecharset::$2 [179] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 +Simple Condition (bool~) makecharset::$4 [186] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 +Simple Condition (bool~) makecharset::$14 [194] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@19 +Simple Condition (bool~) makecharset::$5 [197] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@8 +Simple Condition (bool~) makecharset::$9 [206] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@10 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [109] (byte[$28]) doplasma::xbuf ← { fill( $28, 0) } Constant right-side identified [110] (byte[$19]) doplasma::ybuf ← { fill( $19, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 @@ -1707,7 +1702,6 @@ Constant (const byte) doplasma::i#0 = 0 Constant (const byte) doplasma::i1#0 = 0 Constant (const byte) doplasma::i2#0 = 0 Constant (const byte) doplasma::ii#0 = 0 -Constant (const byte[8]) makecharset::bittab = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const word) makecharset::c#0 = 0 Constant (const byte) makecharset::i#0 = 0 Constant (const byte) makecharset::b#0 = 0 @@ -1727,7 +1721,7 @@ if() condition always true - replacing block destination [86] if(true) goto main Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [58] main::col#1 ← ++ main::col#2 to ++ Resolved ranged comparison value [60] if(main::col#1!=rangelast(COLS,COLS+$3e8)) goto main::@1 to (byte*)(const byte*) COLS+(word) $3e8+(number) 1 -De-inlining pointer[w] to *(pointer+w) [211] *((const byte*) makecharset::charset#0 + (word~) makecharset::$11) ← (byte) makecharset::b#2 +De-inlining pointer[w] to *(pointer+w) [210] *((const byte*) makecharset::charset#0 + (word~) makecharset::$11) ← (byte) makecharset::b#2 Successful SSA optimization Pass2DeInlineWordDerefIdx Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars diff --git a/src/test/ref/examples/plasma/plasma.log b/src/test/ref/examples/plasma/plasma.log index 364c839b5..cdff2fa38 100644 --- a/src/test/ref/examples/plasma/plasma.log +++ b/src/test/ref/examples/plasma/plasma.log @@ -569,7 +569,6 @@ makecharset: scope:[makecharset] from main::@2 (byte*) print_char_cursor#28 ← phi( main::@2/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#21 ← phi( main::@2/(byte*) print_line_cursor#14 ) (byte*) print_screen#4 ← phi( main::@2/(byte*) print_screen#5 ) - (byte[8]) makecharset::bittab ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } call sid_rnd_init to:makecharset::@23 makecharset::@23: scope:[makecharset] from makecharset @@ -707,7 +706,7 @@ makecharset::@13: scope:[makecharset] from makecharset::@25 (word) makecharset::c#13 ← phi( makecharset::@25/(word) makecharset::c#14 ) (byte) makecharset::ii#4 ← phi( makecharset::@25/(byte) makecharset::ii#5 ) (byte) makecharset::b#3 ← phi( makecharset::@25/(byte) makecharset::b#5 ) - (byte) makecharset::b#1 ← (byte) makecharset::b#3 | *((byte[8]) makecharset::bittab + (byte) makecharset::ii#4) + (byte) makecharset::b#1 ← (byte) makecharset::b#3 | *((const byte[8]) makecharset::bittab + (byte) makecharset::ii#4) to:makecharset::@10 makecharset::@19: scope:[makecharset] from makecharset::@26 makecharset::@6 (byte*) makecharset::charset#11 ← phi( makecharset::@26/(byte*) makecharset::charset#14 makecharset::@6/(byte*) makecharset::charset#15 ) @@ -1125,7 +1124,7 @@ SYMBOL TABLE SSA (byte) makecharset::b#5 (byte) makecharset::b#6 (byte) makecharset::b#7 -(byte[8]) makecharset::bittab +(const byte[8]) makecharset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (word) makecharset::c (word) makecharset::c#0 (word) makecharset::c#1 @@ -1424,8 +1423,6 @@ Adding number conversion cast (unumber) 8 in (number~) makecharset::$10 ← (wor Adding number conversion cast (unumber) makecharset::$10 in (number~) makecharset::$10 ← (word) makecharset::c#5 * (unumber)(number) 8 Adding number conversion cast (unumber) makecharset::$11 in (number~) makecharset::$11 ← (unumber~) makecharset::$10 + (byte) makecharset::i#3 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) makecharset::bittab ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -1458,6 +1455,14 @@ Simplifying constant pointer cast (byte*) 54299 Simplifying constant pointer cast (byte*) 10240 Simplifying constant pointer cast (byte*) 11264 Simplifying constant pointer cast (byte*) 8192 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 8 +Simplifying constant integer cast $10 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3e8 @@ -1492,14 +1497,6 @@ Simplifying constant integer cast $19 Simplifying constant integer cast 0 Simplifying constant integer cast $28 Simplifying constant integer cast $28 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 8 -Simplifying constant integer cast $10 -Simplifying constant integer cast $20 -Simplifying constant integer cast $40 -Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast $100 Simplifying constant integer cast 0 @@ -1574,8 +1571,8 @@ Inferred type updated to byte in (unumber~) makecharset::$7 ← (byte~) makechar Inferred type updated to word in (unumber~) makecharset::$10 ← (word) makecharset::c#5 * (byte) 8 Inferred type updated to word in (unumber~) makecharset::$11 ← (word~) makecharset::$10 + (byte) makecharset::i#3 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [213] (bool~) makecharset::$14 ← (byte~) makecharset::$12 != (byte) 0 from [212] (bool~) makecharset::$13 ← (byte~) makecharset::$12 == (byte) 0 -Inversing boolean not [225] (bool~) makecharset::$9 ← (byte~) makecharset::$7 <= (byte) makecharset::s#1 from [224] (bool~) makecharset::$8 ← (byte~) makecharset::$7 > (byte) makecharset::s#1 +Inversing boolean not [212] (bool~) makecharset::$14 ← (byte~) makecharset::$12 != (byte) 0 from [211] (bool~) makecharset::$13 ← (byte~) makecharset::$12 == (byte) 0 +Inversing boolean not [224] (bool~) makecharset::$9 ← (byte~) makecharset::$7 <= (byte) makecharset::s#1 from [223] (bool~) makecharset::$8 ← (byte~) makecharset::$7 > (byte) makecharset::s#1 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -1788,17 +1785,15 @@ Simple Condition (bool~) doplasma::$0 [141] if((byte) doplasma::i#2<(byte) $19) Simple Condition (bool~) doplasma::$2 [156] if((byte) doplasma::i1#2<(byte) $28) goto doplasma::@8 Simple Condition (bool~) doplasma::$4 [169] if((byte) doplasma::ii#2<(byte) $19) goto doplasma::@14 Simple Condition (bool~) doplasma::$5 [174] if((byte) doplasma::i2#2<(byte) $28) goto doplasma::@17 -Simple Condition (bool~) makecharset::$2 [199] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 -Simple Condition (bool~) makecharset::$4 [206] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 -Simple Condition (bool~) makecharset::$14 [214] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@19 -Simple Condition (bool~) makecharset::$5 [217] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@8 -Simple Condition (bool~) makecharset::$9 [226] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@10 +Simple Condition (bool~) makecharset::$2 [198] if((word) makecharset::c#2<(word) $100) goto makecharset::@2 +Simple Condition (bool~) makecharset::$4 [205] if((byte) makecharset::i#2<(byte) 8) goto makecharset::@5 +Simple Condition (bool~) makecharset::$14 [213] if((byte~) makecharset::$12!=(byte) 0) goto makecharset::@19 +Simple Condition (bool~) makecharset::$5 [216] if((byte) makecharset::ii#2<(byte) 8) goto makecharset::@8 +Simple Condition (bool~) makecharset::$9 [225] if((byte~) makecharset::$7<=(byte) makecharset::s#0) goto makecharset::@10 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [134] (byte[$28]) doplasma::xbuf ← { fill( $28, 0) } Constant right-side identified [135] (byte[$19]) doplasma::ybuf ← { fill( $19, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 @@ -1823,7 +1818,6 @@ Constant (const byte) doplasma::i#0 = 0 Constant (const byte) doplasma::i1#0 = 0 Constant (const byte) doplasma::ii#0 = 0 Constant (const byte) doplasma::i2#0 = 0 -Constant (const byte[8]) makecharset::bittab = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const word) makecharset::c#0 = 0 Constant (const byte) makecharset::i#0 = 0 Constant (const byte) makecharset::b#0 = 0 @@ -1845,7 +1839,7 @@ if() condition always true - replacing block destination [68] if(true) goto main Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [58] main::col#1 ← ++ main::col#2 to ++ Resolved ranged comparison value [60] if(main::col#1!=rangelast(COLS,COLS+$3e8)) goto main::@1 to (byte*)(const byte*) COLS+(word) $3e8+(number) 1 -De-inlining pointer[w] to *(pointer+w) [230] *((const byte*) makecharset::charset#0 + (word~) makecharset::$11) ← (byte) makecharset::b#2 +De-inlining pointer[w] to *(pointer+w) [229] *((const byte*) makecharset::charset#0 + (word~) makecharset::$11) ← (byte) makecharset::b#2 Successful SSA optimization Pass2DeInlineWordDerefIdx Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars diff --git a/src/test/ref/examples/rasterbars/raster-bars.log b/src/test/ref/examples/rasterbars/raster-bars.log index d7a898978..b6f40a577 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.log +++ b/src/test/ref/examples/rasterbars/raster-bars.log @@ -6,11 +6,12 @@ Culled Empty Block (label) @4 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@6 +Culled Empty Block (label) @5 Culled Empty Block (label) raster::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@5 + to:@6 (void()) main() main: scope:[main] from @6 @@ -33,15 +34,12 @@ main::@7: scope:[main] from main::@5 main::@return: scope:[main] from main::@7 return to:@return -@5: scope:[] from @begin - (byte[]) rastercols ← { (number) $b, (number) 0, (number) $b, (number) $b, (number) $c, (number) $b, (number) $c, (number) $c, (number) $f, (number) $c, (number) $f, (number) $f, (number) 1, (number) $f, (number) 1, (number) 1, (number) $f, (number) 1, (number) $f, (number) $f, (number) $c, (number) $f, (number) $c, (number) $c, (number) $b, (number) $c, (number) $b, (number) $b, (number) 0, (number) $b, (number) 0, (number) $ff } - to:@6 (void()) raster() raster: scope:[raster] from main::@5 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } (byte) raster::i#0 ← (number) 0 - (byte) raster::col#0 ← *((byte[]) rastercols + (byte) raster::i#0) + (byte) raster::col#0 ← *((const byte[]) rastercols + (byte) raster::i#0) to:raster::@1 raster::@1: scope:[raster] from raster raster::@1 (byte) raster::i#2 ← phi( raster/(byte) raster::i#0 raster::@1/(byte) raster::i#1 ) @@ -49,7 +47,7 @@ raster::@1: scope:[raster] from raster raster::@1 *((const byte*) BGCOL) ← (byte) raster::col#2 *((const byte*) BORDERCOL) ← (byte) raster::col#2 (byte) raster::i#1 ← ++ (byte) raster::i#2 - (byte) raster::col#1 ← *((byte[]) rastercols + (byte) raster::i#1) + (byte) raster::col#1 ← *((const byte[]) rastercols + (byte) raster::i#1) asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } (bool~) raster::$0 ← (byte) raster::col#1 != (number) $ff if((bool~) raster::$0) goto raster::@1 @@ -57,7 +55,7 @@ raster::@1: scope:[raster] from raster raster::@1 raster::@return: scope:[raster] from raster::@1 return to:@return -@6: scope:[] from @5 +@6: scope:[] from @begin call main to:@7 @7: scope:[] from @6 @@ -65,7 +63,6 @@ raster::@return: scope:[raster] from raster::@1 @end: scope:[] from @7 SYMBOL TABLE SSA -(label) @5 (label) @6 (label) @7 (label) @begin @@ -93,22 +90,18 @@ SYMBOL TABLE SSA (byte) raster::i#0 (byte) raster::i#1 (byte) raster::i#2 -(byte[]) rastercols +(const byte[]) rastercols = { (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) $ff } Adding number conversion cast (unumber) $a in (bool~) main::$0 ← *((const byte*) RASTER) != (number) $a Adding number conversion cast (unumber) $b in (bool~) main::$1 ← *((const byte*) RASTER) != (number) $b Adding number conversion cast (unumber) 0 in (byte) raster::i#0 ← (number) 0 Adding number conversion cast (unumber) $ff in (bool~) raster::$0 ← (byte) raster::col#1 != (number) $ff Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) rastercols ← (byte[]){ (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) $ff } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) raster::i#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 -Simplifying constant integer cast $a -Simplifying constant integer cast $b Simplifying constant integer cast $b Simplifying constant integer cast 0 Simplifying constant integer cast $b @@ -141,6 +134,8 @@ Simplifying constant integer cast 0 Simplifying constant integer cast $b Simplifying constant integer cast 0 Simplifying constant integer cast $ff +Simplifying constant integer cast $a +Simplifying constant integer cast $b Simplifying constant integer cast 0 Simplifying constant integer cast $ff Successful SSA optimization PassNCastSimplification @@ -151,16 +146,13 @@ Finalized unsigned number type (byte) $ff Successful SSA optimization PassNFinalizeNumberTypeConversions Simple Condition (bool~) main::$0 [2] if(*((const byte*) RASTER)!=(byte) $a) goto main::@2 Simple Condition (bool~) main::$1 [4] if(*((const byte*) RASTER)!=(byte) $b) goto main::@4 -Simple Condition (bool~) raster::$0 [19] if((byte) raster::col#1!=(byte) $ff) goto raster::@1 +Simple Condition (bool~) raster::$0 [18] if((byte) raster::col#1!=(byte) $ff) goto raster::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) rastercols = { $b, 0, $b, $b, $c, $b, $c, $c, $f, $c, $f, $f, 1, $f, 1, 1, $f, 1, $f, $f, $c, $f, $c, $c, $b, $c, $b, $b, 0, $b, 0, $ff } Constant (const byte) raster::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [6] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Simplifying expression containing zero rastercols in [11] (byte) raster::col#0 ← *((const byte[]) rastercols + (const byte) raster::i#0) +Simplifying expression containing zero rastercols in [10] (byte) raster::col#0 ← *((const byte[]) rastercols + (const byte) raster::i#0) Successful SSA optimization PassNSimplifyExpressionWithZero Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -169,22 +161,20 @@ Constant inlined raster::i#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting raster::@3(between raster::@1 and raster::@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 @7 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@7 CALL GRAPH -Calls in [] to main:3 -Calls in [main] to raster:10 +Calls in [] to main:2 +Calls in [main] to raster:9 Created 2 initial phi equivalence classes -Coalesced [14] raster::col#3 ← raster::col#0 -Coalesced [23] raster::col#4 ← raster::col#1 -Coalesced [24] raster::i#3 ← raster::i#1 +Coalesced [13] raster::col#3 ← raster::col#0 +Coalesced [22] raster::col#4 ← raster::col#1 +Coalesced [23] raster::i#3 ← raster::i#1 Coalesced down to 2 phi equivalence classes -Culled Empty Block (label) @5 Culled Empty Block (label) @7 Culled Empty Block (label) main::@7 Culled Empty Block (label) raster::@3 diff --git a/src/test/ref/examples/rotate/rotate.asm b/src/test/ref/examples/rotate/rotate.asm index ddd013ca2..66f7341b6 100644 --- a/src/test/ref/examples/rotate/rotate.asm +++ b/src/test/ref/examples/rotate/rotate.asm @@ -490,6 +490,9 @@ mulf_init: { jmp __b1 } print_hextab: .text "0123456789abcdef" + // Positions to rotate + xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 + ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round($7fff*sin(i*2*PI/256)) - // Positions to rotate - xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 - ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 .pc = SPRITE "SPRITE" .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log index 7623cbc79..acb62a636 100644 --- a/src/test/ref/examples/rotate/rotate.log +++ b/src/test/ref/examples/rotate/rotate.log @@ -77,6 +77,7 @@ Culled Empty Block (label) @49 Culled Empty Block (label) @50 Culled Empty Block (label) @52 Culled Empty Block (label) init::@2 +Culled Empty Block (label) @53 Culled Empty Block (label) anim::@2 Culled Empty Block (label) anim::@15 Culled Empty Block (label) anim::@3 @@ -395,7 +396,7 @@ print_char_at::@return: scope:[print_char_at] from print_char_at }} (byte*~) $0 ← (byte[$140]) SIN + (number) $40 (byte*) COS#0 ← (byte*~) $0 - to:@53 + to:@54 (void()) main() main: scope:[main] from @54 @@ -437,11 +438,6 @@ init::@1: scope:[init] from init::@1 init::@3 init::@return: scope:[init] from init::@1 return to:@return -@53: scope:[] from @51 - (byte*) COS#15 ← phi( @51/(byte*) COS#0 ) - (signed byte[8]) xs ← { (number) -$46, (number) -$46, (number) -$46, (number) 0, (number) 0, (number) $46, (number) $46, (number) $46 } - (signed byte[8]) ys ← { (number) -$46, (number) 0, (number) $46, (number) -$46, (number) $46, (number) -$46, (number) 0, (number) $46 } - to:@54 (void()) anim() anim: scope:[anim] from main::@1 @@ -476,18 +472,18 @@ anim::@19: scope:[anim] from anim::@6 (byte) anim::i#0 ← (byte) 0 to:anim::@10 anim::@10: scope:[anim] from anim::@11 anim::@19 - (byte*) COS#25 ← phi( anim::@11/(byte*) COS#12 anim::@19/(byte*) COS#1 ) + (byte*) COS#24 ← phi( anim::@11/(byte*) COS#12 anim::@19/(byte*) COS#1 ) (byte) anim::angle#21 ← phi( anim::@11/(byte) anim::angle#5 anim::@19/(byte) anim::angle#2 ) (byte) anim::sprite_msb#16 ← phi( anim::@11/(byte) anim::sprite_msb#7 anim::@19/(byte) anim::sprite_msb#0 ) (signed byte) anim::sin_a#6 ← phi( anim::@11/(signed byte) anim::sin_a#7 anim::@19/(signed byte) anim::sin_a#0 ) (signed byte) anim::cos_a#1 ← phi( anim::@11/(signed byte) anim::cos_a#2 anim::@19/(signed byte) anim::cos_a#0 ) (byte) anim::i#2 ← phi( anim::@11/(byte) anim::i#1 anim::@19/(byte) anim::i#0 ) - (signed byte) anim::x#0 ← *((signed byte[8]) xs + (byte) anim::i#2) - (signed byte) anim::y#0 ← *((signed byte[8]) ys + (byte) anim::i#2) + (signed byte) anim::x#0 ← *((const signed byte[8]) xs + (byte) anim::i#2) + (signed byte) anim::y#0 ← *((const signed byte[8]) ys + (byte) anim::i#2) (signed byte) anim::mulf8s_prepare1_a#0 ← (signed byte) anim::cos_a#1 to:anim::mulf8s_prepare1 anim::mulf8s_prepare1: scope:[anim] from anim::@10 - (byte*) COS#24 ← phi( anim::@10/(byte*) COS#25 ) + (byte*) COS#23 ← phi( anim::@10/(byte*) COS#24 ) (byte) anim::angle#20 ← phi( anim::@10/(byte) anim::angle#21 ) (signed byte) anim::cos_a#13 ← phi( anim::@10/(signed byte) anim::cos_a#1 ) (byte) anim::i#14 ← phi( anim::@10/(byte) anim::i#2 ) @@ -501,7 +497,7 @@ anim::mulf8s_prepare1: scope:[anim] from anim::@10 call mulf8u_prepare to:anim::@20 anim::@20: scope:[anim] from anim::mulf8s_prepare1 - (byte*) COS#23 ← phi( anim::mulf8s_prepare1/(byte*) COS#24 ) + (byte*) COS#22 ← phi( anim::mulf8s_prepare1/(byte*) COS#23 ) (byte) anim::angle#19 ← phi( anim::mulf8s_prepare1/(byte) anim::angle#20 ) (signed byte) anim::cos_a#12 ← phi( anim::mulf8s_prepare1/(signed byte) anim::cos_a#13 ) (byte) anim::i#13 ← phi( anim::mulf8s_prepare1/(byte) anim::i#14 ) @@ -511,7 +507,7 @@ anim::@20: scope:[anim] from anim::mulf8s_prepare1 (signed byte) anim::x#3 ← phi( anim::mulf8s_prepare1/(signed byte) anim::x#5 ) to:anim::@17 anim::@17: scope:[anim] from anim::@20 - (byte*) COS#22 ← phi( anim::@20/(byte*) COS#23 ) + (byte*) COS#21 ← phi( anim::@20/(byte*) COS#22 ) (byte) anim::angle#18 ← phi( anim::@20/(byte) anim::angle#19 ) (signed byte) anim::cos_a#11 ← phi( anim::@20/(signed byte) anim::cos_a#12 ) (byte) anim::i#12 ← phi( anim::@20/(byte) anim::i#13 ) @@ -524,7 +520,7 @@ anim::@17: scope:[anim] from anim::@20 (signed word) mulf8s_prepared::return#2 ← (signed word) mulf8s_prepared::return#1 to:anim::@21 anim::@21: scope:[anim] from anim::@17 - (byte*) COS#21 ← phi( anim::@17/(byte*) COS#22 ) + (byte*) COS#20 ← phi( anim::@17/(byte*) COS#21 ) (byte) anim::angle#17 ← phi( anim::@17/(byte) anim::angle#18 ) (signed byte) anim::cos_a#10 ← phi( anim::@17/(signed byte) anim::cos_a#11 ) (byte) anim::i#11 ← phi( anim::@17/(byte) anim::i#12 ) @@ -541,7 +537,7 @@ anim::@21: scope:[anim] from anim::@17 (signed word) mulf8s_prepared::return#3 ← (signed word) mulf8s_prepared::return#1 to:anim::@22 anim::@22: scope:[anim] from anim::@21 - (byte*) COS#20 ← phi( anim::@21/(byte*) COS#21 ) + (byte*) COS#19 ← phi( anim::@21/(byte*) COS#20 ) (byte) anim::angle#16 ← phi( anim::@21/(byte) anim::angle#17 ) (signed byte) anim::cos_a#9 ← phi( anim::@21/(signed byte) anim::cos_a#10 ) (byte) anim::i#10 ← phi( anim::@21/(byte) anim::i#11 ) @@ -557,7 +553,7 @@ anim::@22: scope:[anim] from anim::@21 (signed byte) anim::mulf8s_prepare2_a#0 ← (signed byte) anim::sin_a#1 to:anim::mulf8s_prepare2 anim::mulf8s_prepare2: scope:[anim] from anim::@22 - (byte*) COS#19 ← phi( anim::@22/(byte*) COS#20 ) + (byte*) COS#18 ← phi( anim::@22/(byte*) COS#19 ) (signed byte) anim::sin_a#13 ← phi( anim::@22/(signed byte) anim::sin_a#1 ) (byte) anim::angle#15 ← phi( anim::@22/(byte) anim::angle#16 ) (signed byte) anim::cos_a#8 ← phi( anim::@22/(signed byte) anim::cos_a#9 ) @@ -573,7 +569,7 @@ anim::mulf8s_prepare2: scope:[anim] from anim::@22 call mulf8u_prepare to:anim::@23 anim::@23: scope:[anim] from anim::mulf8s_prepare2 - (byte*) COS#18 ← phi( anim::mulf8s_prepare2/(byte*) COS#19 ) + (byte*) COS#17 ← phi( anim::mulf8s_prepare2/(byte*) COS#18 ) (signed byte) anim::sin_a#12 ← phi( anim::mulf8s_prepare2/(signed byte) anim::sin_a#13 ) (byte) anim::angle#13 ← phi( anim::mulf8s_prepare2/(byte) anim::angle#15 ) (signed byte) anim::cos_a#7 ← phi( anim::mulf8s_prepare2/(signed byte) anim::cos_a#8 ) @@ -585,7 +581,7 @@ anim::@23: scope:[anim] from anim::mulf8s_prepare2 (signed byte) anim::y#4 ← phi( anim::mulf8s_prepare2/(signed byte) anim::y#6 ) to:anim::@18 anim::@18: scope:[anim] from anim::@23 - (byte*) COS#17 ← phi( anim::@23/(byte*) COS#18 ) + (byte*) COS#16 ← phi( anim::@23/(byte*) COS#17 ) (signed byte) anim::sin_a#11 ← phi( anim::@23/(signed byte) anim::sin_a#12 ) (byte) anim::angle#12 ← phi( anim::@23/(byte) anim::angle#13 ) (signed byte) anim::cos_a#6 ← phi( anim::@23/(signed byte) anim::cos_a#7 ) @@ -600,7 +596,7 @@ anim::@18: scope:[anim] from anim::@23 (signed word) mulf8s_prepared::return#4 ← (signed word) mulf8s_prepared::return#1 to:anim::@24 anim::@24: scope:[anim] from anim::@18 - (byte*) COS#16 ← phi( anim::@18/(byte*) COS#17 ) + (byte*) COS#15 ← phi( anim::@18/(byte*) COS#16 ) (signed byte) anim::sin_a#10 ← phi( anim::@18/(signed byte) anim::sin_a#11 ) (byte) anim::angle#10 ← phi( anim::@18/(byte) anim::angle#12 ) (signed byte) anim::cos_a#5 ← phi( anim::@18/(signed byte) anim::cos_a#6 ) @@ -618,7 +614,7 @@ anim::@24: scope:[anim] from anim::@18 (signed word) mulf8s_prepared::return#5 ← (signed word) mulf8s_prepared::return#1 to:anim::@25 anim::@25: scope:[anim] from anim::@24 - (byte*) COS#14 ← phi( anim::@24/(byte*) COS#16 ) + (byte*) COS#14 ← phi( anim::@24/(byte*) COS#15 ) (signed byte) anim::sin_a#9 ← phi( anim::@24/(signed byte) anim::sin_a#10 ) (byte) anim::angle#8 ← phi( anim::@24/(byte) anim::angle#10 ) (signed byte) anim::cos_a#4 ← phi( anim::@24/(signed byte) anim::cos_a#5 ) @@ -703,8 +699,8 @@ anim::@27: scope:[anim] from anim::@26 anim::@return: scope:[anim] from anim::@1 return to:@return -@54: scope:[] from @53 - (byte*) COS#11 ← phi( @53/(byte*) COS#15 ) +@54: scope:[] from @51 + (byte*) COS#11 ← phi( @51/(byte*) COS#0 ) kickasm(location (const byte*) SPRITE) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) @@ -720,7 +716,6 @@ SYMBOL TABLE SSA (byte*~) $0 (label) @4 (label) @51 -(label) @53 (label) @54 (label) @55 (label) @begin @@ -754,7 +749,6 @@ SYMBOL TABLE SSA (byte*) COS#22 (byte*) COS#23 (byte*) COS#24 -(byte*) COS#25 (byte*) COS#3 (byte*) COS#4 (byte*) COS#5 @@ -1232,8 +1226,8 @@ SYMBOL TABLE SSA (word) print_word_at::w#1 (word) print_word_at::w#2 (word) print_word_at::w#3 -(signed byte[8]) xs -(signed byte[8]) ys +(const signed byte[8]) xs = { (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) $46, (signed byte)(number) $46 } +(const signed byte[8]) ys = { (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46 } Fixing inline constructor with mulf8u_prepared::$0 ← (byte)*(mulf8u_prepared::memB) w= (byte)*(mulf8u_prepared::resL) Successful SSA optimization Pass2FixInlineConstructors @@ -1295,9 +1289,6 @@ Adding number conversion cast (unumber) 2 in (number~) anim::$26 ← (byte) anim Adding number conversion cast (unumber) anim::$26 in (number~) anim::$26 ← (byte) anim::i#3 * (unumber)(number) 2 Adding number conversion cast (unumber) $80 in (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#4 | (number) $80 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed byte[8]) xs ← (signed byte[8]){ (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) $46, (signed byte)(number) $46 } -Added casts to value list in (signed byte[8]) ys ← (signed byte[8]){ (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (word) mulf_init::sqr#0 ← (unumber)(number) 0 Inlining cast (byte) mulf_init::x_2#0 ← (unumber)(number) 0 Inlining cast (byte) mulf_init::c#0 ← (unumber)(number) 0 @@ -1333,6 +1324,22 @@ Simplifying constant pointer cast (byte*) 253 Simplifying constant pointer cast (byte*) 254 Simplifying constant pointer cast (byte*) 255 Simplifying constant pointer cast (signed byte*) 253 +Simplifying constant integer cast -$46 +Simplifying constant integer cast -$46 +Simplifying constant integer cast -$46 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $46 +Simplifying constant integer cast $46 +Simplifying constant integer cast $46 +Simplifying constant integer cast -$46 +Simplifying constant integer cast 0 +Simplifying constant integer cast $46 +Simplifying constant integer cast -$46 +Simplifying constant integer cast $46 +Simplifying constant integer cast -$46 +Simplifying constant integer cast 0 +Simplifying constant integer cast $46 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 12288 Simplifying constant integer cast 0 @@ -1367,22 +1374,6 @@ Simplifying constant integer cast $40 Simplifying constant integer cast $ff Simplifying constant integer cast $3f8 Simplifying constant integer cast $40 -Simplifying constant integer cast -$46 -Simplifying constant integer cast -$46 -Simplifying constant integer cast -$46 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast $46 -Simplifying constant integer cast $46 -Simplifying constant integer cast $46 -Simplifying constant integer cast -$46 -Simplifying constant integer cast 0 -Simplifying constant integer cast $46 -Simplifying constant integer cast -$46 -Simplifying constant integer cast $46 -Simplifying constant integer cast -$46 -Simplifying constant integer cast 0 -Simplifying constant integer cast $46 Simplifying constant integer cast 0 Simplifying constant integer cast $ff Simplifying constant integer cast 0 @@ -1461,7 +1452,7 @@ Inversing boolean not [19] (bool~) mulf_init::$11 ← (byte~) mulf_init::$9 != ( Inversing boolean not [49] (bool~) mulf_init::$19 ← (byte) mulf_init::x_255#1 != (byte) 0 from [48] (bool~) mulf_init::$18 ← (byte) mulf_init::x_255#1 == (byte) 0 Inversing boolean not [83] (bool~) mulf8s_prepared::$3 ← *((const signed byte*) mulf8s_prepared::memA) >= (signed byte) 0 from [82] (bool~) mulf8s_prepared::$2 ← *((const signed byte*) mulf8s_prepared::memA) < (signed byte) 0 Inversing boolean not [87] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#5 >= (signed byte) 0 from [86] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#5 < (signed byte) 0 -Inversing boolean not [254] (bool~) anim::$22 ← (byte~) anim::$20 == (byte) 0 from [253] (bool~) anim::$21 ← (byte~) anim::$20 != (byte) 0 +Inversing boolean not [251] (bool~) anim::$22 ← (byte~) anim::$20 == (byte) 0 from [250] (bool~) anim::$21 ← (byte~) anim::$20 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0 Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$6 @@ -1502,7 +1493,7 @@ Alias (byte*) print_word_at::at#1 = (byte*~) print_dword_at::$3 Alias (byte) print_byte_at::b#2 = (byte) print_byte_at::b#3 Alias (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#3 Alias (byte*) print_char_at::at#1 = (byte*~) print_byte_at::$3 -Alias (byte*) COS#0 = (byte*~) $0 (byte*) COS#15 (byte*) COS#11 +Alias (byte*) COS#0 = (byte*~) $0 (byte*) COS#11 Alias (byte*) COS#7 = (byte*) COS#9 Alias (byte*) init::sprites_ptr#0 = (byte*~) init::$1 Alias (byte*) COS#1 = (byte*) COS#2 (byte*) COS#3 @@ -1516,7 +1507,7 @@ Alias (signed byte) anim::sin_a#1 = (signed byte) anim::sin_a#5 (signed byte) an Alias (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#15 (byte) anim::sprite_msb#16 (byte) anim::sprite_msb#14 (byte) anim::sprite_msb#13 (byte) anim::sprite_msb#12 (byte) anim::sprite_msb#11 (byte) anim::sprite_msb#9 (byte) anim::sprite_msb#8 (byte) anim::sprite_msb#6 (byte) anim::sprite_msb#3 Alias (byte) anim::i#10 = (byte) anim::i#14 (byte) anim::i#2 (byte) anim::i#13 (byte) anim::i#12 (byte) anim::i#11 (byte) anim::i#9 (byte) anim::i#8 (byte) anim::i#7 (byte) anim::i#6 (byte) anim::i#5 (byte) anim::i#4 Alias (byte) anim::angle#10 = (byte) anim::angle#20 (byte) anim::angle#21 (byte) anim::angle#19 (byte) anim::angle#18 (byte) anim::angle#17 (byte) anim::angle#16 (byte) anim::angle#15 (byte) anim::angle#13 (byte) anim::angle#12 (byte) anim::angle#8 (byte) anim::angle#7 -Alias (byte*) COS#13 = (byte*) COS#24 (byte*) COS#25 (byte*) COS#23 (byte*) COS#22 (byte*) COS#21 (byte*) COS#20 (byte*) COS#19 (byte*) COS#18 (byte*) COS#17 (byte*) COS#16 (byte*) COS#14 +Alias (byte*) COS#13 = (byte*) COS#23 (byte*) COS#24 (byte*) COS#22 (byte*) COS#21 (byte*) COS#20 (byte*) COS#19 (byte*) COS#18 (byte*) COS#17 (byte*) COS#16 (byte*) COS#15 (byte*) COS#14 Alias (byte) mulf8u_prepare::a#0 = (byte~) anim::mulf8s_prepare1_$0 Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#7 Alias (signed word) anim::xr#0 = (signed word~) anim::$7 (signed word) anim::xr#7 (signed word) anim::xr#6 (signed word) anim::xr#5 (signed word) anim::xr#4 (signed word) anim::xr#2 @@ -1575,9 +1566,9 @@ Simple Condition (bool~) mulf_init::$19 [50] if((byte) mulf_init::x_255#1!=(byte Simple Condition (bool~) mulf8s_prepared::$3 [84] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1 Simple Condition (bool~) mulf8s_prepared::$5 [88] if((signed byte) mulf8s_prepared::b#4>=(signed byte) 0) goto mulf8s_prepared::@2 Simple Condition (bool~) init::$4 [178] if((byte) init::i#1!=rangelast(0,7)) goto init::@1 -Simple Condition (bool~) anim::$0 [189] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@4 -Simple Condition (bool~) anim::$22 [255] if((byte~) anim::$20==(byte) 0) goto anim::@11 -Simple Condition (bool~) anim::$28 [268] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@10 +Simple Condition (bool~) anim::$0 [186] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@4 +Simple Condition (bool~) anim::$22 [252] if((byte~) anim::$20==(byte) 0) goto anim::@11 +Simple Condition (bool~) anim::$28 [265] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@10 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [0] (byte[$200]) mulf_sqr1_lo ← { fill( $200, 0) } Constant right-side identified [1] (byte[$200]) mulf_sqr1_hi ← { fill( $200, 0) } @@ -1586,9 +1577,6 @@ Constant right-side identified [3] (byte[$200]) mulf_sqr2_hi ← { fill( $200, 0 Constant right-side identified [168] (byte*) init::sprites_ptr#0 ← (const byte*) SCREEN + (word) $3f8 Constant right-side identified [172] (byte*~) init::$2 ← (const byte*) SPRITE / (byte) $40 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (signed byte[8]) { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 } -Identified constant from value list (signed byte[8]) { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte[$200]) mulf_sqr1_lo = { fill( $200, 0) } Constant (const byte[$200]) mulf_sqr1_hi = { fill( $200, 0) } Constant (const byte[$200]) mulf_sqr2_lo = { fill( $200, 0) } @@ -1605,8 +1593,6 @@ Constant (const byte[$140]) SIN = kickasm {{ .for(var i=0;i<$140;i++) Constant (const byte*) init::sprites_ptr#0 = SCREEN+$3f8 Constant (const byte) init::i#0 = 0 Constant (const byte*) init::$2 = SPRITE/$40 -Constant (const signed byte[8]) xs = { -$46, -$46, -$46, 0, 0, $46, $46, $46 } -Constant (const signed byte[8]) ys = { -$46, 0, $46, -$46, $46, -$46, 0, $46 } Constant (const byte) anim::angle#0 = 0 Constant (const byte) anim::sprite_msb#0 = 0 Constant (const byte) anim::i#0 = 0 @@ -1617,12 +1603,12 @@ Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo Constant (const byte*) print_word_at::at#0 = print_dword_at::at#0 Constant (const byte) init::$3 = (byte)init::$2 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [186] if(true) goto anim::@4 +if() condition always true - replacing block destination [183] if(true) goto anim::@4 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [176] init::i#1 ← ++ init::i#2 to ++ Resolved ranged comparison value [178] if(init::i#1!=rangelast(0,7)) goto init::@1 to (number) 8 -Resolved ranged next value [266] anim::i#1 ← ++ anim::i#10 to ++ -Resolved ranged comparison value [268] if(anim::i#1!=rangelast(0,7)) goto anim::@10 to (number) 8 +Resolved ranged next value [263] anim::i#1 ← ++ anim::i#10 to ++ +Resolved ranged comparison value [265] if(anim::i#1!=rangelast(0,7)) goto anim::@10 to (number) 8 Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES in [112] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS in [113] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A Successful SSA optimization PassNSimplifyConstantZero @@ -1750,7 +1736,6 @@ Added new block during phi lifting anim::@29(between anim::@25 and anim::@11) Adding NOP phi() at start of @begin Adding NOP phi() at start of @4 Adding NOP phi() at start of @51 -Adding NOP phi() at start of @53 Adding NOP phi() at start of @55 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 @@ -1767,58 +1752,57 @@ Adding NOP phi() at start of mulf_init Adding NOP phi() at start of mulf_init::@3 Adding NOP phi() at start of mulf_init::@15 CALL GRAPH -Calls in [] to main:5 -Calls in [main] to init:9 anim:11 -Calls in [anim] to clock_start:18 mulf8u_prepare:24 mulf8s_prepared:28 mulf8s_prepared:33 mulf8u_prepare:37 mulf8s_prepared:41 mulf8s_prepared:47 clock:69 print_dword_at:74 -Calls in [print_dword_at] to print_word_at:82 print_word_at:85 -Calls in [print_word_at] to print_byte_at:93 print_byte_at:98 -Calls in [print_byte_at] to print_char_at:107 print_char_at:113 -Calls in [mulf8s_prepared] to mulf8u_prepared:123 -Calls in [init] to mulf_init:156 +Calls in [] to main:4 +Calls in [main] to init:8 anim:10 +Calls in [anim] to clock_start:17 mulf8u_prepare:23 mulf8s_prepared:27 mulf8s_prepared:32 mulf8u_prepare:36 mulf8s_prepared:40 mulf8s_prepared:46 clock:68 print_dword_at:73 +Calls in [print_dword_at] to print_word_at:81 print_word_at:84 +Calls in [print_word_at] to print_byte_at:92 print_byte_at:97 +Calls in [print_byte_at] to print_char_at:106 print_char_at:112 +Calls in [mulf8s_prepared] to mulf8u_prepared:122 +Calls in [init] to mulf_init:155 Created 27 initial phi equivalence classes -Coalesced [27] mulf8s_prepared::b#8 ← mulf8s_prepared::b#0 -Coalesced [32] mulf8s_prepared::b#10 ← mulf8s_prepared::b#1 -Coalesced [40] mulf8s_prepared::b#9 ← mulf8s_prepared::b#2 -Coalesced [46] mulf8s_prepared::b#11 ← mulf8s_prepared::b#3 -Coalesced [57] anim::sprite_msb#18 ← anim::sprite_msb#2 -Coalesced [76] anim::angle#22 ← anim::angle#1 -Coalesced [77] anim::i#15 ← anim::i#1 -Coalesced [78] anim::sprite_msb#17 ← anim::sprite_msb#5 -Coalesced [79] anim::sprite_msb#19 ← anim::sprite_msb#1 -Coalesced [81] print_word_at::w#4 ← print_word_at::w#0 -Coalesced [84] print_word_at::w#5 ← print_word_at::w#1 -Coalesced [91] print_byte_at::b#4 ← print_byte_at::b#0 -Coalesced [92] print_byte_at::at#4 ← print_byte_at::at#0 -Coalesced [96] print_byte_at::b#5 ← print_byte_at::b#1 -Coalesced [97] print_byte_at::at#5 ← print_byte_at::at#1 -Coalesced [105] print_char_at::ch#3 ← print_char_at::ch#0 -Coalesced [106] print_char_at::at#3 ← print_char_at::at#0 -Coalesced [111] print_char_at::ch#4 ← print_char_at::ch#1 -Coalesced [112] print_char_at::at#4 ← print_char_at::at#1 -Coalesced [130] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 -Coalesced [136] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 -Coalesced [139] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 -Coalesced [140] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 -Coalesced [164] init::i#3 ← init::i#1 -Coalesced [182] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1 -Coalesced [183] mulf_init::x_255#6 ← mulf_init::x_255#1 -Coalesced [184] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1 -Coalesced [185] mulf_init::dir#5 ← mulf_init::dir#4 -Coalesced (already) [186] mulf_init::dir#6 ← mulf_init::dir#2 -Coalesced [192] mulf_init::sqr#9 ← mulf_init::sqr#2 -Coalesced [193] mulf_init::x_2#8 ← mulf_init::x_2#1 -Coalesced [202] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1 -Coalesced [203] mulf_init::c#6 ← mulf_init::c#1 -Coalesced [204] mulf_init::sqr#7 ← mulf_init::sqr#1 -Coalesced [205] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1 -Coalesced [206] mulf_init::x_2#6 ← mulf_init::x_2#2 -Coalesced [207] mulf_init::sqr#8 ← mulf_init::sqr#4 -Coalesced (already) [208] mulf_init::x_2#7 ← mulf_init::x_2#3 +Coalesced [26] mulf8s_prepared::b#8 ← mulf8s_prepared::b#0 +Coalesced [31] mulf8s_prepared::b#10 ← mulf8s_prepared::b#1 +Coalesced [39] mulf8s_prepared::b#9 ← mulf8s_prepared::b#2 +Coalesced [45] mulf8s_prepared::b#11 ← mulf8s_prepared::b#3 +Coalesced [56] anim::sprite_msb#18 ← anim::sprite_msb#2 +Coalesced [75] anim::angle#22 ← anim::angle#1 +Coalesced [76] anim::i#15 ← anim::i#1 +Coalesced [77] anim::sprite_msb#17 ← anim::sprite_msb#5 +Coalesced [78] anim::sprite_msb#19 ← anim::sprite_msb#1 +Coalesced [80] print_word_at::w#4 ← print_word_at::w#0 +Coalesced [83] print_word_at::w#5 ← print_word_at::w#1 +Coalesced [90] print_byte_at::b#4 ← print_byte_at::b#0 +Coalesced [91] print_byte_at::at#4 ← print_byte_at::at#0 +Coalesced [95] print_byte_at::b#5 ← print_byte_at::b#1 +Coalesced [96] print_byte_at::at#5 ← print_byte_at::at#1 +Coalesced [104] print_char_at::ch#3 ← print_char_at::ch#0 +Coalesced [105] print_char_at::at#3 ← print_char_at::at#0 +Coalesced [110] print_char_at::ch#4 ← print_char_at::ch#1 +Coalesced [111] print_char_at::at#4 ← print_char_at::at#1 +Coalesced [129] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 +Coalesced [135] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 +Coalesced [138] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 +Coalesced [139] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 +Coalesced [163] init::i#3 ← init::i#1 +Coalesced [181] mulf_init::sqr2_lo#6 ← mulf_init::sqr2_lo#1 +Coalesced [182] mulf_init::x_255#6 ← mulf_init::x_255#1 +Coalesced [183] mulf_init::sqr2_hi#6 ← mulf_init::sqr2_hi#1 +Coalesced [184] mulf_init::dir#5 ← mulf_init::dir#4 +Coalesced (already) [185] mulf_init::dir#6 ← mulf_init::dir#2 +Coalesced [191] mulf_init::sqr#9 ← mulf_init::sqr#2 +Coalesced [192] mulf_init::x_2#8 ← mulf_init::x_2#1 +Coalesced [201] mulf_init::sqr1_lo#6 ← mulf_init::sqr1_lo#1 +Coalesced [202] mulf_init::c#6 ← mulf_init::c#1 +Coalesced [203] mulf_init::sqr#7 ← mulf_init::sqr#1 +Coalesced [204] mulf_init::sqr1_hi#6 ← mulf_init::sqr1_hi#1 +Coalesced [205] mulf_init::x_2#6 ← mulf_init::x_2#2 +Coalesced [206] mulf_init::sqr#8 ← mulf_init::sqr#4 +Coalesced (already) [207] mulf_init::x_2#7 ← mulf_init::x_2#3 Coalesced down to 22 phi equivalence classes Culled Empty Block (label) @4 Culled Empty Block (label) @51 -Culled Empty Block (label) @53 Culled Empty Block (label) @55 Culled Empty Block (label) main::@2 Culled Empty Block (label) anim::@19 @@ -3583,6 +3567,9 @@ mulf_init: { } // File Data print_hextab: .text "0123456789abcdef" + // Positions to rotate + xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 + ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round($7fff*sin(i*2*PI/256)) - // Positions to rotate - xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 - ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 .pc = SPRITE "SPRITE" .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) @@ -4934,6 +4918,9 @@ mulf_init: { } // File Data print_hextab: .text "0123456789abcdef" + // Positions to rotate + xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 + ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round($7fff*sin(i*2*PI/256)) - // Positions to rotate - xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 - ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 .pc = SPRITE "SPRITE" .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) @@ -6301,6 +6285,9 @@ mulf_init: { } // File Data print_hextab: .text "0123456789abcdef" + // Positions to rotate + xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 + ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // round($7fff*sin(i*2*PI/256)) - // Positions to rotate - xs: .byte -$46, -$46, -$46, 0, 0, $46, $46, $46 - ys: .byte -$46, 0, $46, -$46, $46, -$46, 0, $46 .pc = SPRITE "SPRITE" .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.log b/src/test/ref/examples/sinsprites/sinus-sprites.log index 62c2c6af6..d30530366 100644 --- a/src/test/ref/examples/sinsprites/sinus-sprites.log +++ b/src/test/ref/examples/sinsprites/sinus-sprites.log @@ -436,7 +436,6 @@ progress_init::@return: scope:[progress_init] from progress_init progress_inc: scope:[progress_inc] from gen_sintab::@26 (byte*) progress_cursor#33 ← phi( gen_sintab::@26/(byte*) progress_cursor#34 ) (byte) progress_idx#24 ← phi( gen_sintab::@26/(byte) progress_idx#34 ) - (byte[]) progress_inc::progress_chars ← { (number) $20, (number) $65, (number) $74, (number) $75, (number) $61, (number) $f6, (number) $e7, (number) $ea, (number) $e0 } (byte) progress_idx#10 ← ++ (byte) progress_idx#24 (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (number) 8 (bool~) progress_inc::$1 ← ! (bool~) progress_inc::$0 @@ -445,11 +444,11 @@ progress_inc: scope:[progress_inc] from gen_sintab::@26 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#23 ← phi( progress_inc/(byte*) progress_cursor#33 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#25 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - *((byte*) progress_cursor#23) ← *((byte[]) progress_inc::progress_chars + (byte) progress_idx#25) + *((byte*) progress_cursor#23) ← *((const byte[]) progress_inc::progress_chars + (byte) progress_idx#25) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc (byte*) progress_cursor#24 ← phi( progress_inc/(byte*) progress_cursor#33 ) - *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars + (number) 8) + *((byte*) progress_cursor#24) ← *((const byte[]) progress_inc::progress_chars + (number) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (number) 0 to:progress_inc::@1 @@ -799,9 +798,6 @@ gen_sintab: scope:[gen_sintab] from init::@6 init::@8 (byte) gen_sintab::length#25 ← phi( init::@6/(byte) gen_sintab::length#0 init::@8/(byte) gen_sintab::length#1 ) (byte) gen_sintab::min#4 ← phi( init::@6/(byte) gen_sintab::min#0 init::@8/(byte) gen_sintab::min#1 ) (byte) gen_sintab::max#2 ← phi( init::@6/(byte) gen_sintab::max#0 init::@8/(byte) gen_sintab::max#1 ) - (byte[]) gen_sintab::f_i ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) gen_sintab::f_min ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) gen_sintab::f_amp ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } (word~) gen_sintab::$0 ← ((word)) (byte) gen_sintab::max#2 (word) setFAC::w#0 ← (word~) gen_sintab::$0 call setFAC @@ -829,7 +825,7 @@ gen_sintab::@9: scope:[gen_sintab] from gen_sintab::@8 (byte*) progress_cursor#61 ← phi( gen_sintab::@8/(byte*) progress_cursor#63 ) (byte) progress_idx#61 ← phi( gen_sintab::@8/(byte) progress_idx#63 ) (byte) gen_sintab::length#22 ← phi( gen_sintab::@8/(byte) gen_sintab::length#23 ) - (byte*) setMEMtoFAC::mem#0 ← (byte[]) gen_sintab::f_min + (byte*) setMEMtoFAC::mem#0 ← (const byte[]) gen_sintab::f_min call setMEMtoFAC to:gen_sintab::@10 gen_sintab::@10: scope:[gen_sintab] from gen_sintab::@9 @@ -844,7 +840,7 @@ gen_sintab::@11: scope:[gen_sintab] from gen_sintab::@10 (byte*) progress_cursor#57 ← phi( gen_sintab::@10/(byte*) progress_cursor#59 ) (byte) progress_idx#57 ← phi( gen_sintab::@10/(byte) progress_idx#59 ) (byte) gen_sintab::length#19 ← phi( gen_sintab::@10/(byte) gen_sintab::length#21 ) - (byte*) setMEMtoFAC::mem#1 ← (byte[]) gen_sintab::f_amp + (byte*) setMEMtoFAC::mem#1 ← (const byte[]) gen_sintab::f_amp call setMEMtoFAC to:gen_sintab::@12 gen_sintab::@12: scope:[gen_sintab] from gen_sintab::@11 @@ -860,7 +856,7 @@ gen_sintab::@13: scope:[gen_sintab] from gen_sintab::@12 (byte*) progress_cursor#53 ← phi( gen_sintab::@12/(byte*) progress_cursor#55 ) (byte) progress_idx#53 ← phi( gen_sintab::@12/(byte) progress_idx#55 ) (byte) gen_sintab::length#15 ← phi( gen_sintab::@12/(byte) gen_sintab::length#17 ) - (byte*) divMEMbyFAC::mem#0 ← (byte[]) gen_sintab::f_amp + (byte*) divMEMbyFAC::mem#0 ← (const byte[]) gen_sintab::f_amp call divMEMbyFAC to:gen_sintab::@14 gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@13 @@ -868,7 +864,7 @@ gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@13 (byte*) progress_cursor#50 ← phi( gen_sintab::@13/(byte*) progress_cursor#53 ) (byte) progress_idx#50 ← phi( gen_sintab::@13/(byte) progress_idx#53 ) (byte) gen_sintab::length#13 ← phi( gen_sintab::@13/(byte) gen_sintab::length#15 ) - (byte*) setMEMtoFAC::mem#2 ← (byte[]) gen_sintab::f_amp + (byte*) setMEMtoFAC::mem#2 ← (const byte[]) gen_sintab::f_amp call setMEMtoFAC to:gen_sintab::@15 gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14 @@ -876,7 +872,7 @@ gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14 (byte*) progress_cursor#47 ← phi( gen_sintab::@14/(byte*) progress_cursor#50 ) (byte) progress_idx#47 ← phi( gen_sintab::@14/(byte) progress_idx#50 ) (byte) gen_sintab::length#10 ← phi( gen_sintab::@14/(byte) gen_sintab::length#13 ) - (byte*) addMEMtoFAC::mem#0 ← (byte[]) gen_sintab::f_min + (byte*) addMEMtoFAC::mem#0 ← (const byte[]) gen_sintab::f_min call addMEMtoFAC to:gen_sintab::@16 gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15 @@ -884,7 +880,7 @@ gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15 (byte*) progress_cursor#44 ← phi( gen_sintab::@15/(byte*) progress_cursor#47 ) (byte) progress_idx#44 ← phi( gen_sintab::@15/(byte) progress_idx#47 ) (byte) gen_sintab::length#7 ← phi( gen_sintab::@15/(byte) gen_sintab::length#10 ) - (byte*) setMEMtoFAC::mem#3 ← (byte[]) gen_sintab::f_min + (byte*) setMEMtoFAC::mem#3 ← (const byte[]) gen_sintab::f_min call setMEMtoFAC to:gen_sintab::@17 gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16 @@ -928,7 +924,7 @@ gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18 (byte) gen_sintab::i#12 ← phi( gen_sintab::@18/(byte) gen_sintab::i#13 ) (byte*) gen_sintab::sintab#9 ← phi( gen_sintab::@18/(byte*) gen_sintab::sintab#10 ) (byte) gen_sintab::length#6 ← phi( gen_sintab::@18/(byte) gen_sintab::length#8 ) - (byte*) setMEMtoFAC::mem#4 ← (byte[]) gen_sintab::f_i + (byte*) setMEMtoFAC::mem#4 ← (const byte[]) gen_sintab::f_i call setMEMtoFAC to:gen_sintab::@20 gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19 @@ -947,7 +943,7 @@ gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20 (byte) progress_idx#54 ← phi( gen_sintab::@20/(byte) progress_idx#56 ) (byte) gen_sintab::i#10 ← phi( gen_sintab::@20/(byte) gen_sintab::i#11 ) (byte*) gen_sintab::sintab#7 ← phi( gen_sintab::@20/(byte*) gen_sintab::sintab#8 ) - (byte*) divMEMbyFAC::mem#1 ← (byte[]) gen_sintab::f_i + (byte*) divMEMbyFAC::mem#1 ← (const byte[]) gen_sintab::f_i call divMEMbyFAC to:gen_sintab::@22 gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21 @@ -964,7 +960,7 @@ gen_sintab::@23: scope:[gen_sintab] from gen_sintab::@22 (byte) progress_idx#48 ← phi( gen_sintab::@22/(byte) progress_idx#51 ) (byte) gen_sintab::i#8 ← phi( gen_sintab::@22/(byte) gen_sintab::i#9 ) (byte*) gen_sintab::sintab#5 ← phi( gen_sintab::@22/(byte*) gen_sintab::sintab#6 ) - (byte*) mulFACbyMEM::mem#1 ← (byte[]) gen_sintab::f_amp + (byte*) mulFACbyMEM::mem#1 ← (const byte[]) gen_sintab::f_amp call mulFACbyMEM to:gen_sintab::@24 gen_sintab::@24: scope:[gen_sintab] from gen_sintab::@23 @@ -973,7 +969,7 @@ gen_sintab::@24: scope:[gen_sintab] from gen_sintab::@23 (byte) progress_idx#45 ← phi( gen_sintab::@23/(byte) progress_idx#48 ) (byte) gen_sintab::i#7 ← phi( gen_sintab::@23/(byte) gen_sintab::i#8 ) (byte*) gen_sintab::sintab#4 ← phi( gen_sintab::@23/(byte*) gen_sintab::sintab#5 ) - (byte*) addMEMtoFAC::mem#1 ← (byte[]) gen_sintab::f_min + (byte*) addMEMtoFAC::mem#1 ← (const byte[]) gen_sintab::f_min call addMEMtoFAC to:gen_sintab::@25 gen_sintab::@25: scope:[gen_sintab] from gen_sintab::@24 @@ -1327,9 +1323,9 @@ SYMBOL TABLE SSA (label) gen_sintab::@9 (label) gen_sintab::@return (const byte*) gen_sintab::f_2pi = (byte*)(number) $e2e5 -(byte[]) gen_sintab::f_amp -(byte[]) gen_sintab::f_i -(byte[]) gen_sintab::f_min +(const byte[]) gen_sintab::f_amp = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) gen_sintab::f_i = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } +(const byte[]) gen_sintab::f_min = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } (byte) gen_sintab::i (byte) gen_sintab::i#0 (byte) gen_sintab::i#1 @@ -1648,7 +1644,7 @@ SYMBOL TABLE SSA (label) progress_inc::@1 (label) progress_inc::@2 (label) progress_inc::@return -(byte[]) progress_inc::progress_chars +(const byte[]) progress_inc::progress_chars = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 } (void()) progress_init((byte*) progress_init::line) (label) progress_init::@return (byte*) progress_init::line @@ -1771,7 +1767,7 @@ Adding number conversion cast (unumber) $3e8 in (bool~) clear_screen::$0 ← (by Adding number conversion cast (unumber) 0 in (byte) progress_idx#7 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) progress_idx#8 ← (number) 0 Adding number conversion cast (unumber) 8 in (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (number) 8 -Adding number conversion cast (unumber) 8 in *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars + (number) 8) +Adding number conversion cast (unumber) 8 in *((byte*) progress_cursor#24) ← *((const byte[]) progress_inc::progress_chars + (number) 8) Adding number conversion cast (unumber) 0 in (byte) progress_idx#11 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) sin_idx_x#2 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) sin_idx_y#2 ← (number) 0 @@ -1828,11 +1824,6 @@ Adding number conversion cast (unumber) $37 in *((const byte*) PROCPORT) ← (nu Adding number conversion cast (unumber) 2 in (word) setFAC::w#2 ← (number) 2 Adding number conversion cast (unumber) 0 in (byte) gen_sintab::i#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) progress_inc::progress_chars ← (byte[]){ (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 } -Added casts to value list in (byte[]) gen_sintab::f_i ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) gen_sintab::f_min ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) gen_sintab::f_amp ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (word~) setMEMtoFAC::$0 ← (word)(byte*) setMEMtoFAC::mem#5 Inlining cast (word~) addMEMtoFAC::$0 ← (word)(byte*) addMEMtoFAC::mem#2 Inlining cast (word~) divMEMbyFAC::$0 ← (word)(byte*) divMEMbyFAC::mem#2 @@ -1895,7 +1886,31 @@ Simplifying constant pointer cast (byte*) 254 Simplifying constant pointer cast (byte*) 255 Simplifying constant pointer cast (byte*) 8192 Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast $20 +Simplifying constant integer cast $65 +Simplifying constant integer cast $74 +Simplifying constant integer cast $75 +Simplifying constant integer cast $61 +Simplifying constant integer cast $f6 +Simplifying constant integer cast $e7 +Simplifying constant integer cast $ea +Simplifying constant integer cast $e0 Simplifying constant integer cast $3f8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 58085 Simplifying constant integer cast *((const byte*) memHi) Simplifying constant integer cast *((const byte*) memLo) @@ -1911,15 +1926,6 @@ Simplifying constant integer cast $d0 Simplifying constant integer cast $3e8 Simplifying constant integer cast 0 Simplifying constant integer cast 0 -Simplifying constant integer cast $20 -Simplifying constant integer cast $65 -Simplifying constant integer cast $74 -Simplifying constant integer cast $75 -Simplifying constant integer cast $61 -Simplifying constant integer cast $f6 -Simplifying constant integer cast $e7 -Simplifying constant integer cast $ea -Simplifying constant integer cast $e0 Simplifying constant integer cast 8 Simplifying constant integer cast 8 Simplifying constant integer cast 0 @@ -1962,21 +1968,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 2 Simplifying constant integer cast 6 Simplifying constant integer cast $37 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast 2 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification @@ -2051,13 +2042,13 @@ Inferred type updated to byte in (unumber~) gen_chargen_sprite::$3 ← (byte) ge Inferred type updated to byte in (unumber~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 * (byte) 2 Inferred type updated to byte in (unumber~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 Inferred type updated to byte in (unumber~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 * (byte) 2 -Inversing boolean not [153] (bool~) progress_inc::$1 ← (byte) progress_idx#10 != (byte) 8 from [152] (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (byte) 8 -Inversing boolean not [189] (bool~) anim::$14 ← (byte) anim::xidx#1 < (const byte) sinlen_x from [188] (bool~) anim::$13 ← (byte) anim::xidx#1 >= (const byte) sinlen_x -Inversing boolean not [195] (bool~) anim::$18 ← (byte) anim::yidx#1 < (const byte) sinlen_y from [194] (bool~) anim::$17 ← (byte) anim::yidx#1 >= (const byte) sinlen_y -Inversing boolean not [213] (bool~) anim::$2 ← (byte) sin_idx_x#3 < (const byte) sinlen_x from [212] (bool~) anim::$1 ← (byte) sin_idx_x#3 >= (const byte) sinlen_x -Inversing boolean not [218] (bool~) anim::$4 ← (byte) sin_idx_y#3 < (const byte) sinlen_y from [217] (bool~) anim::$3 ← (byte) sin_idx_y#3 >= (const byte) sinlen_y -Inversing boolean not [287] (bool~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte) 0 from [286] (bool~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte) 0 -Inversing boolean not [299] (bool~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte) 8 from [298] (bool~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte) 8 +Inversing boolean not [152] (bool~) progress_inc::$1 ← (byte) progress_idx#10 != (byte) 8 from [151] (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (byte) 8 +Inversing boolean not [188] (bool~) anim::$14 ← (byte) anim::xidx#1 < (const byte) sinlen_x from [187] (bool~) anim::$13 ← (byte) anim::xidx#1 >= (const byte) sinlen_x +Inversing boolean not [194] (bool~) anim::$18 ← (byte) anim::yidx#1 < (const byte) sinlen_y from [193] (bool~) anim::$17 ← (byte) anim::yidx#1 >= (const byte) sinlen_y +Inversing boolean not [212] (bool~) anim::$2 ← (byte) sin_idx_x#3 < (const byte) sinlen_x from [211] (bool~) anim::$1 ← (byte) sin_idx_x#3 >= (const byte) sinlen_x +Inversing boolean not [217] (bool~) anim::$4 ← (byte) sin_idx_y#3 < (const byte) sinlen_y from [216] (bool~) anim::$3 ← (byte) sin_idx_y#3 >= (const byte) sinlen_y +Inversing boolean not [286] (bool~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte) 0 from [285] (bool~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte) 0 +Inversing boolean not [298] (bool~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte) 8 from [297] (bool~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#5 (word) setFAC::prepareMEM1_mem#1 Alias (word) getFAC::return#0 = (word) getFAC::w#0 (word~) getFAC::$0 (word) getFAC::return#3 (word) getFAC::return#1 @@ -2250,30 +2241,25 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) main::$1 [71] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2 Simple Condition (bool~) init::$9 [94] if((byte) init::i#1!=rangelast(0,$27)) goto init::@1 Simple Condition (bool~) clear_screen::$0 [135] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 -Simple Condition (bool~) progress_inc::$1 [154] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 -Simple Condition (bool~) anim::$14 [190] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@5 -Simple Condition (bool~) anim::$18 [196] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@6 -Simple Condition (bool~) anim::$21 [205] if((byte) anim::j#1!=rangelast(0,6)) goto anim::@4 -Simple Condition (bool~) anim::$2 [214] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@1 -Simple Condition (bool~) anim::$4 [219] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@2 -Simple Condition (bool~) place_sprites::$5 [255] if((byte) place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1 -Simple Condition (bool~) gen_sprites::$2 [268] if((byte) gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1 -Simple Condition (bool~) gen_chargen_sprite::$5 [288] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3 -Simple Condition (bool~) gen_chargen_sprite::$9 [300] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5 -Simple Condition (bool~) gen_chargen_sprite::$10 [304] if((byte) gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4 -Simple Condition (bool~) gen_chargen_sprite::$12 [317] if((byte) gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 -Simple Condition (bool~) gen_chargen_sprite::$14 [323] if((byte) gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 -Simple Condition (bool~) gen_sintab::$13 [367] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 +Simple Condition (bool~) progress_inc::$1 [153] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 +Simple Condition (bool~) anim::$14 [189] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@5 +Simple Condition (bool~) anim::$18 [195] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@6 +Simple Condition (bool~) anim::$21 [204] if((byte) anim::j#1!=rangelast(0,6)) goto anim::@4 +Simple Condition (bool~) anim::$2 [213] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@1 +Simple Condition (bool~) anim::$4 [218] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@2 +Simple Condition (bool~) place_sprites::$5 [254] if((byte) place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1 +Simple Condition (bool~) gen_sprites::$2 [267] if((byte) gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1 +Simple Condition (bool~) gen_chargen_sprite::$5 [287] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3 +Simple Condition (bool~) gen_chargen_sprite::$9 [299] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5 +Simple Condition (bool~) gen_chargen_sprite::$10 [303] if((byte) gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4 +Simple Condition (bool~) gen_chargen_sprite::$12 [316] if((byte) gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 +Simple Condition (bool~) gen_chargen_sprite::$14 [322] if((byte) gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 +Simple Condition (bool~) gen_sintab::$13 [363] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [62] (byte[$dd]) sintab_x ← { fill( $dd, 0) } Constant right-side identified [63] (byte[$c5]) sintab_y ← { fill( $c5, 0) } -Constant right-side identified [233] (word~) place_sprites::$0 ← (word)(const byte*) sprites +Constant right-side identified [232] (word~) place_sprites::$0 ← (word)(const byte*) sprites Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte[$dd]) sintab_x = { fill( $dd, 0) } Constant (const byte[$c5]) sintab_y = { fill( $c5, 0) } Constant (const byte) init::i#0 = 0 @@ -2289,7 +2275,6 @@ Constant (const byte*) clear_screen::sc#0 = SCREEN Constant (const byte*) progress_cursor#36 = SCREEN Constant (const byte) progress_idx#36 = 0 Constant (const byte) progress_idx#23 = 0 -Constant (const byte[]) progress_inc::progress_chars = { $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } Constant (const byte) progress_idx#11 = 0 Constant (const byte) sin_idx_x#16 = 0 Constant (const byte) sin_idx_y#17 = 0 @@ -2315,43 +2300,40 @@ Constant (const byte) gen_chargen_sprite::b#0 = 0 Constant (const byte) gen_chargen_sprite::c#1 = 1 Constant (const byte) gen_chargen_sprite::s_gen#2 = 0 Constant (const byte) gen_chargen_sprite::s_gen_cnt#2 = 0 -Constant (const byte[]) gen_sintab::f_i = { 0, 0, 0, 0, 0 } -Constant (const byte[]) gen_sintab::f_min = { 0, 0, 0, 0, 0 } -Constant (const byte[]) gen_sintab::f_amp = { 0, 0, 0, 0, 0 } -Constant (const word) setFAC::w#2 = 2 -Constant (const byte) gen_sintab::i#0 = 0 -Constant (const byte*) mulFACbyMEM::mem#0 = gen_sintab::f_2pi -Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) gen_sintab::sintab#0 = sintab_x -Constant (const byte*) gen_sintab::sintab#1 = sintab_y Constant (const byte*) setMEMtoFAC::mem#0 = gen_sintab::f_min Constant (const byte*) setMEMtoFAC::mem#1 = gen_sintab::f_amp +Constant (const word) setFAC::w#2 = 2 Constant (const byte*) divMEMbyFAC::mem#0 = gen_sintab::f_amp Constant (const byte*) setMEMtoFAC::mem#2 = gen_sintab::f_amp Constant (const byte*) addMEMtoFAC::mem#0 = gen_sintab::f_min Constant (const byte*) setMEMtoFAC::mem#3 = gen_sintab::f_min +Constant (const byte) gen_sintab::i#0 = 0 +Constant (const byte*) mulFACbyMEM::mem#0 = gen_sintab::f_2pi Constant (const byte*) setMEMtoFAC::mem#4 = gen_sintab::f_i Constant (const byte*) divMEMbyFAC::mem#1 = gen_sintab::f_i Constant (const byte*) mulFACbyMEM::mem#1 = gen_sintab::f_amp Constant (const byte*) addMEMtoFAC::mem#1 = gen_sintab::f_min Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) gen_sintab::sintab#0 = sintab_x +Constant (const byte*) gen_sintab::sintab#1 = sintab_y +Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [77] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [92] init::i#1 ← ++ init::i#2 to ++ Resolved ranged comparison value [94] if(init::i#1!=rangelast(0,$27)) goto init::@1 to (number) $28 -Resolved ranged next value [203] anim::j#1 ← ++ anim::j#2 to ++ -Resolved ranged comparison value [205] if(anim::j#1!=rangelast(0,6)) goto anim::@4 to (number) 7 -Resolved ranged next value [253] place_sprites::j#1 ← ++ place_sprites::j#2 to ++ -Resolved ranged comparison value [255] if(place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1 to (number) 7 -Resolved ranged next value [266] gen_sprites::i#1 ← ++ gen_sprites::i#2 to ++ -Resolved ranged comparison value [268] if(gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1 to (number) 7 -Resolved ranged next value [302] gen_chargen_sprite::b#1 ← ++ gen_chargen_sprite::b#2 to ++ -Resolved ranged comparison value [304] if(gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4 to (number) 3 -Resolved ranged next value [315] gen_chargen_sprite::x#1 ← ++ gen_chargen_sprite::x#6 to ++ -Resolved ranged comparison value [317] if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 to (number) 8 -Resolved ranged next value [321] gen_chargen_sprite::y#1 ← ++ gen_chargen_sprite::y#2 to ++ -Resolved ranged comparison value [323] if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 to (number) 8 -Simplifying expression containing zero gen_chargen_sprite::sprite#3 in [306] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 0) ← (byte) gen_chargen_sprite::s_gen#1 +Resolved ranged next value [202] anim::j#1 ← ++ anim::j#2 to ++ +Resolved ranged comparison value [204] if(anim::j#1!=rangelast(0,6)) goto anim::@4 to (number) 7 +Resolved ranged next value [252] place_sprites::j#1 ← ++ place_sprites::j#2 to ++ +Resolved ranged comparison value [254] if(place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1 to (number) 7 +Resolved ranged next value [265] gen_sprites::i#1 ← ++ gen_sprites::i#2 to ++ +Resolved ranged comparison value [267] if(gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1 to (number) 7 +Resolved ranged next value [301] gen_chargen_sprite::b#1 ← ++ gen_chargen_sprite::b#2 to ++ +Resolved ranged comparison value [303] if(gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4 to (number) 3 +Resolved ranged next value [314] gen_chargen_sprite::x#1 ← ++ gen_chargen_sprite::x#6 to ++ +Resolved ranged comparison value [316] if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 to (number) 8 +Resolved ranged next value [320] gen_chargen_sprite::y#1 ← ++ gen_chargen_sprite::y#2 to ++ +Resolved ranged comparison value [322] if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 to (number) 8 +Simplifying expression containing zero gen_chargen_sprite::sprite#3 in [305] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 0) ← (byte) gen_chargen_sprite::s_gen#1 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte*) progress_cursor#36 Eliminating unused constant (const byte) progress_idx#36 diff --git a/src/test/ref/font-hex-show.log b/src/test/ref/font-hex-show.log index fab7c9ce3..3bbc77b02 100644 --- a/src/test/ref/font-hex-show.log +++ b/src/test/ref/font-hex-show.log @@ -1,5 +1,5 @@ -Resolved forward reference FONT_HEX_PROTO to (byte[]) FONT_HEX_PROTO -Resolved forward reference FONT_HEX_PROTO to (byte[]) FONT_HEX_PROTO +Resolved forward reference FONT_HEX_PROTO to (const byte[]) FONT_HEX_PROTO +Resolved forward reference FONT_HEX_PROTO to (const byte[]) FONT_HEX_PROTO Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) Identified constant variable (byte*) SCREEN Identified constant variable (byte*) CHARSET @@ -14,24 +14,25 @@ Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) @8 Culled Empty Block (label) init_font_hex::@6 +Culled Empty Block (label) @9 Culled Empty Block (label) main::toD0181_@1 Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@9 + to:@10 (void()) init_font_hex((byte*) init_font_hex::charset) init_font_hex: scope:[init_font_hex] from main::@3 (byte*) init_font_hex::charset#6 ← phi( main::@3/(byte*) init_font_hex::charset#1 ) - (byte*) init_font_hex::proto_hi#0 ← (byte[]) FONT_HEX_PROTO + (byte*) init_font_hex::proto_hi#0 ← (const byte[]) FONT_HEX_PROTO (byte) init_font_hex::c#0 ← (byte) 0 to:init_font_hex::@1 init_font_hex::@1: scope:[init_font_hex] from init_font_hex init_font_hex::@5 (byte) init_font_hex::c#6 ← phi( init_font_hex/(byte) init_font_hex::c#0 init_font_hex::@5/(byte) init_font_hex::c#1 ) (byte*) init_font_hex::proto_hi#6 ← phi( init_font_hex/(byte*) init_font_hex::proto_hi#0 init_font_hex::@5/(byte*) init_font_hex::proto_hi#1 ) (byte*) init_font_hex::charset#5 ← phi( init_font_hex/(byte*) init_font_hex::charset#6 init_font_hex::@5/(byte*) init_font_hex::charset#7 ) - (byte*) init_font_hex::proto_lo#0 ← (byte[]) FONT_HEX_PROTO + (byte*) init_font_hex::proto_lo#0 ← (const byte[]) FONT_HEX_PROTO (byte) init_font_hex::c1#0 ← (byte) 0 to:init_font_hex::@2 init_font_hex::@2: scope:[init_font_hex] from init_font_hex::@1 init_font_hex::@4 @@ -91,9 +92,6 @@ init_font_hex::@5: scope:[init_font_hex] from init_font_hex::@4 init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 return to:@return -@9: scope:[] from @begin - (byte[]) FONT_HEX_PROTO ← { (number) 2, (number) 5, (number) 5, (number) 5, (number) 2, (number) 6, (number) 2, (number) 2, (number) 2, (number) 7, (number) 6, (number) 1, (number) 2, (number) 4, (number) 7, (number) 6, (number) 1, (number) 2, (number) 1, (number) 6, (number) 5, (number) 5, (number) 7, (number) 1, (number) 1, (number) 7, (number) 4, (number) 6, (number) 1, (number) 6, (number) 3, (number) 4, (number) 6, (number) 5, (number) 2, (number) 7, (number) 1, (number) 1, (number) 1, (number) 1, (number) 2, (number) 5, (number) 2, (number) 5, (number) 2, (number) 2, (number) 5, (number) 3, (number) 1, (number) 1, (number) 2, (number) 5, (number) 7, (number) 5, (number) 5, (number) 6, (number) 5, (number) 6, (number) 5, (number) 6, (number) 2, (number) 5, (number) 4, (number) 5, (number) 2, (number) 6, (number) 5, (number) 5, (number) 5, (number) 6, (number) 7, (number) 4, (number) 6, (number) 4, (number) 7, (number) 7, (number) 4, (number) 6, (number) 4, (number) 4 } - to:@10 (void()) main() main: scope:[main] from @10 @@ -138,7 +136,7 @@ main::@1: scope:[main] from main::@1 main::@4 main::@return: scope:[main] from main::@1 return to:@return -@10: scope:[] from @9 +@10: scope:[] from @begin call main to:@11 @11: scope:[] from @10 @@ -148,12 +146,11 @@ main::@return: scope:[main] from main::@1 SYMBOL TABLE SSA (label) @10 (label) @11 -(label) @9 (label) @begin (label) @end (const byte*) CHARSET = (byte*)(number) $2000 (const byte*) D018 = (byte*)(number) $d018 -(byte[]) FONT_HEX_PROTO +(const byte[]) FONT_HEX_PROTO = { (byte)(number) 2, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 1, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 1, (byte)(number) 6, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 5, (byte)(number) 2, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 2, (byte)(number) 5, (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 7, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 2, (byte)(number) 5, (byte)(number) 4, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 7, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 4 } (const byte*) SCREEN = (byte*)(number) $400 (void()) init_font_hex((byte*) init_font_hex::charset) (byte~) init_font_hex::$0 @@ -271,8 +268,6 @@ Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7 ← (un Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (unumber)(number) $f Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) FONT_HEX_PROTO ← (byte[]){ (byte)(number) 2, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 7, (byte)(number) 6, (byte)(number) 1, (byte)(number) 2, (byte)(number) 1, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 1, (byte)(number) 6, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 5, (byte)(number) 2, (byte)(number) 7, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 5, (byte)(number) 2, (byte)(number) 2, (byte)(number) 5, (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 5, (byte)(number) 7, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 5, (byte)(number) 6, (byte)(number) 2, (byte)(number) 5, (byte)(number) 4, (byte)(number) 5, (byte)(number) 2, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 7, (byte)(number) 7, (byte)(number) 4, (byte)(number) 6, (byte)(number) 4, (byte)(number) 4 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) init_font_hex::idx#0 ← (unumber)(number) 0 Inlining cast *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#0) ← (unumber)(number) 0 Inlining cast *((byte*) init_font_hex::charset#4 + (byte) init_font_hex::idx#6) ← (unumber)(number) 0 @@ -281,6 +276,86 @@ Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1 Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53272 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 7 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 7 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 7 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 1 +Simplifying constant integer cast 6 +Simplifying constant integer cast 3 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 7 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 7 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 2 +Simplifying constant integer cast 5 +Simplifying constant integer cast 4 +Simplifying constant integer cast 5 +Simplifying constant integer cast 2 +Simplifying constant integer cast 6 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 5 +Simplifying constant integer cast 6 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 4 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 Simplifying constant integer cast 0 @@ -292,86 +367,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 5 Simplifying constant integer cast 8 Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 7 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 7 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 7 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 1 -Simplifying constant integer cast 6 -Simplifying constant integer cast 3 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 7 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 7 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 2 -Simplifying constant integer cast 5 -Simplifying constant integer cast 4 -Simplifying constant integer cast 5 -Simplifying constant integer cast 2 -Simplifying constant integer cast 6 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 5 -Simplifying constant integer cast 6 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 4 -Simplifying constant integer cast 7 -Simplifying constant integer cast 7 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 Simplifying constant integer cast $3fff Simplifying constant integer cast 4 Simplifying constant integer cast 4 @@ -421,22 +416,19 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) init_font_hex::$3 [19] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [29] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [34] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) main::$2 [62] if((byte) main::c#1!=rangelast(0,$ff)) goto main::@1 +Simple Condition (bool~) main::$2 [61] if((byte) main::c#1!=rangelast(0,$ff)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const byte*) main::toD0181_screen#0 = SCREEN Constant (const byte*) main::toD0181_gfx#0 = CHARSET Constant (const byte*) init_font_hex::charset#1 = CHARSET Constant (const byte) main::c#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO -Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0 Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification @@ -446,8 +438,8 @@ Resolved ranged next value [27] init_font_hex::c1#1 ← ++ init_font_hex::c1#4 t Resolved ranged comparison value [29] if(init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 to (number) $10 Resolved ranged next value [32] init_font_hex::c#1 ← ++ init_font_hex::c#6 to ++ Resolved ranged comparison value [34] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to (number) $10 -Resolved ranged next value [60] main::c#1 ← ++ main::c#2 to ++ -Resolved ranged comparison value [62] if(main::c#1!=rangelast(0,$ff)) goto main::@1 to (number) 0 +Resolved ranged next value [59] main::c#1 ← ++ main::c#2 to ++ +Resolved ranged comparison value [61] if(main::c#1!=rangelast(0,$ff)) goto main::@1 to (number) 0 Simplifying expression containing zero init_font_hex::charset#2 in [8] *((byte*) init_font_hex::charset#2 + (const byte) init_font_hex::idx#0) ← (byte) 0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte) init_font_hex::idx#4 and assignment [15] (byte) init_font_hex::idx#4 ← ++ (byte) init_font_hex::idx#3 @@ -491,13 +483,13 @@ Constant right-side identified [22] (byte) main::toD0181_return#0 ← (const byt Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7 Successful SSA optimization Pass2ConstantIdentification +Inlining constant with var siblings (const byte*) init_font_hex::proto_hi#0 Inlining constant with var siblings (const byte) init_font_hex::c#0 +Inlining constant with var siblings (const byte*) init_font_hex::proto_lo#0 Inlining constant with var siblings (const byte) init_font_hex::c1#0 Inlining constant with var siblings (const byte) init_font_hex::idx#0 Inlining constant with var siblings (const byte) init_font_hex::i#0 Inlining constant with var siblings (const byte*) init_font_hex::charset#1 -Inlining constant with var siblings (const byte*) init_font_hex::proto_hi#0 -Inlining constant with var siblings (const byte*) init_font_hex::proto_lo#0 Inlining constant with var siblings (const byte) init_font_hex::idx#1 Inlining constant with var siblings (const byte) main::c#0 Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN @@ -527,7 +519,6 @@ Added new block during phi lifting init_font_hex::@8(between init_font_hex::@4 a Added new block during phi lifting init_font_hex::@9(between init_font_hex::@3 and init_font_hex::@3) Added new block during phi lifting main::@5(between main::@1 and main::@1) 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 @11 Adding NOP phi() at start of @end @@ -537,22 +528,21 @@ Adding NOP phi() at start of main::toD0181_@return Adding NOP phi() at start of main::@4 Adding NOP phi() at start of init_font_hex CALL GRAPH -Calls in [] to main:3 -Calls in [main] to init_font_hex:10 +Calls in [] to main:2 +Calls in [main] to init_font_hex:9 Created 9 initial phi equivalence classes -Coalesced [17] main::c#3 ← main::c#1 -Coalesced [20] init_font_hex::charset#9 ← init_font_hex::charset#5 -Coalesced [42] init_font_hex::charset#8 ← init_font_hex::charset#0 -Coalesced [43] init_font_hex::proto_hi#7 ← init_font_hex::proto_hi#1 -Coalesced [44] init_font_hex::c#7 ← init_font_hex::c#1 -Coalesced (already) [45] init_font_hex::charset#10 ← init_font_hex::charset#0 -Coalesced [46] init_font_hex::proto_lo#5 ← init_font_hex::proto_lo#1 -Coalesced [47] init_font_hex::c1#5 ← init_font_hex::c1#1 -Coalesced [48] init_font_hex::i#3 ← init_font_hex::i#1 -Coalesced [49] init_font_hex::idx#7 ← init_font_hex::idx#2 +Coalesced [16] main::c#3 ← main::c#1 +Coalesced [19] init_font_hex::charset#9 ← init_font_hex::charset#5 +Coalesced [41] init_font_hex::charset#8 ← init_font_hex::charset#0 +Coalesced [42] init_font_hex::proto_hi#7 ← init_font_hex::proto_hi#1 +Coalesced [43] init_font_hex::c#7 ← init_font_hex::c#1 +Coalesced (already) [44] init_font_hex::charset#10 ← init_font_hex::charset#0 +Coalesced [45] init_font_hex::proto_lo#5 ← init_font_hex::proto_lo#1 +Coalesced [46] init_font_hex::c1#5 ← init_font_hex::c1#1 +Coalesced [47] init_font_hex::i#3 ← init_font_hex::i#1 +Coalesced [48] init_font_hex::idx#7 ← init_font_hex::idx#2 Coalesced down to 8 phi equivalence classes -Culled Empty Block (label) @9 Culled Empty Block (label) @11 Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@4 diff --git a/src/test/ref/function-pointer-noarg-call-5.log b/src/test/ref/function-pointer-noarg-call-5.log index e0db67f3a..3208764ae 100644 --- a/src/test/ref/function-pointer-noarg-call-5.log +++ b/src/test/ref/function-pointer-noarg-call-5.log @@ -12,7 +12,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (void()*~) $0 ← & (void()) fn1() (void()*~) $1 ← & (void()) fn2() - (void()*[2]) fns ← { (void()*~) $0, (void()*~) $1 } + (void()*[2]) fns ← { (void()*)(void()*~) $0, (void()*)(void()*~) $1 } to:@3 (void()) main() @@ -95,6 +95,8 @@ Inlining cast (byte) main::i#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 +Simplifying constant integer cast (void()*~) $0 +Simplifying constant integer cast (void()*~) $1 Simplifying constant integer cast 0 Simplifying constant integer cast 1 Successful SSA optimization PassNCastSimplification diff --git a/src/test/ref/halfscii.log b/src/test/ref/halfscii.log index 8f0aaa948..7a0c66709 100644 --- a/src/test/ref/halfscii.log +++ b/src/test/ref/halfscii.log @@ -7,7 +7,6 @@ Identified constant variable (byte*) CHARSET4 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) bits_count ← { (number) 0, (number) 1, (number) 1, (number) 2, (number) 1, (number) 2, (number) 2, (number) 3, (number) 1, (number) 2, (number) 2, (number) 3, (number) 2, (number) 3, (number) 3, (number) 4 } to:@1 (void()) main() @@ -29,7 +28,7 @@ main::@1: scope:[main] from main main::@5 (number~) main::$4 ← (number~) main::$1 | (number~) main::$3 (number~) main::$5 ← (number~) main::$4 / (number) 2 (number~) main::$6 ← (number~) main::$5 / (number) 4 - (byte) main::bits#0 ← *((byte[]) bits_count + (number~) main::$6) + (byte) main::bits#0 ← *((const byte[]) bits_count + (number~) main::$6) (bool~) main::$7 ← (byte) main::bits#0 >= (number) 2 (bool~) main::$8 ← ! (bool~) main::$7 if((bool~) main::$8) goto main::@2 @@ -46,7 +45,7 @@ main::@2: scope:[main] from main::@1 main::@6 (number~) main::$13 ← (number~) main::$12 / (number) 4 (number~) main::$14 ← (number~) main::$11 | (number~) main::$13 (number~) main::$15 ← (number~) main::$14 / (number) 2 - (byte) main::bits#1 ← *((byte[]) bits_count + (number~) main::$15) + (byte) main::bits#1 ← *((const byte[]) bits_count + (number~) main::$15) (bool~) main::$16 ← (byte) main::bits#1 >= (number) 2 (bool~) main::$17 ← ! (bool~) main::$16 if((bool~) main::$17) goto main::@3 @@ -71,7 +70,7 @@ main::@3: scope:[main] from main::@2 main::@7 (number~) main::$22 ← *((byte*) main::chargen1#2) & (number) 6 (number~) main::$23 ← (number~) main::$22 / (number) 2 (number~) main::$24 ← (number~) main::$21 | (number~) main::$23 - (byte) main::bits#2 ← *((byte[]) bits_count + (number~) main::$24) + (byte) main::bits#2 ← *((const byte[]) bits_count + (number~) main::$24) (bool~) main::$25 ← (byte) main::bits#2 >= (number) 2 (bool~) main::$26 ← ! (bool~) main::$25 if((bool~) main::$26) goto main::@4 @@ -95,7 +94,7 @@ main::@4: scope:[main] from main::@3 main::@8 (number~) main::$30 ← (number~) main::$29 * (number) 4 (number~) main::$31 ← *((byte*) main::chargen1#3) & (number) 1 (number~) main::$32 ← (number~) main::$30 | (number~) main::$31 - (byte) main::bits#3 ← *((byte[]) bits_count + (number~) main::$32) + (byte) main::bits#3 ← *((const byte[]) bits_count + (number~) main::$32) (bool~) main::$33 ← (byte) main::bits#3 >= (number) 2 (bool~) main::$34 ← ! (bool~) main::$33 if((bool~) main::$34) goto main::@5 @@ -164,7 +163,7 @@ SYMBOL TABLE SSA (const byte*) D018 = (byte*)(number) $d018 (const byte*) PROCPORT = (byte*)(number) 1 (const byte*) SCREEN = (byte*)(number) $400 -(byte[]) bits_count +(const byte[]) bits_count = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 1, (byte)(number) 2, (byte)(number) 2, (byte)(number) 3, (byte)(number) 1, (byte)(number) 2, (byte)(number) 2, (byte)(number) 3, (byte)(number) 2, (byte)(number) 3, (byte)(number) 3, (byte)(number) 4 } (void()) main() (byte*~) main::$0 (number~) main::$1 @@ -344,18 +343,11 @@ Adding number conversion cast (unumber) main::$35 in (number~) main::$35 ← (by Adding number conversion cast (unumber) $37 in *((const byte*) PROCPORT) ← (number) $37 Adding number conversion cast (unumber) $19 in *((const byte*) D018) ← (number) $19 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) bits_count ← (byte[]){ (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 2, (byte)(number) 1, (byte)(number) 2, (byte)(number) 2, (byte)(number) 3, (byte)(number) 1, (byte)(number) 2, (byte)(number) 2, (byte)(number) 3, (byte)(number) 2, (byte)(number) 3, (byte)(number) 3, (byte)(number) 4 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) PROCPORT) ← (unumber)(number) $32 Inlining cast (byte) main::bits_gen#0 ← (unumber)(number) 0 Inlining cast *((const byte*) PROCPORT) ← (unumber)(number) $37 Inlining cast *((const byte*) D018) ← (unumber)(number) $19 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 53248 -Simplifying constant pointer cast (byte*) 1 -Simplifying constant pointer cast (byte*) 53272 -Simplifying constant pointer cast (byte*) 10240 Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 1 @@ -372,6 +364,11 @@ Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast 3 Simplifying constant integer cast 4 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 53248 +Simplifying constant pointer cast (byte*) 1 +Simplifying constant pointer cast (byte*) 53272 +Simplifying constant pointer cast (byte*) 10240 Simplifying constant integer cast $32 Simplifying constant integer cast 0 Simplifying constant integer cast 1 @@ -472,10 +469,10 @@ Inferred type updated to byte in (unumber~) main::$32 ← (byte~) main::$30 | (b Inferred type updated to byte in (unumber~) main::$27 ← (byte) main::bits_gen#14 + (byte) 1 Inferred type updated to byte in (unumber~) main::$36 ← (byte) main::bits_gen#15 * (byte) 2 Inferred type updated to byte in (unumber~) main::$35 ← (byte) main::bits_gen#16 + (byte) 1 -Inversing boolean not [17] (bool~) main::$8 ← (byte) main::bits#0 < (byte) 2 from [16] (bool~) main::$7 ← (byte) main::bits#0 >= (byte) 2 -Inversing boolean not [29] (bool~) main::$17 ← (byte) main::bits#1 < (byte) 2 from [28] (bool~) main::$16 ← (byte) main::bits#1 >= (byte) 2 -Inversing boolean not [44] (bool~) main::$26 ← (byte) main::bits#2 < (byte) 2 from [43] (bool~) main::$25 ← (byte) main::bits#2 >= (byte) 2 -Inversing boolean not [58] (bool~) main::$34 ← (byte) main::bits#3 < (byte) 2 from [57] (bool~) main::$33 ← (byte) main::bits#3 >= (byte) 2 +Inversing boolean not [16] (bool~) main::$8 ← (byte) main::bits#0 < (byte) 2 from [15] (bool~) main::$7 ← (byte) main::bits#0 >= (byte) 2 +Inversing boolean not [28] (bool~) main::$17 ← (byte) main::bits#1 < (byte) 2 from [27] (bool~) main::$16 ← (byte) main::bits#1 >= (byte) 2 +Inversing boolean not [43] (bool~) main::$26 ← (byte) main::bits#2 < (byte) 2 from [42] (bool~) main::$25 ← (byte) main::bits#2 >= (byte) 2 +Inversing boolean not [57] (bool~) main::$34 ← (byte) main::bits#3 < (byte) 2 from [56] (bool~) main::$33 ← (byte) main::bits#3 >= (byte) 2 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) main::chargen1#0 = (byte*~) main::$0 (byte*) main::chargen1#4 Alias (byte) main::bits_gen#1 = (byte~) main::$10 (byte) main::bits_gen#12 @@ -503,27 +500,24 @@ Alias (byte*) main::chargen#10 = (byte*) main::chargen#3 (byte*) main::chargen#2 Alias (byte*) main::chargen1#0 = (byte*) main::chargen1#1 (byte*) main::chargen1#2 (byte*) main::chargen1#3 Alias (byte*) main::charset4#10 = (byte*) main::charset4#7 (byte*) main::charset4#5 (byte*) main::charset4#3 (byte*) main::charset4#2 Successful SSA optimization Pass2AliasElimination -Simple Condition (bool~) main::$8 [18] if((byte) main::bits#0<(byte) 2) goto main::@2 -Simple Condition (bool~) main::$17 [30] if((byte) main::bits#1<(byte) 2) goto main::@3 -Simple Condition (bool~) main::$26 [45] if((byte) main::bits#2<(byte) 2) goto main::@4 -Simple Condition (bool~) main::$34 [59] if((byte) main::bits#3<(byte) 2) goto main::@5 -Simple Condition (bool~) main::$39 [72] if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1 -Simple Condition (bool~) main::$40 [83] if((byte) main::i#1!=rangelast(0,$ff)) goto main::@11 +Simple Condition (bool~) main::$8 [17] if((byte) main::bits#0<(byte) 2) goto main::@2 +Simple Condition (bool~) main::$17 [29] if((byte) main::bits#1<(byte) 2) goto main::@3 +Simple Condition (bool~) main::$26 [44] if((byte) main::bits#2<(byte) 2) goto main::@4 +Simple Condition (bool~) main::$34 [58] if((byte) main::bits#3<(byte) 2) goto main::@5 +Simple Condition (bool~) main::$39 [71] if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1 +Simple Condition (bool~) main::$40 [82] if((byte) main::i#1!=rangelast(0,$ff)) goto main::@11 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [70] (byte*~) main::$38 ← (const byte*) CHARGEN + (word) $800 +Constant right-side identified [69] (byte*~) main::$38 ← (const byte*) CHARGEN + (word) $800 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) bits_count = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 } Constant (const byte*) main::chargen#0 = CHARGEN Constant (const byte*) main::charset4#0 = CHARSET4 Constant (const byte) main::bits_gen#0 = 0 Constant (const byte*) main::$38 = CHARGEN+$800 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [81] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [83] if(main::i#1!=rangelast(0,$ff)) goto main::@11 to (number) 0 -Simplifying expression containing zero 1 in [32] (byte) main::bits_gen#2 ← (const byte) main::bits_gen#0 + (byte) 1 +Resolved ranged next value [80] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [82] if(main::i#1!=rangelast(0,$ff)) goto main::@11 to (number) 0 +Simplifying expression containing zero 1 in [31] (byte) main::bits_gen#2 ← (const byte) main::bits_gen#0 + (byte) 1 Successful SSA optimization PassNSimplifyExpressionWithZero Adding number conversion cast (unumber) 0 in if((byte) main::i#1!=(number) 0) goto main::@11 Successful SSA optimization PassNAddNumberTypeConversions diff --git a/src/test/ref/hex2dec.log b/src/test/ref/hex2dec.log index 7a46f0c22..e2ec4f222 100644 --- a/src/test/ref/hex2dec.log +++ b/src/test/ref/hex2dec.log @@ -2,8 +2,8 @@ Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$2 Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$6 ← & (byte*) utoa16w::dst Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$10 ← & (byte*) utoa16w::dst Setting inferred volatile on symbol affected by address-of (byte**~) utoa16w::$14 ← & (byte*) utoa16w::dst -Fixing pointer array-indexing *((word[]) UTOA10_SUB + (byte) utoa10w::i) -Fixing pointer array-indexing *((word[]) UTOA10_SUB + (byte) utoa10w::i) +Fixing pointer array-indexing *((const word[]) UTOA10_SUB + (byte) utoa10w::i) +Fixing pointer array-indexing *((const word[]) UTOA10_SUB + (byte) utoa10w::i) Identified constant variable (byte*) cls::screen Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@13 @@ -16,6 +16,7 @@ Culled Empty Block (label) main::@11 Culled Empty Block (label) main::@12 Culled Empty Block (label) @1 Culled Empty Block (label) cls::@2 +Culled Empty Block (label) @2 Culled Empty Block (label) utoa10w::@1 Culled Empty Block (label) utoa10w::@5 Culled Empty Block (label) utoa10w::@6 @@ -26,7 +27,7 @@ Culled Empty Block (label) utoa16n::@5 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@2 + to:@5 (void()) main() main: scope:[main] from @5 @@ -140,10 +141,6 @@ cls::@1: scope:[cls] from cls cls::@1 cls::@return: scope:[cls] from cls::@1 return to:@return -@2: scope:[] from @begin - (word[]) UTOA10_SUB ← { (number) $7530, (number) $2710, (number) $bb8, (number) $3e8, (number) $12c, (number) $64, (number) $1e, (number) $a } - (byte[]) UTOA10_VAL ← { (number) 3, (number) 1, (number) 3, (number) 1, (number) 3, (number) 1, (number) 3, (number) 1 } - to:@5 (void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst) utoa10w: scope:[utoa10w] from main::@20 @@ -160,7 +157,7 @@ utoa10w::@2: scope:[utoa10w] from utoa10w utoa10w::@10 utoa10w::@3 (word) utoa10w::value#2 ← phi( utoa10w/(word) utoa10w::value#5 utoa10w::@10/(word) utoa10w::value#6 utoa10w::@3/(word) utoa10w::value#1 ) (byte) utoa10w::i#2 ← phi( utoa10w/(byte) utoa10w::i#0 utoa10w::@10/(byte) utoa10w::i#1 utoa10w::@3/(byte) utoa10w::i#3 ) (byte~) utoa10w::$8 ← (byte) utoa10w::i#2 * (const byte) SIZEOF_WORD - (bool~) utoa10w::$1 ← (word) utoa10w::value#2 >= *((word[]) UTOA10_SUB + (byte~) utoa10w::$8) + (bool~) utoa10w::$1 ← (word) utoa10w::value#2 >= *((const word[]) UTOA10_SUB + (byte~) utoa10w::$8) if((bool~) utoa10w::$1) goto utoa10w::@3 to:utoa10w::@4 utoa10w::@3: scope:[utoa10w] from utoa10w::@2 @@ -168,9 +165,9 @@ utoa10w::@3: scope:[utoa10w] from utoa10w::@2 (word) utoa10w::value#3 ← phi( utoa10w::@2/(word) utoa10w::value#2 ) (byte) utoa10w::i#3 ← phi( utoa10w::@2/(byte) utoa10w::i#2 ) (byte) utoa10w::digit#3 ← phi( utoa10w::@2/(byte) utoa10w::digit#5 ) - (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((byte[]) UTOA10_VAL + (byte) utoa10w::i#3) + (byte) utoa10w::digit#1 ← (byte) utoa10w::digit#3 + *((const byte[]) UTOA10_VAL + (byte) utoa10w::i#3) (byte~) utoa10w::$9 ← (byte) utoa10w::i#3 * (const byte) SIZEOF_WORD - (word) utoa10w::value#1 ← (word) utoa10w::value#3 - *((word[]) UTOA10_SUB + (byte~) utoa10w::$9) + (word) utoa10w::value#1 ← (word) utoa10w::value#3 - *((const word[]) UTOA10_SUB + (byte~) utoa10w::$9) (byte) utoa10w::bStarted#1 ← (number) 1 to:utoa10w::@2 utoa10w::@4: scope:[utoa10w] from utoa10w::@2 @@ -337,7 +334,7 @@ utoa16n::@return: scope:[utoa16n] from utoa16n::@2 (byte) utoa16n::return#5 ← (byte) utoa16n::return#9 return to:@return -@5: scope:[] from @2 +@5: scope:[] from @begin call main to:@6 @6: scope:[] from @5 @@ -345,15 +342,14 @@ utoa16n::@return: scope:[utoa16n] from utoa16n::@2 @end: scope:[] from @6 SYMBOL TABLE SSA -(label) @2 (label) @5 (label) @6 (label) @begin (label) @end (const byte[]) DIGITS = (string) "0123456789abcdef" (const byte) SIZEOF_WORD = (byte) 2 -(word[]) UTOA10_SUB -(byte[]) UTOA10_VAL +(const word[]) UTOA10_SUB = { (word)(number) $7530, (word)(number) $2710, (word)(number) $bb8, (word)(number) $3e8, (word)(number) $12c, (word)(number) $64, (word)(number) $1e, (word)(number) $a } +(const byte[]) UTOA10_VAL = { (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1 } (const byte*) bordercol = (byte*)(number) $d020 (void()) cls() (byte*~) cls::$0 @@ -639,9 +635,6 @@ Adding number conversion cast (unumber) 0 in (bool~) utoa16n::$0 ← (byte) utoa Adding number conversion cast (unumber) 0 in (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (number) 0 Adding number conversion cast (unumber) 1 in (byte) utoa16n::started#4 ← (number) 1 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) UTOA10_SUB ← (word[]){ (word)(number) $7530, (word)(number) $2710, (word)(number) $bb8, (word)(number) $3e8, (word)(number) $12c, (word)(number) $64, (word)(number) $1e, (word)(number) $a } -Added casts to value list in (byte[]) UTOA10_VAL ← (byte[]){ (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*) main::screen#0 ← (byte*)(number) $400 Inlining cast *((const byte*) bordercol) ← (unumber)(number) 1 Inlining cast (word) utoa16w::value#0 ← (unumber)(number) 0 @@ -667,6 +660,22 @@ Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast $7530 +Simplifying constant integer cast $2710 +Simplifying constant integer cast $bb8 +Simplifying constant integer cast $3e8 +Simplifying constant integer cast $12c +Simplifying constant integer cast $64 +Simplifying constant integer cast $1e +Simplifying constant integer cast $a +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 +Simplifying constant integer cast 3 +Simplifying constant integer cast 1 Simplifying constant integer cast $80 Simplifying constant integer cast 1 Simplifying constant integer cast $30 @@ -688,22 +697,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast $50 Simplifying constant integer cast 3 Simplifying constant integer cast $3e7 -Simplifying constant integer cast $7530 -Simplifying constant integer cast $2710 -Simplifying constant integer cast $bb8 -Simplifying constant integer cast $3e8 -Simplifying constant integer cast $12c -Simplifying constant integer cast $64 -Simplifying constant integer cast $1e -Simplifying constant integer cast $a -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 -Simplifying constant integer cast 3 -Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 1 @@ -767,10 +760,10 @@ Inferred type updated to byte in (unumber~) main::$3 ← (byte~) main::$1 | (byt Inferred type updated to byte in (unumber~) utoa10w::$2 ← (byte) utoa10w::i#4 & (byte) 1 Inferred type updated to byte in (unumber~) utoa16w::$5 ← (byte~) utoa16w::$4 & (byte) $f Inferred type updated to byte in (unumber~) utoa16w::$13 ← (byte~) utoa16w::$12 & (byte) $f -Inversing boolean not [86] (bool~) utoa10w::$4 ← (byte~) utoa10w::$2 == (byte) 0 from [85] (bool~) utoa10w::$3 ← (byte~) utoa10w::$2 != (byte) 0 -Inversing boolean not [94] (bool~) utoa10w::$6 ← (byte) utoa10w::bStarted#2 == (byte) 0 from [93] (bool~) utoa10w::$5 ← (byte) utoa10w::bStarted#2 != (byte) 0 -Inversing boolean not [155] (bool~) utoa16n::$1 ← (byte) utoa16n::nybble#4 == (byte) 0 from [154] (bool~) utoa16n::$0 ← (byte) utoa16n::nybble#4 != (byte) 0 -Inversing boolean not [159] (bool~) utoa16n::$3 ← (byte) utoa16n::started#5 == (byte) 0 from [158] (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (byte) 0 +Inversing boolean not [84] (bool~) utoa10w::$4 ← (byte~) utoa10w::$2 == (byte) 0 from [83] (bool~) utoa10w::$3 ← (byte~) utoa10w::$2 != (byte) 0 +Inversing boolean not [92] (bool~) utoa10w::$6 ← (byte) utoa10w::bStarted#2 == (byte) 0 from [91] (bool~) utoa10w::$5 ← (byte) utoa10w::bStarted#2 != (byte) 0 +Inversing boolean not [153] (bool~) utoa16n::$1 ← (byte) utoa16n::nybble#4 == (byte) 0 from [152] (bool~) utoa16n::$0 ← (byte) utoa16n::nybble#4 != (byte) 0 +Inversing boolean not [157] (bool~) utoa16n::$3 ← (byte) utoa16n::started#5 == (byte) 0 from [156] (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) main::rst#0 = (byte~) main::$3 Alias (byte*) main::screen#0 = (byte*) main::screen#5 @@ -832,22 +825,19 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) main::$4 [8] if((byte) main::rst#0!=(byte) $30) goto main::@4 Simple Condition (bool~) main::$18 [53] if(*((const byte[]) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@7 Simple Condition (bool~) cls::$1 [66] if((byte*) cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1 -Simple Condition (bool~) utoa10w::$1 [77] if((word) utoa10w::value#10>=*((word[]) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@3 -Simple Condition (bool~) utoa10w::$4 [87] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@10 -Simple Condition (bool~) utoa10w::$7 [91] if((byte) utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 -Simple Condition (bool~) utoa10w::$6 [95] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@11 -Simple Condition (bool~) utoa16n::$1 [156] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@1 -Simple Condition (bool~) utoa16n::$3 [160] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@2 +Simple Condition (bool~) utoa10w::$1 [75] if((word) utoa10w::value#10>=*((const word[]) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@3 +Simple Condition (bool~) utoa10w::$4 [85] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@10 +Simple Condition (bool~) utoa10w::$7 [89] if((byte) utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 +Simple Condition (bool~) utoa10w::$6 [93] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@11 +Simple Condition (bool~) utoa16n::$1 [154] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@1 +Simple Condition (bool~) utoa16n::$3 [158] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [60] (byte*~) cls::$0 ← (const byte*) cls::screen + (word) $3e7 -Constant right-side identified [111] (word**) utoa16n::dst#0 ← & (byte*) utoa16w::dst#5 -Constant right-side identified [122] (word**) utoa16n::dst#1 ← & (byte*) utoa16w::dst#5 -Constant right-side identified [133] (word**) utoa16n::dst#2 ← & (byte*) utoa16w::dst#5 -Constant right-side identified [144] (word**) utoa16n::dst#3 ← & (byte*) utoa16w::dst#5 +Constant right-side identified [109] (word**) utoa16n::dst#0 ← & (byte*) utoa16w::dst#5 +Constant right-side identified [120] (word**) utoa16n::dst#1 ← & (byte*) utoa16w::dst#5 +Constant right-side identified [131] (word**) utoa16n::dst#2 ← & (byte*) utoa16w::dst#5 +Constant right-side identified [142] (word**) utoa16n::dst#3 ← & (byte*) utoa16w::dst#5 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) $7530, (word) $2710, (word) $bb8, (word) $3e8, (word) $12c, (word) $64, (word) $1e, (word) $a } -Identified constant from value list (byte[]) { (byte) 3, (byte) 1, (byte) 3, (byte) 1, (byte) 3, (byte) 1, (byte) 3, (byte) 1 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) main::screen#0 = (byte*) 1024 Constant (const word) utoa16w::value#0 = 0 Constant (const word) utoa16w::value#1 = $4d2 @@ -857,8 +847,6 @@ Constant (const word) utoa16w::value#4 = $e608 Constant (const byte) main::i#0 = 0 Constant (const byte*) cls::$0 = cls::screen+$3e7 Constant (const byte*) cls::sc#0 = cls::screen -Constant (const word[]) UTOA10_SUB = { $7530, $2710, $bb8, $3e8, $12c, $64, $1e, $a } -Constant (const byte[]) UTOA10_VAL = { 3, 1, 3, 1, 3, 1, 3, 1 } Constant (const byte) utoa10w::bStarted#0 = 0 Constant (const byte) utoa10w::digit#0 = 0 Constant (const byte) utoa10w::i#0 = 0 @@ -878,8 +866,8 @@ if() condition always true - replacing block destination [2] if(true) goto main: Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [64] cls::sc#1 ← ++ cls::sc#2 to ++ Resolved ranged comparison value [66] if(cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1 -Resolved ranged next value [89] utoa10w::i#1 ← ++ utoa10w::i#2 to ++ -Resolved ranged comparison value [91] if(utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 to (number) 8 +Resolved ranged next value [87] utoa10w::i#1 ← ++ utoa10w::i#2 to ++ +Resolved ranged comparison value [89] if(utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 to (number) 8 Eliminating unused variable (byte) utoa16w::started#3 and assignment [81] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2 Eliminating unused variable (byte) utoa16n::return#3 and assignment [85] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4 Successful SSA optimization PassNEliminateUnusedVars @@ -992,7 +980,6 @@ Added new block during phi lifting utoa10w::@14(between utoa10w::@4 and utoa10w: Added new block during phi lifting utoa10w::@15(between utoa10w::@8 and utoa10w::@11) Added new block during phi lifting utoa16n::@6(between utoa16n and utoa16n::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 Adding NOP phi() at start of @5 Adding NOP phi() at start of @6 Adding NOP phi() at start of @end @@ -1003,42 +990,41 @@ Adding NOP phi() at start of utoa16n::@3 Adding NOP phi() at start of utoa16n::@2 Adding NOP phi() at start of cls CALL GRAPH -Calls in [] to main:3 -Calls in [main] to cls:7 utoa16w:18 utoa16w:22 utoa16w:26 utoa16w:30 utoa16w:34 utoa10w:39 -Calls in [utoa16w] to utoa16n:85 utoa16n:93 utoa16n:101 utoa16n:105 +Calls in [] to main:2 +Calls in [main] to cls:6 utoa16w:17 utoa16w:21 utoa16w:25 utoa16w:29 utoa16w:33 utoa10w:38 +Calls in [utoa16w] to utoa16n:84 utoa16n:92 utoa16n:100 utoa16n:104 Created 15 initial phi equivalence classes -Coalesced [17] utoa16w::dst#14 ← utoa16w::dst#0 -Coalesced [21] utoa16w::dst#10 ← utoa16w::dst#1 -Coalesced [25] utoa16w::dst#11 ← utoa16w::dst#2 -Coalesced [29] utoa16w::dst#12 ← utoa16w::dst#3 -Coalesced [33] utoa16w::dst#13 ← utoa16w::dst#4 -Coalesced [45] main::i#4 ← main::i#1 -Coalesced [46] utoa10w::value#11 ← utoa10w::value#0 -Coalesced [55] utoa10w::dst#17 ← utoa10w::dst#1 -Coalesced [57] utoa10w::dst#14 ← utoa10w::dst#7 -Coalesced [66] utoa10w::i#9 ← utoa10w::i#1 -Coalesced (already) [67] utoa10w::value#12 ← utoa10w::value#10 -Coalesced [68] utoa10w::digit#9 ← utoa10w::digit#7 -Coalesced (already) [69] utoa10w::bStarted#8 ← utoa10w::bStarted#2 -Coalesced [70] utoa10w::dst#12 ← utoa10w::dst#4 -Coalesced (already) [71] utoa10w::dst#16 ← utoa10w::dst#11 -Coalesced (already) [72] utoa10w::dst#15 ← utoa10w::dst#11 -Coalesced (already) [73] utoa10w::digit#11 ← utoa10w::digit#3 -Coalesced (already) [77] utoa10w::i#10 ← utoa10w::i#2 -Coalesced [78] utoa10w::value#13 ← utoa10w::value#1 -Coalesced [79] utoa10w::digit#10 ← utoa10w::digit#1 -Coalesced (already) [80] utoa10w::dst#13 ← utoa10w::dst#11 -Coalesced [84] utoa16n::nybble#8 ← utoa16n::nybble#0 -Coalesced [91] utoa16n::nybble#9 ← utoa16n::nybble#1 -Coalesced [92] utoa16n::started#9 ← utoa16n::started#1 -Coalesced [99] utoa16n::nybble#10 ← utoa16n::nybble#2 -Coalesced [100] utoa16n::started#10 ← utoa16n::started#2 -Coalesced [104] utoa16n::nybble#11 ← utoa16n::nybble#3 -Coalesced [117] utoa16n::return#10 ← utoa16n::started#7 -Coalesced [124] cls::sc#3 ← cls::sc#1 +Coalesced [16] utoa16w::dst#14 ← utoa16w::dst#0 +Coalesced [20] utoa16w::dst#10 ← utoa16w::dst#1 +Coalesced [24] utoa16w::dst#11 ← utoa16w::dst#2 +Coalesced [28] utoa16w::dst#12 ← utoa16w::dst#3 +Coalesced [32] utoa16w::dst#13 ← utoa16w::dst#4 +Coalesced [44] main::i#4 ← main::i#1 +Coalesced [45] utoa10w::value#11 ← utoa10w::value#0 +Coalesced [54] utoa10w::dst#17 ← utoa10w::dst#1 +Coalesced [56] utoa10w::dst#14 ← utoa10w::dst#7 +Coalesced [65] utoa10w::i#9 ← utoa10w::i#1 +Coalesced (already) [66] utoa10w::value#12 ← utoa10w::value#10 +Coalesced [67] utoa10w::digit#9 ← utoa10w::digit#7 +Coalesced (already) [68] utoa10w::bStarted#8 ← utoa10w::bStarted#2 +Coalesced [69] utoa10w::dst#12 ← utoa10w::dst#4 +Coalesced (already) [70] utoa10w::dst#16 ← utoa10w::dst#11 +Coalesced (already) [71] utoa10w::dst#15 ← utoa10w::dst#11 +Coalesced (already) [72] utoa10w::digit#11 ← utoa10w::digit#3 +Coalesced (already) [76] utoa10w::i#10 ← utoa10w::i#2 +Coalesced [77] utoa10w::value#13 ← utoa10w::value#1 +Coalesced [78] utoa10w::digit#10 ← utoa10w::digit#1 +Coalesced (already) [79] utoa10w::dst#13 ← utoa10w::dst#11 +Coalesced [83] utoa16n::nybble#8 ← utoa16n::nybble#0 +Coalesced [90] utoa16n::nybble#9 ← utoa16n::nybble#1 +Coalesced [91] utoa16n::started#9 ← utoa16n::started#1 +Coalesced [98] utoa16n::nybble#10 ← utoa16n::nybble#2 +Coalesced [99] utoa16n::started#10 ← utoa16n::started#2 +Coalesced [103] utoa16n::nybble#11 ← utoa16n::nybble#3 +Coalesced [116] utoa16n::return#10 ← utoa16n::started#7 +Coalesced [123] cls::sc#3 ← cls::sc#1 Coalesced down to 11 phi equivalence classes -Culled Empty Block (label) @2 Culled Empty Block (label) @6 Culled Empty Block (label) main::@15 Culled Empty Block (label) main::@1 diff --git a/src/test/ref/initializer-0.log b/src/test/ref/initializer-0.log index b84167a74..5841e1bee 100644 --- a/src/test/ref/initializer-0.log +++ b/src/test/ref/initializer-0.log @@ -2,7 +2,6 @@ Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) chars ← { (number) 1, (number) 2, (number) 3 } to:@1 (void()) main() @@ -13,7 +12,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::idx#2 ← phi( main/(byte) main::idx#0 main::@1/(byte) main::idx#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - *((const byte*) main::SCREEN + (byte) main::idx#2) ← *((byte[]) chars + (byte) main::i#2) + *((const byte*) main::SCREEN + (byte) main::idx#2) ← *((const byte[]) chars + (byte) main::i#2) (byte) main::idx#1 ← ++ (byte) main::idx#2 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2) (bool~) main::$0 ← (byte) main::i#1 != rangelast(0,2) @@ -34,7 +33,7 @@ SYMBOL TABLE SSA (label) @2 (label) @begin (label) @end -(byte[]) chars +(const byte[]) chars = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 } (void()) main() (bool~) main::$0 (label) main::@1 @@ -51,28 +50,23 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) chars ← (byte[]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 1 Simplifying constant integer cast 2 Simplifying constant integer cast 3 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Simple Condition (bool~) main::$0 [8] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Simple Condition (bool~) main::$0 [7] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) 1, (byte) 2, (byte) 3 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) chars = { 1, 2, 3 } Constant (const byte) main::idx#0 = 0 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [6] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [8] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 +Resolved ranged next value [5] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [7] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 Adding number conversion cast (unumber) 3 in if((byte) main::i#1!=(number) 3) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 3 diff --git a/src/test/ref/initializer-1.log b/src/test/ref/initializer-1.log index 0200d3772..4d3988852 100644 --- a/src/test/ref/initializer-1.log +++ b/src/test/ref/initializer-1.log @@ -1,10 +1,9 @@ -Fixing pointer array-indexing *((word[]) words + (byte) main::i) -Fixing pointer array-indexing *((word[]) words + (byte) main::i) +Fixing pointer array-indexing *((const word[]) words + (byte) main::i) +Fixing pointer array-indexing *((const word[]) words + (byte) main::i) Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (word[]) words ← { (number) 1, (number) 2, (number) 3 } to:@1 (void()) main() @@ -16,11 +15,11 @@ main::@1: scope:[main] from main main::@1 (byte) main::idx#3 ← phi( main/(byte) main::idx#0 main::@1/(byte) main::idx#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$3 ← (byte) main::i#2 * (const byte) SIZEOF_WORD - (byte~) main::$0 ← < *((word[]) words + (byte~) main::$3) + (byte~) main::$0 ← < *((const word[]) words + (byte~) main::$3) *((const byte*) main::SCREEN + (byte) main::idx#3) ← (byte~) main::$0 (byte) main::idx#1 ← ++ (byte) main::idx#3 (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_WORD - (byte~) main::$1 ← > *((word[]) words + (byte~) main::$4) + (byte~) main::$1 ← > *((const word[]) words + (byte~) main::$4) *((const byte*) main::SCREEN + (byte) main::idx#1) ← (byte~) main::$1 (byte) main::idx#2 ← ++ (byte) main::idx#1 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2) @@ -61,34 +60,29 @@ SYMBOL TABLE SSA (byte) main::idx#1 (byte) main::idx#2 (byte) main::idx#3 -(word[]) words +(const word[]) words = { (word)(number) 1, (word)(number) 2, (word)(number) 3 } Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) words ← (word[]){ (word)(number) 1, (word)(number) 2, (word)(number) 3 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 1 Simplifying constant integer cast 2 Simplifying constant integer cast 3 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Identified duplicate assignment right side [8] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_WORD +Identified duplicate assignment right side [7] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) main::$2 [14] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Simple Condition (bool~) main::$2 [13] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (word[]) { (word) 1, (word) 2, (word) 3 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) words = { 1, 2, 3 } Constant (const byte) main::idx#0 = 0 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [12] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [14] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 +Resolved ranged next value [11] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [13] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 Adding number conversion cast (unumber) 3 in if((byte) main::i#1!=(number) 3) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 3 diff --git a/src/test/ref/initializer-2.log b/src/test/ref/initializer-2.log index 7b93468c9..f794d4b3b 100644 --- a/src/test/ref/initializer-2.log +++ b/src/test/ref/initializer-2.log @@ -6,7 +6,7 @@ Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Point[]) points ← { { (number) 1, (number) 2 }, { (number) 3, (number) 4 }, { (number) 5, (number) 6 } } + (struct Point[]) points ← { (struct Point){ (byte)(number) 1, (byte)(number) 2 }, (struct Point){ (byte)(number) 3, (byte)(number) 4 }, (struct Point){ (byte)(number) 5, (byte)(number) 6 } } to:@1 (void()) main() @@ -71,8 +71,6 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Point[]) points ← (struct Point[]){ (struct Point){ (byte)(number) 1, (byte)(number) 2 }, (struct Point){ (byte)(number) 3, (byte)(number) 4 }, (struct Point){ (byte)(number) 5, (byte)(number) 6 } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 diff --git a/src/test/ref/initializer-3.log b/src/test/ref/initializer-3.log index ca1776cc8..408606bda 100644 --- a/src/test/ref/initializer-3.log +++ b/src/test/ref/initializer-3.log @@ -8,7 +8,7 @@ Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Point[]) points ← { { (number) 1, (number) 2 }, { (number) 3, (number) 4 }, { (number) 5, (number) 6 } } + (struct Point[]) points ← { (struct Point){ (byte)(number) 1, (signed word)(number) 2 }, (struct Point){ (byte)(number) 3, (signed word)(number) 4 }, (struct Point){ (byte)(number) 5, (signed word)(number) 6 } } to:@1 (void()) main() @@ -84,8 +84,6 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Point[]) points ← (struct Point[]){ (struct Point){ (byte)(number) 1, (signed word)(number) 2 }, (struct Point){ (byte)(number) 3, (signed word)(number) 4 }, (struct Point){ (byte)(number) 5, (signed word)(number) 6 } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 diff --git a/src/test/ref/inlinearrayproblem.log b/src/test/ref/inlinearrayproblem.log index e858274ad..7d45b7510 100644 --- a/src/test/ref/inlinearrayproblem.log +++ b/src/test/ref/inlinearrayproblem.log @@ -8,13 +8,12 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (byte[]) main::data ← { (number) 1, (number) 2, (number) 3 } (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte[]) main::txt + (byte) main::i#2) - *((const byte*) SCREEN2 + (byte) main::i#2) ← *((byte[]) main::data + (byte) main::i#2) + *((const byte*) SCREEN2 + (byte) main::i#2) ← *((const byte[]) main::data + (byte) main::i#2) (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,3) (bool~) main::$0 ← (byte) main::i#1 != rangelast(0,3) if((bool~) main::$0) goto main::@1 @@ -40,29 +39,24 @@ SYMBOL TABLE SSA (bool~) main::$0 (label) main::@1 (label) main::@return -(byte[]) main::data +(const byte[]) main::data = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 } (byte) main::i (byte) main::i#0 (byte) main::i#1 (byte) main::i#2 (const byte[]) main::txt = (string) "qwe"z -Added casts to value list in (byte[]) main::data ← (byte[]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 1 Simplifying constant integer cast 2 Simplifying constant integer cast 3 +Simplifying constant pointer cast (byte*) 1024 Successful SSA optimization PassNCastSimplification -Simple Condition (bool~) main::$0 [7] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 +Simple Condition (bool~) main::$0 [6] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) 1, (byte) 2, (byte) 3 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) main::data = { 1, 2, 3 } Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [5] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [7] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 +Resolved ranged next value [4] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [6] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 Adding number conversion cast (unumber) 4 in if((byte) main::i#1!=(number) 4) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 4 diff --git a/src/test/ref/inmemarray.log b/src/test/ref/inmemarray.log index f93fb0c9c..6882e06fd 100644 --- a/src/test/ref/inmemarray.log +++ b/src/test/ref/inmemarray.log @@ -3,7 +3,6 @@ Culled Empty Block (label) main::@4 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) TXT ← { (number) 3, (number) 1, (number) $d, (number) 5, (number) $c, (number) $f, (number) $14, (number) $20 } to:@1 (void()) main() @@ -14,7 +13,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) - *((const byte*) SCREEN + (byte) main::i#2) ← *((byte[]) TXT + (byte) main::j#3) + *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte[]) TXT + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 (bool~) main::$0 ← (byte) main::j#1 == (number) 8 (bool~) main::$1 ← ! (bool~) main::$0 @@ -47,7 +46,7 @@ SYMBOL TABLE SSA (label) @begin (label) @end (const byte*) SCREEN = (byte*)(number) $400 -(byte[]) TXT +(const byte[]) TXT = { (byte)(number) 3, (byte)(number) 1, (byte)(number) $d, (byte)(number) 5, (byte)(number) $c, (byte)(number) $f, (byte)(number) $14, (byte)(number) $20 } (void()) main() (bool~) main::$0 (bool~) main::$1 @@ -73,12 +72,9 @@ Adding number conversion cast (unumber) 0 in (byte) main::j#0 ← (number) 0 Adding number conversion cast (unumber) 8 in (bool~) main::$0 ← (byte) main::j#1 == (number) 8 Adding number conversion cast (unumber) 0 in (byte) main::j#2 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) TXT ← (byte[]){ (byte)(number) 3, (byte)(number) 1, (byte)(number) $d, (byte)(number) 5, (byte)(number) $c, (byte)(number) $f, (byte)(number) $14, (byte)(number) $20 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::j#0 ← (unumber)(number) 0 Inlining cast (byte) main::j#2 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 3 Simplifying constant integer cast 1 Simplifying constant integer cast $d @@ -87,6 +83,7 @@ Simplifying constant integer cast $c Simplifying constant integer cast $f Simplifying constant integer cast $14 Simplifying constant integer cast $20 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Simplifying constant integer cast 8 Simplifying constant integer cast 0 @@ -95,24 +92,21 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Inversing boolean not [7] (bool~) main::$1 ← (byte) main::j#1 != (byte) 8 from [6] (bool~) main::$0 ← (byte) main::j#1 == (byte) 8 +Inversing boolean not [6] (bool~) main::$1 ← (byte) main::j#1 != (byte) 8 from [5] (bool~) main::$0 ← (byte) main::j#1 == (byte) 8 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) main::i#2 = (byte) main::i#4 Successful SSA optimization Pass2AliasElimination Alias (byte) main::i#2 = (byte) main::i#3 Successful SSA optimization Pass2AliasElimination -Simple Condition (bool~) main::$1 [8] if((byte) main::j#1!=(byte) 8) goto main::@2 -Simple Condition (bool~) main::$2 [12] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1 +Simple Condition (bool~) main::$1 [7] if((byte) main::j#1!=(byte) 8) goto main::@2 +Simple Condition (bool~) main::$2 [11] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) 3, (byte) 1, (byte) $d, (byte) 5, (byte) $c, (byte) $f, (byte) $14, (byte) $20 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) TXT = { 3, 1, $d, 5, $c, $f, $14, $20 } Constant (const byte) main::j#0 = 0 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#2 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [10] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [12] if(main::i#1!=rangelast(0,$64)) goto main::@1 to (number) $65 +Resolved ranged next value [9] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [11] if(main::i#1!=rangelast(0,$64)) goto main::@1 to (number) $65 Adding number conversion cast (unumber) $65 in if((byte) main::i#1!=(number) $65) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast $65 diff --git a/src/test/ref/irq-idx-problem.log b/src/test/ref/irq-idx-problem.log index ed9ae4ac2..f574c17e8 100644 --- a/src/test/ref/irq-idx-problem.log +++ b/src/test/ref/irq-idx-problem.log @@ -31,8 +31,6 @@ main::@return: scope:[main] from main return to:@return @5: scope:[] from @begin - (byte[]) IRQ_CHANGE_IDX ← { (number) $20, (number) $21, (const byte) IRQ_CHANGE_NEXT, (number) $20, (number) $21, (const byte) IRQ_CHANGE_NEXT, (number) $20, (number) $21, (const byte) IRQ_CHANGE_NEXT, (number) $20, (number) $21, (const byte) IRQ_CHANGE_NEXT } - (byte[]) IRQ_CHANGE_VAL ← { (number) $b, (number) $b, (number) $63, (number) 0, (number) 0, (number) $80, (number) 7, (number) 7, (number) $83, (number) 0, (number) 0, (number) $60 } (byte) irq_idx#0 ← (number) 0 to:@6 @@ -42,8 +40,8 @@ table_driven_irq: scope:[table_driven_irq] from to:table_driven_irq::@1 table_driven_irq::@1: scope:[table_driven_irq] from table_driven_irq table_driven_irq::@8 (byte) irq_idx#4 ← phi( table_driven_irq/(byte) irq_idx#6 table_driven_irq::@8/(byte) irq_idx#7 ) - (byte) table_driven_irq::idx#0 ← *((byte[]) IRQ_CHANGE_IDX + (byte) irq_idx#4) - (byte) table_driven_irq::val#0 ← *((byte[]) IRQ_CHANGE_VAL + (byte) irq_idx#4) + (byte) table_driven_irq::idx#0 ← *((const byte[]) IRQ_CHANGE_IDX + (byte) irq_idx#4) + (byte) table_driven_irq::val#0 ← *((const byte[]) IRQ_CHANGE_VAL + (byte) irq_idx#4) (byte) irq_idx#1 ← ++ (byte) irq_idx#4 (bool~) table_driven_irq::$0 ← (byte) table_driven_irq::idx#0 < (const byte) VIC_SIZE if((bool~) table_driven_irq::$0) goto table_driven_irq::@2 @@ -106,9 +104,9 @@ SYMBOL TABLE SSA (label) @end (const byte*) CIA1_INTERRUPT = (byte*)(number) $dc0d (const byte) CIA_INTERRUPT_CLEAR = (number) $7f -(byte[]) IRQ_CHANGE_IDX +(const byte[]) IRQ_CHANGE_IDX = { (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT } (const byte) IRQ_CHANGE_NEXT = (number) $7f -(byte[]) IRQ_CHANGE_VAL +(const byte[]) IRQ_CHANGE_VAL = { (byte)(number) $b, (byte)(number) $b, (byte)(number) $63, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) 7, (byte)(number) 7, (byte)(number) $83, (byte)(number) 0, (byte)(number) 0, (byte)(number) $60 } (const byte*) IRQ_ENABLE = (byte*)(number) $d01a (const byte) IRQ_RASTER = (number) 1 (const byte*) IRQ_STATUS = (byte*)(number) $d019 @@ -172,9 +170,6 @@ Adding number conversion cast (unumber) table_driven_irq::$4 in (number~) table_ Adding number conversion cast (unumber) table_driven_irq::$5 in (number~) table_driven_irq::$5 ← (unumber~) table_driven_irq::$4 - (const byte) VIC_SIZE Adding number conversion cast (unumber) 0 in (byte) irq_idx#2 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) IRQ_CHANGE_IDX ← (byte[]){ (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT } -Added casts to value list in (byte[]) IRQ_CHANGE_VAL ← (byte[]){ (byte)(number) $b, (byte)(number) $b, (byte)(number) $63, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) 7, (byte)(number) 7, (byte)(number) $83, (byte)(number) 0, (byte)(number) 0, (byte)(number) $60 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) RASTER) ← (unumber)(number) $60 Inlining cast (byte) irq_idx#0 ← (unumber)(number) 0 Inlining cast (byte) irq_idx#2 ← (unumber)(number) 0 @@ -187,8 +182,6 @@ Simplifying constant pointer cast (byte*) 56333 Simplifying constant pointer cast (void()**) 788 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 53248 -Simplifying constant integer cast $7f -Simplifying constant integer cast $60 Simplifying constant integer cast $20 Simplifying constant integer cast $21 Simplifying constant integer cast $20 @@ -209,6 +202,8 @@ Simplifying constant integer cast $83 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $60 +Simplifying constant integer cast $7f +Simplifying constant integer cast $60 Simplifying constant integer cast 0 Simplifying constant integer cast (const byte) VIC_SIZE+(unumber)(number) 8 Simplifying constant integer cast 8 @@ -224,7 +219,7 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to word in (unumber~) table_driven_irq::$4 ← (byte) table_driven_irq::idx#3 + (word) $3f8 Inferred type updated to word in (unumber~) table_driven_irq::$5 ← (word~) table_driven_irq::$4 - (const byte) VIC_SIZE -Inversing boolean not [33] (bool~) table_driven_irq::$3 ← (byte) table_driven_irq::val#3 >= *((const byte*) RASTER) from [32] (bool~) table_driven_irq::$2 ← (byte) table_driven_irq::val#3 < *((const byte*) RASTER) +Inversing boolean not [31] (bool~) table_driven_irq::$3 ← (byte) table_driven_irq::val#3 >= *((const byte*) RASTER) from [30] (bool~) table_driven_irq::$2 ← (byte) table_driven_irq::val#3 < *((const byte*) RASTER) Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) table_driven_irq::val#0 = (byte) table_driven_irq::val#1 (byte) table_driven_irq::val#4 (byte) table_driven_irq::val#2 (byte) table_driven_irq::val#3 Alias (byte) table_driven_irq::idx#0 = (byte) table_driven_irq::idx#1 (byte) table_driven_irq::idx#2 (byte) table_driven_irq::idx#3 @@ -236,23 +231,18 @@ Alias (byte) irq_idx#1 = (byte) irq_idx#7 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) irq_idx#6 (byte) irq_idx#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) table_driven_irq::$0 [19] if((byte) table_driven_irq::idx#0<(const byte) VIC_SIZE) goto table_driven_irq::@2 -Simple Condition (bool~) table_driven_irq::$1 [24] if((byte) table_driven_irq::idx#0<(const byte) VIC_SIZE+(byte) 8) goto table_driven_irq::@3 -Simple Condition (bool~) table_driven_irq::$3 [34] if((byte) table_driven_irq::val#0>=*((const byte*) RASTER)) goto table_driven_irq::@return +Simple Condition (bool~) table_driven_irq::$0 [17] if((byte) table_driven_irq::idx#0<(const byte) VIC_SIZE) goto table_driven_irq::@2 +Simple Condition (bool~) table_driven_irq::$1 [22] if((byte) table_driven_irq::idx#0<(const byte) VIC_SIZE+(byte) 8) goto table_driven_irq::@3 +Simple Condition (bool~) table_driven_irq::$3 [32] if((byte) table_driven_irq::val#0>=*((const byte*) RASTER)) goto table_driven_irq::@return Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [6] (void()*~) main::$0 ← & interrupt(KERNEL_MIN)(void()) table_driven_irq() Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT } -Identified constant from value list (byte[]) { (byte) $b, (byte) $b, (byte) $63, (byte) 0, (byte) 0, (byte) $80, (byte) 7, (byte) 7, (byte) $83, (byte) 0, (byte) 0, (byte) $60 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const void()*) main::$0 = &table_driven_irq -Constant (const byte[]) IRQ_CHANGE_IDX = { $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT } -Constant (const byte[]) IRQ_CHANGE_VAL = { $b, $b, $63, 0, 0, $80, 7, 7, $83, 0, 0, $60 } Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (table_driven_irq::@8) in block table_driven_irq::@return -if() condition always true - replacing block destination [40] if(true) goto table_driven_irq::@1 +if() condition always true - replacing block destination [38] if(true) goto table_driven_irq::@1 Successful SSA optimization Pass2ConstantIfs -De-inlining pointer[w] to *(pointer+w) [28] *((const byte*) SCREEN + (word~) table_driven_irq::$5) ← (byte) table_driven_irq::val#0 +De-inlining pointer[w] to *(pointer+w) [26] *((const byte*) SCREEN + (word~) table_driven_irq::$5) ← (byte) table_driven_irq::val#0 Successful SSA optimization Pass2DeInlineWordDerefIdx Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) table_driven_irq() Successful SSA optimization Pass2ConstantInlining diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log index cfda6d2ce..0f762710d 100644 --- a/src/test/ref/keyboard-glitch.log +++ b/src/test/ref/keyboard-glitch.log @@ -3,6 +3,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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) keyboard_matrix_read::@1 Culled Empty Block (label) @6 @@ -35,16 +36,12 @@ Culled Empty Block (label) pressed::@9 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } to:@14 (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -70,7 +67,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 ) (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4 - (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) + (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3 to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2 @@ -179,7 +176,7 @@ pressed::@10: scope:[pressed] from pressed::@2 pressed::@return: scope:[pressed] from pressed::@1 pressed::@10 return to:@return -@14: scope:[] from @4 +@14: scope:[] from @begin call main to:@15 @15: scope:[] from @14 @@ -189,7 +186,6 @@ pressed::@return: scope:[pressed] from pressed::@1 pressed::@10 SYMBOL TABLE SSA (label) @14 (label) @15 -(label) @4 (label) @begin (label) @end (const byte*) BGCOL = (byte*)(number) $d021 @@ -233,7 +229,7 @@ SYMBOL TABLE SSA (byte) keyboard_key_pressed::return#9 (byte) keyboard_key_pressed::rowidx (byte) keyboard_key_pressed::rowidx#0 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -248,7 +244,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() (label) main::@1 (label) main::@2 @@ -294,14 +290,10 @@ Adding number conversion cast (unumber) 0 in (bool~) menu::$5 ← (byte~) menu:: Adding number conversion cast (unumber) 0 in (bool~) menu::$8 ← (byte~) menu::$7 != (number) 0 Adding number conversion cast (unumber) 0 in (bool~) pressed::$2 ← (byte~) pressed::$1 != (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 56320 Simplifying constant pointer cast (byte*) 56321 -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $fe Simplifying constant integer cast $fd Simplifying constant integer cast $fb @@ -318,6 +310,7 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 7 Simplifying constant integer cast 3 Simplifying constant integer cast 0 @@ -333,10 +326,10 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#4 & (byte) 7 -Inversing boolean not [36] (bool~) menu::$2 ← (byte~) menu::$0 == (byte) 0 from [35] (bool~) menu::$1 ← (byte~) menu::$0 != (byte) 0 -Inversing boolean not [44] (bool~) menu::$6 ← (byte~) menu::$4 == (byte) 0 from [43] (bool~) menu::$5 ← (byte~) menu::$4 != (byte) 0 -Inversing boolean not [54] (bool~) menu::$9 ← (byte~) menu::$7 == (byte) 0 from [53] (bool~) menu::$8 ← (byte~) menu::$7 != (byte) 0 -Inversing boolean not [69] (bool~) pressed::$3 ← (byte~) pressed::$1 == (byte) 0 from [68] (bool~) pressed::$2 ← (byte~) pressed::$1 != (byte) 0 +Inversing boolean not [34] (bool~) menu::$2 ← (byte~) menu::$0 == (byte) 0 from [33] (bool~) menu::$1 ← (byte~) menu::$0 != (byte) 0 +Inversing boolean not [42] (bool~) menu::$6 ← (byte~) menu::$4 == (byte) 0 from [41] (bool~) menu::$5 ← (byte~) menu::$4 != (byte) 0 +Inversing boolean not [52] (bool~) menu::$9 ← (byte~) menu::$7 == (byte) 0 from [51] (bool~) menu::$8 ← (byte~) menu::$7 != (byte) 0 +Inversing boolean not [67] (bool~) pressed::$3 ← (byte~) pressed::$1 == (byte) 0 from [66] (bool~) pressed::$2 ← (byte~) pressed::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 @@ -350,26 +343,21 @@ Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::retu Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) menu::$2 [37] if((byte~) menu::$0==(byte) 0) goto menu::@4 -Simple Condition (bool~) menu::$6 [45] if((byte~) menu::$4==(byte) 0) goto menu::@5 -Simple Condition (bool~) menu::$9 [55] if((byte~) menu::$7==(byte) 0) goto menu::@6 -Simple Condition (bool~) pressed::$3 [70] if((byte~) pressed::$1==(byte) 0) goto pressed::@1 +Simple Condition (bool~) menu::$2 [35] if((byte~) menu::$0==(byte) 0) goto menu::@4 +Simple Condition (bool~) menu::$6 [43] if((byte~) menu::$4==(byte) 0) goto menu::@5 +Simple Condition (bool~) menu::$9 [53] if((byte~) menu::$7==(byte) 0) goto menu::@6 +Simple Condition (bool~) pressed::$3 [68] if((byte~) pressed::$1==(byte) 0) goto pressed::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [70] if((byte~) pressed::$1!=(byte) 0) goto pressed::@return +Negating conditional jump and destination [68] if((byte~) pressed::$1!=(byte) 0) goto pressed::@return Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte) keyboard_key_pressed::key#0 = KEY_C Constant (const byte) keyboard_key_pressed::key#1 = KEY_I Constant (const byte) keyboard_key_pressed::key#2 = KEY_E Constant (const byte) keyboard_key_pressed::key#3 = KEY_SPACE Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [26] if(true) goto main::@2 -if() condition always true - replacing block destination [29] if(true) goto menu::@2 -if() condition always true - replacing block destination [62] if(true) goto pressed::@2 +if() condition always true - replacing block destination [24] if(true) goto main::@2 +if() condition always true - replacing block destination [27] if(true) goto menu::@2 +if() condition always true - replacing block destination [60] if(true) goto pressed::@2 Successful SSA optimization Pass2ConstantIfs Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -383,7 +371,6 @@ Constant inlined keyboard_key_pressed::key#2 = (const byte) KEY_E Constant inlined keyboard_key_pressed::key#3 = (const byte) KEY_SPACE Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @14 Adding NOP phi() at start of @15 Adding NOP phi() at start of @end @@ -400,15 +387,14 @@ Adding NOP phi() at start of menu::@5 Adding NOP phi() at start of pressed::@1 Adding NOP phi() at start of pressed::@2 CALL GRAPH -Calls in [] to main:3 -Calls in [main] to menu:9 -Calls in [menu] to keyboard_key_pressed:14 pressed:19 keyboard_key_pressed:23 keyboard_key_pressed:30 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:41 -Calls in [pressed] to keyboard_key_pressed:52 +Calls in [] to main:2 +Calls in [main] to menu:8 +Calls in [menu] to keyboard_key_pressed:13 pressed:18 keyboard_key_pressed:22 keyboard_key_pressed:29 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:40 +Calls in [pressed] to keyboard_key_pressed:51 Created 1 initial phi equivalence classes Coalesced down to 1 phi equivalence classes -Culled Empty Block (label) @4 Culled Empty Block (label) @15 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@7 diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log index defabbbd9..5c9b109b0 100644 --- a/src/test/ref/line-anim.log +++ b/src/test/ref/line-anim.log @@ -1,7 +1,7 @@ -Fixing pointer array-indexing *((word[SIZE]) x_start + (byte) main::i) -Fixing pointer array-indexing *((word[SIZE]) x_end + (byte) point_init::point_idx) -Fixing pointer array-indexing *((word[SIZE]) x_start + (byte) point_init::point_idx) -Fixing pointer array-indexing *((word[SIZE]) x_start + (byte) point_init::point_idx) +Fixing pointer array-indexing *((const word[SIZE]) x_start + (byte) main::i) +Fixing pointer array-indexing *((const word[SIZE]) x_end + (byte) point_init::point_idx) +Fixing pointer array-indexing *((const word[SIZE]) x_start + (byte) point_init::point_idx) +Fixing pointer array-indexing *((const word[SIZE]) x_start + (byte) point_init::point_idx) Fixing pointer array-indexing *((word[SIZE]) x_cur + (byte) point_init::point_idx) Fixing pointer array-indexing *((word[SIZE]) y_cur + (byte) point_init::point_idx) Identified constant variable (byte*) BITMAP @@ -240,10 +240,6 @@ divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5 return to:@return @12: scope:[] from @begin - (word[SIZE]) x_start ← { (number) $a, (number) $14, (number) $1e, (number) $1e } - (byte[SIZE]) y_start ← { (number) $a, (number) $a, (number) $a, (number) $14 } - (word[SIZE]) x_end ← { (number) $14, (number) $a, (number) $14, (number) $14 } - (byte[SIZE]) y_end ← { (number) $14, (number) $14, (number) $a, (number) $14 } (word[SIZE]) x_cur ← { fill( SIZE, 0) } (word[SIZE]) y_cur ← { fill( SIZE, 0) } (signed byte[SIZE]) x_add ← { fill( SIZE, 0) } @@ -329,8 +325,8 @@ main::@1: scope:[main] from main::@19 main::@21 main::@20: scope:[main] from main::@1 (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte~) main::$10 ← (byte) main::i#3 * (const byte) SIZEOF_WORD - (word) bitmap_plot::x#0 ← *((word[SIZE]) x_start + (byte~) main::$10) - (byte) bitmap_plot::y#0 ← *((byte[SIZE]) y_start + (byte) main::i#3) + (word) bitmap_plot::x#0 ← *((const word[SIZE]) x_start + (byte~) main::$10) + (byte) bitmap_plot::y#0 ← *((const byte[SIZE]) y_start + (byte) main::i#3) call bitmap_plot to:main::@21 main::@21: scope:[main] from main::@20 @@ -357,13 +353,13 @@ main::@return: scope:[main] from main::@3 point_init: scope:[point_init] from main::@1 (byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 ) (byte~) point_init::$17 ← (byte) point_init::point_idx#1 * (const byte) SIZEOF_WORD - (signed word~) point_init::$0 ← ((signed word)) *((word[SIZE]) x_end + (byte~) point_init::$17) + (signed word~) point_init::$0 ← ((signed word)) *((const word[SIZE]) x_end + (byte~) point_init::$17) (byte~) point_init::$18 ← (byte) point_init::point_idx#1 * (const byte) SIZEOF_WORD - (signed word~) point_init::$1 ← ((signed word)) *((word[SIZE]) x_start + (byte~) point_init::$18) + (signed word~) point_init::$1 ← ((signed word)) *((const word[SIZE]) x_start + (byte~) point_init::$18) (signed word~) point_init::$2 ← (signed word~) point_init::$0 - (signed word~) point_init::$1 (signed word) point_init::x_diff#0 ← (signed word~) point_init::$2 - (signed word~) point_init::$3 ← ((signed word)) *((byte[SIZE]) y_end + (byte) point_init::point_idx#1) - (signed word~) point_init::$4 ← ((signed word)) *((byte[SIZE]) y_start + (byte) point_init::point_idx#1) + (signed word~) point_init::$3 ← ((signed word)) *((const byte[SIZE]) y_end + (byte) point_init::point_idx#1) + (signed word~) point_init::$4 ← ((signed word)) *((const byte[SIZE]) y_start + (byte) point_init::point_idx#1) (signed word~) point_init::$5 ← (signed word~) point_init::$3 - (signed word~) point_init::$4 (signed word) point_init::y_diff#0 ← (signed word~) point_init::$5 (signed word) point_init::abs16s1_w#0 ← (signed word) point_init::x_diff#0 @@ -459,10 +455,10 @@ point_init::@1: scope:[point_init] from point_init::@10 point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 (byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#6 point_init::@11/(byte) point_init::point_idx#5 ) (byte~) point_init::$19 ← (byte) point_init::point_idx#2 * (const byte) SIZEOF_WORD - (number~) point_init::$9 ← *((word[SIZE]) x_start + (byte~) point_init::$19) * (number) $10 + (number~) point_init::$9 ← *((const word[SIZE]) x_start + (byte~) point_init::$19) * (number) $10 (byte~) point_init::$20 ← (byte) point_init::point_idx#2 * (const byte) SIZEOF_WORD *((word[SIZE]) x_cur + (byte~) point_init::$20) ← (number~) point_init::$9 - (word~) point_init::$10 ← ((word)) *((byte[SIZE]) y_start + (byte) point_init::point_idx#2) + (word~) point_init::$10 ← ((word)) *((const byte[SIZE]) y_start + (byte) point_init::point_idx#2) (number~) point_init::$11 ← (word~) point_init::$10 * (number) $10 (byte~) point_init::$21 ← (byte) point_init::point_idx#2 * (const byte) SIZEOF_WORD *((word[SIZE]) y_cur + (byte~) point_init::$21) ← (number~) point_init::$11 @@ -1163,12 +1159,12 @@ SYMBOL TABLE SSA (byte) screen_fill::y#4 (signed byte[SIZE]) x_add (word[SIZE]) x_cur -(word[SIZE]) x_end -(word[SIZE]) x_start +(const word[SIZE]) x_end = { (word)(number) $14, (word)(number) $a, (word)(number) $14, (word)(number) $14 } +(const word[SIZE]) x_start = { (word)(number) $a, (word)(number) $14, (word)(number) $1e, (word)(number) $1e } (signed byte[SIZE]) y_add (word[SIZE]) y_cur -(byte[SIZE]) y_end -(byte[SIZE]) y_start +(const byte[SIZE]) y_end = { (byte)(number) $14, (byte)(number) $14, (byte)(number) $a, (byte)(number) $14 } +(const byte[SIZE]) y_start = { (byte)(number) $a, (byte)(number) $a, (byte)(number) $a, (byte)(number) $14 } Fixing inline constructor with bitmap_clear::$3 ← (byte)*(bitmap_plot_yhi + 0) w= (byte)*(bitmap_plot_ylo + 0) Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#1) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#1) @@ -1216,8 +1212,8 @@ Adding number conversion cast (unumber) $ff in (bool~) main::$8 ← *((const byt Adding number conversion cast (snumber) 0 in (bool~) point_init::abs16s1_$0 ← (signed word) point_init::abs16s1_w#1 < (number) 0 Adding number conversion cast (snumber) 0 in (bool~) point_init::abs16s2_$0 ← (signed word) point_init::abs16s2_w#1 < (number) 0 Adding number conversion cast (snumber) 0 in (bool~) point_init::$12 ← (signed word) point_init::x_diff#1 < (number) 0 -Adding number conversion cast (unumber) $10 in (number~) point_init::$9 ← *((word[SIZE]) x_start + (byte~) point_init::$19) * (number) $10 -Adding number conversion cast (unumber) point_init::$9 in (number~) point_init::$9 ← *((word[SIZE]) x_start + (byte~) point_init::$19) * (unumber)(number) $10 +Adding number conversion cast (unumber) $10 in (number~) point_init::$9 ← *((const word[SIZE]) x_start + (byte~) point_init::$19) * (number) $10 +Adding number conversion cast (unumber) point_init::$9 in (number~) point_init::$9 ← *((const word[SIZE]) x_start + (byte~) point_init::$19) * (unumber)(number) $10 Adding number conversion cast (unumber) $10 in (number~) point_init::$11 ← (word~) point_init::$10 * (number) $10 Adding number conversion cast (unumber) point_init::$11 in (number~) point_init::$11 ← (word~) point_init::$10 * (unumber)(number) $10 Adding number conversion cast (snumber) -$10 in *((signed byte[SIZE]) x_add + (byte) point_init::point_idx#3) ← (number) -$10 @@ -1242,11 +1238,6 @@ Adding number conversion cast (unumber) 0 in *((byte*) bitmap_clear::bitmap#2) Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (number) $fff8 Adding number conversion cast (unumber) bitmap_plot::$1 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (unumber)(number) $fff8 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[SIZE]) x_start ← (word[SIZE]){ (word)(number) $a, (word)(number) $14, (word)(number) $1e, (word)(number) $1e } -Added casts to value list in (byte[SIZE]) y_start ← (byte[SIZE]){ (byte)(number) $a, (byte)(number) $a, (byte)(number) $a, (byte)(number) $14 } -Added casts to value list in (word[SIZE]) x_end ← (word[SIZE]){ (word)(number) $14, (word)(number) $a, (word)(number) $14, (word)(number) $14 } -Added casts to value list in (byte[SIZE]) y_end ← (byte[SIZE]){ (byte)(number) $14, (byte)(number) $14, (byte)(number) $a, (byte)(number) $14 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (word) divr16u::quotient#0 ← (unumber)(number) 0 Inlining cast (byte) divr16s::neg#0 ← (unumber)(number) 0 Inlining cast (word) divr16s::dividendu#0 ← (unumber)(number) 0 @@ -1267,15 +1258,15 @@ Inlining cast (word~) main::vicSelectGfxBank1_toDd001_$0 ← (word)(byte*) main: Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1 Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1 Inlining cast (byte) screen_fill::ch#0 ← (unumber)(number) $10 -Inlining cast (signed word~) point_init::$0 ← (signed word)*((word[SIZE]) x_end + (byte~) point_init::$17) -Inlining cast (signed word~) point_init::$1 ← (signed word)*((word[SIZE]) x_start + (byte~) point_init::$18) -Inlining cast (signed word~) point_init::$3 ← (signed word)*((byte[SIZE]) y_end + (byte) point_init::point_idx#1) -Inlining cast (signed word~) point_init::$4 ← (signed word)*((byte[SIZE]) y_start + (byte) point_init::point_idx#1) +Inlining cast (signed word~) point_init::$0 ← (signed word)*((const word[SIZE]) x_end + (byte~) point_init::$17) +Inlining cast (signed word~) point_init::$1 ← (signed word)*((const word[SIZE]) x_start + (byte~) point_init::$18) +Inlining cast (signed word~) point_init::$3 ← (signed word)*((const byte[SIZE]) y_end + (byte) point_init::point_idx#1) +Inlining cast (signed word~) point_init::$4 ← (signed word)*((const byte[SIZE]) y_start + (byte) point_init::point_idx#1) Inlining cast (word~) point_init::abs16s1_$3 ← (word)(signed word~) point_init::abs16s1_$2 Inlining cast (word~) point_init::abs16s1_$1 ← (word)(signed word) point_init::abs16s1_w#3 Inlining cast (word~) point_init::abs16s2_$3 ← (word)(signed word~) point_init::abs16s2_$2 Inlining cast (word~) point_init::abs16s2_$1 ← (word)(signed word) point_init::abs16s2_w#3 -Inlining cast (word~) point_init::$10 ← (word)*((byte[SIZE]) y_start + (byte) point_init::point_idx#2) +Inlining cast (word~) point_init::$10 ← (word)*((const byte[SIZE]) y_start + (byte) point_init::point_idx#2) Inlining cast *((signed byte[SIZE]) x_add + (byte) point_init::point_idx#3) ← (snumber)(number) -$10 Inlining cast *((signed byte[SIZE]) x_add + (byte) point_init::point_idx#4) ← (snumber)(number) $10 Inlining cast (signed word) divr16s::dividend#0 ← (snumber)(number) 0 @@ -1292,6 +1283,22 @@ Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 56576 Simplifying constant pointer cast (byte*) 56578 +Simplifying constant integer cast $a +Simplifying constant integer cast $14 +Simplifying constant integer cast $1e +Simplifying constant integer cast $1e +Simplifying constant integer cast $a +Simplifying constant integer cast $a +Simplifying constant integer cast $a +Simplifying constant integer cast $14 +Simplifying constant integer cast $14 +Simplifying constant integer cast $a +Simplifying constant integer cast $14 +Simplifying constant integer cast $14 +Simplifying constant integer cast $14 +Simplifying constant integer cast $14 +Simplifying constant integer cast $a +Simplifying constant integer cast $14 Simplifying constant pointer cast (byte*) 40960 Simplifying constant pointer cast (byte*) 34816 Simplifying constant integer cast 0 @@ -1311,22 +1318,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 0 -Simplifying constant integer cast $a -Simplifying constant integer cast $14 -Simplifying constant integer cast $1e -Simplifying constant integer cast $1e -Simplifying constant integer cast $a -Simplifying constant integer cast $a -Simplifying constant integer cast $a -Simplifying constant integer cast $14 -Simplifying constant integer cast $14 -Simplifying constant integer cast $a -Simplifying constant integer cast $14 -Simplifying constant integer cast $14 -Simplifying constant integer cast $14 -Simplifying constant integer cast $14 -Simplifying constant integer cast $a -Simplifying constant integer cast $14 Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3 Simplifying constant integer cast 3 Simplifying constant integer cast 3 @@ -1424,7 +1415,7 @@ Inferred type updated to byte in (unumber~) main::toD0181_$3 ← > (word~) main: Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4 Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7 -Inferred type updated to word in (unumber~) point_init::$9 ← *((word[SIZE]) x_start + (byte~) point_init::$19) * (byte) $10 +Inferred type updated to word in (unumber~) point_init::$9 ← *((const word[SIZE]) x_start + (byte~) point_init::$19) * (byte) $10 Inferred type updated to word in (unumber~) point_init::$11 ← (word~) point_init::$10 * (byte) $10 Inferred type updated to byte in (unumber~) point_init::$15 ← (byte~) point_init::$14 / (byte) $10 Inferred type updated to byte in (unumber~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte) 7 @@ -1436,8 +1427,8 @@ Adding pointer type conversion cast (byte*) bitmap_plot::$0 in (byte*~) bitmap_p Successful SSA optimization PassNAddTypeConversionAssignment Inversing boolean not [9] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) 0 from [8] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte) 0 Inversing boolean not [17] (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from [16] (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1 -Inversing boolean not [259] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [258] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0 -Inversing boolean not [279] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [278] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7 +Inversing boolean not [255] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [254] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0 +Inversing boolean not [275] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [274] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7 @@ -1548,47 +1539,42 @@ Identical Phi Values (word) bitmap_plot::x#1 (word) bitmap_plot::x#0 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (byte) screen_fill::ch#2 (byte) screen_fill::ch#0 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [163] (byte~) point_init::$18 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD -Identified duplicate assignment right side [209] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD -Identified duplicate assignment right side [213] (byte~) point_init::$21 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD -Identified duplicate assignment right side [277] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 +Identified duplicate assignment right side [159] (byte~) point_init::$18 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Identified duplicate assignment right side [205] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Identified duplicate assignment right side [209] (byte~) point_init::$21 ← (byte) point_init::point_idx#0 * (const byte) SIZEOF_WORD +Identified duplicate assignment right side [273] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) divr16u::$4 [10] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 Simple Condition (bool~) divr16u::$9 [18] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 Simple Condition (bool~) divr16u::$11 [25] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 Simple Condition (bool~) divr16s::$3 [59] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 Simple Condition (bool~) divr16s::$5 [79] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -Simple Condition (bool~) main::$7 [154] if((byte) main::i#1!=rangelast(0,SIZE-1)) goto main::@1 -Simple Condition (bool~) main::$8 [157] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@6 -Simple Condition (bool~) point_init::abs16s1_$0 [174] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 -Simple Condition (bool~) point_init::abs16s2_$0 [189] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 -Simple Condition (bool~) point_init::$8 [202] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -Simple Condition (bool~) point_init::$12 [205] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@7 -Simple Condition (bool~) screen_fill::$0 [243] if((byte) screen_fill::x#1!=rangelast(0,$27)) goto screen_fill::@2 -Simple Condition (bool~) screen_fill::$1 [247] if((byte) screen_fill::y#1!=rangelast(0,$18)) goto screen_fill::@1 -Simple Condition (bool~) bitmap_init::$1 [260] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 -Simple Condition (bool~) bitmap_init::$2 [264] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 -Simple Condition (bool~) bitmap_init::$9 [280] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6 -Simple Condition (bool~) bitmap_init::$11 [284] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 -Simple Condition (bool~) bitmap_clear::$1 [300] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 -Simple Condition (bool~) bitmap_clear::$2 [304] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 +Simple Condition (bool~) main::$7 [150] if((byte) main::i#1!=rangelast(0,SIZE-1)) goto main::@1 +Simple Condition (bool~) main::$8 [153] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@6 +Simple Condition (bool~) point_init::abs16s1_$0 [170] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1 +Simple Condition (bool~) point_init::abs16s2_$0 [185] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1 +Simple Condition (bool~) point_init::$8 [198] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 +Simple Condition (bool~) point_init::$12 [201] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@7 +Simple Condition (bool~) screen_fill::$0 [239] if((byte) screen_fill::x#1!=rangelast(0,$27)) goto screen_fill::@2 +Simple Condition (bool~) screen_fill::$1 [243] if((byte) screen_fill::y#1!=rangelast(0,$18)) goto screen_fill::@1 +Simple Condition (bool~) bitmap_init::$1 [256] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$2 [260] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$9 [276] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6 +Simple Condition (bool~) bitmap_init::$11 [280] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 +Simple Condition (bool~) bitmap_clear::$1 [296] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 +Simple Condition (bool~) bitmap_clear::$2 [300] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting || if()-condition to two if()s [41] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 Successful SSA optimization Pass2ConditionalAndOrRewriting -Constant right-side identified [94] (word[SIZE]) x_cur ← { fill( SIZE, 0) } -Constant right-side identified [95] (word[SIZE]) y_cur ← { fill( SIZE, 0) } -Constant right-side identified [96] (signed byte[SIZE]) x_add ← { fill( SIZE, 0) } -Constant right-side identified [97] (signed byte[SIZE]) y_add ← { fill( SIZE, 0) } -Constant right-side identified [98] (byte[SIZE]) delay ← { fill( SIZE, 0) } -Constant right-side identified [249] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } -Constant right-side identified [250] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } -Constant right-side identified [251] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } +Constant right-side identified [90] (word[SIZE]) x_cur ← { fill( SIZE, 0) } +Constant right-side identified [91] (word[SIZE]) y_cur ← { fill( SIZE, 0) } +Constant right-side identified [92] (signed byte[SIZE]) x_add ← { fill( SIZE, 0) } +Constant right-side identified [93] (signed byte[SIZE]) y_add ← { fill( SIZE, 0) } +Constant right-side identified [94] (byte[SIZE]) delay ← { fill( SIZE, 0) } +Constant right-side identified [245] (byte[$100]) bitmap_plot_ylo ← { fill( $100, 0) } +Constant right-side identified [246] (byte[$100]) bitmap_plot_yhi ← { fill( $100, 0) } +Constant right-side identified [247] (byte[$100]) bitmap_plot_bit ← { fill( $100, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[SIZE]) { (word) $a, (word) $14, (word) $1e, (word) $1e } -Identified constant from value list (byte[SIZE]) { (byte) $a, (byte) $a, (byte) $a, (byte) $14 } -Identified constant from value list (word[SIZE]) { (word) $14, (word) $a, (word) $14, (word) $14 } -Identified constant from value list (byte[SIZE]) { (byte) $14, (byte) $14, (byte) $a, (byte) $14 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const byte) divr16s::neg#0 = 0 @@ -1596,10 +1582,6 @@ Constant (const word) divr16s::dividendu#0 = 0 Constant (const word) divr16s::remu#0 = 0 Constant (const byte) divr16s::neg#1 = 1 Constant (const word) divr16s::divisoru#0 = 0 -Constant (const word[SIZE]) x_start = { $a, $14, $1e, $1e } -Constant (const byte[SIZE]) y_start = { $a, $a, $a, $14 } -Constant (const word[SIZE]) x_end = { $14, $a, $14, $14 } -Constant (const byte[SIZE]) y_end = { $14, $14, $a, $14 } Constant (const word[SIZE]) x_cur = { fill( SIZE, 0) } Constant (const word[SIZE]) y_cur = { fill( SIZE, 0) } Constant (const signed byte[SIZE]) x_add = { fill( SIZE, 0) } @@ -1630,28 +1612,28 @@ Constant (const word) main::vicSelectGfxBank1_toDd001_$0 = (word)main::vicSelect Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0 Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [155] if(true) goto main::@6 +if() condition always true - replacing block destination [151] if(true) goto main::@6 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [23] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [25] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 -Resolved ranged next value [152] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [154] if(main::i#1!=rangelast(0,SIZE-1)) goto main::@1 to (const byte) SIZE-(byte) 1+(number) 1 -Resolved ranged next value [241] screen_fill::x#1 ← ++ screen_fill::x#2 to ++ -Resolved ranged comparison value [243] if(screen_fill::x#1!=rangelast(0,$27)) goto screen_fill::@2 to (number) $28 -Resolved ranged next value [245] screen_fill::y#1 ← ++ screen_fill::y#4 to ++ -Resolved ranged comparison value [247] if(screen_fill::y#1!=rangelast(0,$18)) goto screen_fill::@1 to (number) $19 -Resolved ranged next value [262] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ -Resolved ranged comparison value [264] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 -Resolved ranged next value [282] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ -Resolved ranged comparison value [284] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 -Resolved ranged next value [298] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ -Resolved ranged comparison value [300] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 -Resolved ranged next value [302] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ -Resolved ranged comparison value [304] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 +Resolved ranged next value [148] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [150] if(main::i#1!=rangelast(0,SIZE-1)) goto main::@1 to (const byte) SIZE-(byte) 1+(number) 1 +Resolved ranged next value [237] screen_fill::x#1 ← ++ screen_fill::x#2 to ++ +Resolved ranged comparison value [239] if(screen_fill::x#1!=rangelast(0,$27)) goto screen_fill::@2 to (number) $28 +Resolved ranged next value [241] screen_fill::y#1 ← ++ screen_fill::y#4 to ++ +Resolved ranged comparison value [243] if(screen_fill::y#1!=rangelast(0,$18)) goto screen_fill::@1 to (number) $19 +Resolved ranged next value [258] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ +Resolved ranged comparison value [260] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 +Resolved ranged next value [278] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ +Resolved ranged comparison value [280] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 +Resolved ranged next value [294] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ +Resolved ranged comparison value [296] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 +Resolved ranged next value [298] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ +Resolved ranged comparison value [300] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 Simplifying constant evaluating to zero (word)(const signed word) divr16s::dividend#0 in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero bitmap_plot_yhi in [289] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi + (byte) 0) w= *((const byte[$100]) bitmap_plot_ylo + (byte) 0) -Simplifying expression containing zero bitmap_plot_ylo in [289] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi) w= *((const byte[$100]) bitmap_plot_ylo + (byte) 0) +Simplifying expression containing zero bitmap_plot_yhi in [285] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi + (byte) 0) w= *((const byte[$100]) bitmap_plot_ylo + (byte) 0) +Simplifying expression containing zero bitmap_plot_ylo in [285] (word~) bitmap_clear::$3 ← *((const byte[$100]) bitmap_plot_yhi) w= *((const byte[$100]) bitmap_plot_ylo + (byte) 0) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const word) divr16s::dividendu#0 Eliminating unused constant (const word) divr16s::remu#0 diff --git a/src/test/ref/literals.log b/src/test/ref/literals.log index 3a8eaa79c..6823aeff8 100644 --- a/src/test/ref/literals.log +++ b/src/test/ref/literals.log @@ -5,7 +5,6 @@ Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) nums ← { (number) 2, (number) 3, (number) 4, (number) 5 } to:@1 (void()) main() @@ -19,7 +18,7 @@ main::@1: scope:[main] from main main::@1 (number~) main::$0 ← (number) 4 + (byte) main::i#2 *((const byte*) SCREEN + (number~) main::$0) ← *((const byte[]) str + (byte) main::i#2) (number~) main::$1 ← (number) 9 + (byte) main::i#2 - *((const byte*) SCREEN + (number~) main::$1) ← *((byte[]) nums + (byte) main::i#2) + *((const byte*) SCREEN + (number~) main::$1) ← *((const byte[]) nums + (byte) main::i#2) (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,3) (bool~) main::$2 ← (byte) main::i#1 != rangelast(0,3) if((bool~) main::$2) goto main::@1 @@ -52,7 +51,7 @@ SYMBOL TABLE SSA (byte) main::i#1 (byte) main::i#2 (const byte) num = (byte) 1 -(byte[]) nums +(const byte[]) nums = { (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5 } (const byte[]) str = (string) "bcde" Adding number conversion cast (unumber) 0 in *((const byte*) SCREEN + (number) 0) ← (const byte) ch @@ -62,13 +61,11 @@ Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (unum Adding number conversion cast (unumber) 9 in (number~) main::$1 ← (number) 9 + (byte) main::i#2 Adding number conversion cast (unumber) main::$1 in (number~) main::$1 ← (unumber)(number) 9 + (byte) main::i#2 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) nums ← (byte[]){ (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast 4 Simplifying constant integer cast 5 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Simplifying constant integer cast 2 Simplifying constant integer cast 4 @@ -81,16 +78,13 @@ Finalized unsigned number type (byte) 9 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) 4 + (byte) main::i#2 Inferred type updated to byte in (unumber~) main::$1 ← (byte) 9 + (byte) main::i#2 -Simple Condition (bool~) main::$2 [11] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 +Simple Condition (bool~) main::$2 [10] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) nums = { 2, 3, 4, 5 } Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [9] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [11] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 -Simplifying expression containing zero SCREEN in [1] *((const byte*) SCREEN + (byte) 0) ← (const byte) ch +Resolved ranged next value [8] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [10] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 +Simplifying expression containing zero SCREEN in [0] *((const byte*) SCREEN + (byte) 0) ← (const byte) ch Successful SSA optimization PassNSimplifyExpressionWithZero Adding number conversion cast (unumber) 4 in if((byte) main::i#1!=(number) 4) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions diff --git a/src/test/ref/loophead-problem-2.log b/src/test/ref/loophead-problem-2.log index 9d1444465..de5ac5f94 100644 --- a/src/test/ref/loophead-problem-2.log +++ b/src/test/ref/loophead-problem-2.log @@ -1,7 +1,7 @@ -Fixing pointer array-indexing *((signed word[8]) ball_y + (byte) main::hit_check) -Fixing pointer array-indexing *((signed word[8]) ball_y + (byte) main::hit_check) -Fixing pointer array-indexing *((signed word[8]) ball_y + (byte) scan_for_lowest::i) -Fixing pointer array-indexing *((signed word[8]) ball_y + (byte) scan_for_lowest::i) +Fixing pointer array-indexing *((const signed word[8]) ball_y + (byte) main::hit_check) +Fixing pointer array-indexing *((const signed word[8]) ball_y + (byte) main::hit_check) +Fixing pointer array-indexing *((const signed word[8]) ball_y + (byte) scan_for_lowest::i) +Fixing pointer array-indexing *((const signed word[8]) ball_y + (byte) scan_for_lowest::i) Culled Empty Block (label) @1 Culled Empty Block (label) scan_for_lowest::@5 Culled Empty Block (label) scan_for_lowest::@6 @@ -10,7 +10,6 @@ Culled Empty Block (label) scan_for_lowest::@9 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (signed word[8]) ball_y ← { (number) $32, (number) $64, (number) -$c8, (number) $c, (number) -$64, (number) $4b, (number) 0, (number) -$79 } to:@2 (void()) main() @@ -24,10 +23,10 @@ main::@1: scope:[main] from main (byte) main::hit_check#0 ← (byte~) main::$0 *((const byte*) main::screen + (number) 0) ← (byte) main::hit_check#0 (byte~) main::$3 ← (byte) main::hit_check#0 * (const byte) SIZEOF_SIGNED_WORD - (byte~) main::$1 ← < *((signed word[8]) ball_y + (byte~) main::$3) + (byte~) main::$1 ← < *((const signed word[8]) ball_y + (byte~) main::$3) *((const byte*) main::screen + (number) 2) ← (byte~) main::$1 (byte~) main::$4 ← (byte) main::hit_check#0 * (const byte) SIZEOF_SIGNED_WORD - (byte~) main::$2 ← > *((signed word[8]) ball_y + (byte~) main::$4) + (byte~) main::$2 ← > *((const signed word[8]) ball_y + (byte~) main::$4) *((const byte*) main::screen + (number) 3) ← (byte~) main::$2 to:main::@return main::@return: scope:[main] from main::@1 @@ -52,7 +51,7 @@ scan_for_lowest::@2: scope:[scan_for_lowest] from scan_for_lowest::@1 (signed word) scan_for_lowest::height#2 ← phi( scan_for_lowest::@1/(signed word) scan_for_lowest::height#3 ) (byte) scan_for_lowest::i#3 ← phi( scan_for_lowest::@1/(byte) scan_for_lowest::i#2 ) (byte~) scan_for_lowest::$3 ← (byte) scan_for_lowest::i#3 * (const byte) SIZEOF_SIGNED_WORD - (bool~) scan_for_lowest::$1 ← *((signed word[8]) ball_y + (byte~) scan_for_lowest::$3) < (signed word) scan_for_lowest::height#2 + (bool~) scan_for_lowest::$1 ← *((const signed word[8]) ball_y + (byte~) scan_for_lowest::$3) < (signed word) scan_for_lowest::height#2 (bool~) scan_for_lowest::$2 ← ! (bool~) scan_for_lowest::$1 if((bool~) scan_for_lowest::$2) goto scan_for_lowest::@4 to:scan_for_lowest::@7 @@ -69,7 +68,7 @@ scan_for_lowest::@4: scope:[scan_for_lowest] from scan_for_lowest::@2 scan_for_ scan_for_lowest::@7: scope:[scan_for_lowest] from scan_for_lowest::@2 (byte) scan_for_lowest::i#5 ← phi( scan_for_lowest::@2/(byte) scan_for_lowest::i#3 ) (byte~) scan_for_lowest::$4 ← (byte) scan_for_lowest::i#5 * (const byte) SIZEOF_SIGNED_WORD - (signed word) scan_for_lowest::height#1 ← *((signed word[8]) ball_y + (byte~) scan_for_lowest::$4) + (signed word) scan_for_lowest::height#1 ← *((const signed word[8]) ball_y + (byte~) scan_for_lowest::$4) (byte) scan_for_lowest::lowest#1 ← (byte) scan_for_lowest::i#5 to:scan_for_lowest::@4 scan_for_lowest::@return: scope:[scan_for_lowest] from scan_for_lowest::@3 @@ -90,7 +89,7 @@ SYMBOL TABLE SSA (label) @begin (label) @end (const byte) SIZEOF_SIGNED_WORD = (byte) 2 -(signed word[8]) ball_y +(const signed word[8]) ball_y = { (signed word)(number) $32, (signed word)(number) $64, (signed word)(number) -$c8, (signed word)(number) $c, (signed word)(number) -$64, (signed word)(number) $4b, (signed word)(number) 0, (signed word)(number) -$79 } (void()) main() (byte~) main::$0 (byte~) main::$1 @@ -149,13 +148,10 @@ Adding number conversion cast (snumber) $258 in (signed word) scan_for_lowest::h Adding number conversion cast (unumber) 0 in (byte) scan_for_lowest::i#0 ← (number) 0 Adding number conversion cast (unumber) 8 in (bool~) scan_for_lowest::$0 ← (byte) scan_for_lowest::i#2 < (number) 8 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed word[8]) ball_y ← (signed word[8]){ (signed word)(number) $32, (signed word)(number) $64, (signed word)(number) -$c8, (signed word)(number) $c, (signed word)(number) -$64, (signed word)(number) $4b, (signed word)(number) 0, (signed word)(number) -$79 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) scan_for_lowest::lowest#0 ← (unumber)(number) $ff Inlining cast (signed word) scan_for_lowest::height#0 ← (snumber)(number) $258 Inlining cast (byte) scan_for_lowest::i#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $32 Simplifying constant integer cast $64 Simplifying constant integer cast -$c8 @@ -164,6 +160,7 @@ Simplifying constant integer cast -$64 Simplifying constant integer cast $4b Simplifying constant integer cast 0 Simplifying constant integer cast -$79 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Simplifying constant integer cast 2 Simplifying constant integer cast 3 @@ -180,7 +177,7 @@ Finalized signed number type (signed word) $258 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions -Inversing boolean not [23] (bool~) scan_for_lowest::$2 ← *((signed word[8]) ball_y + (byte~) scan_for_lowest::$3) >= (signed word) scan_for_lowest::height#2 from [22] (bool~) scan_for_lowest::$1 ← *((signed word[8]) ball_y + (byte~) scan_for_lowest::$3) < (signed word) scan_for_lowest::height#2 +Inversing boolean not [22] (bool~) scan_for_lowest::$2 ← *((const signed word[8]) ball_y + (byte~) scan_for_lowest::$3) >= (signed word) scan_for_lowest::height#2 from [21] (bool~) scan_for_lowest::$1 ← *((const signed word[8]) ball_y + (byte~) scan_for_lowest::$3) < (signed word) scan_for_lowest::height#2 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) scan_for_lowest::return#0 = (byte) scan_for_lowest::return#3 Alias (byte) main::hit_check#0 = (byte~) main::$0 @@ -191,19 +188,16 @@ Successful SSA optimization Pass2AliasElimination Alias candidate removed (phi-usage) (byte) scan_for_lowest::i#2 = (byte) scan_for_lowest::i#4 Identical Phi Values (byte) scan_for_lowest::i#4 (byte) scan_for_lowest::i#2 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [10] (byte~) main::$4 ← (byte) main::hit_check#0 * (const byte) SIZEOF_SIGNED_WORD +Identified duplicate assignment right side [9] (byte~) main::$4 ← (byte) main::hit_check#0 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2DuplicateRValueIdentification -Simple Condition (bool~) scan_for_lowest::$0 [19] if((byte) scan_for_lowest::i#2<(byte) 8) goto scan_for_lowest::@2 -Simple Condition (bool~) scan_for_lowest::$2 [24] if(*((signed word[8]) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@4 +Simple Condition (bool~) scan_for_lowest::$0 [18] if((byte) scan_for_lowest::i#2<(byte) 8) goto scan_for_lowest::@2 +Simple Condition (bool~) scan_for_lowest::$2 [23] if(*((const signed word[8]) ball_y + (byte~) scan_for_lowest::$3)>=(signed word) scan_for_lowest::height#2) goto scan_for_lowest::@4 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (signed word[8]) { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const signed word[8]) ball_y = { $32, $64, -$c8, $c, -$64, $4b, 0, -$79 } Constant (const byte) scan_for_lowest::lowest#0 = $ff Constant (const signed word) scan_for_lowest::height#0 = $258 Constant (const byte) scan_for_lowest::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Simplifying expression containing zero main::screen in [6] *((const byte*) main::screen + (byte) 0) ← (byte) main::hit_check#0 +Simplifying expression containing zero main::screen in [5] *((const byte*) main::screen + (byte) 0) ← (byte) main::hit_check#0 Successful SSA optimization PassNSimplifyExpressionWithZero Alias (byte~) main::$4 = (byte~) main::$3 Successful SSA optimization Pass2AliasElimination diff --git a/src/test/ref/mixed-array-0.log b/src/test/ref/mixed-array-0.log index 96b15ac89..ecbeeea1c 100644 --- a/src/test/ref/mixed-array-0.log +++ b/src/test/ref/mixed-array-0.log @@ -6,10 +6,9 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (byte[]) main::msg ← { (byte) 1, (number) 2, (number) 3 } - *((const byte*) main::SCREEN + (number) 0) ← *((byte[]) main::msg + (number) 0) - *((const byte*) main::SCREEN + (number) 1) ← *((byte[]) main::msg + (number) 1) - *((const byte*) main::SCREEN + (number) 2) ← *((byte[]) main::msg + (number) 2) + *((const byte*) main::SCREEN + (number) 0) ← *((const byte[]) main::msg + (number) 0) + *((const byte*) main::SCREEN + (number) 1) ← *((const byte[]) main::msg + (number) 1) + *((const byte*) main::SCREEN + (number) 2) ← *((const byte[]) main::msg + (number) 2) to:main::@return main::@return: scope:[main] from main return @@ -29,20 +28,18 @@ SYMBOL TABLE SSA (void()) main() (label) main::@return (const byte*) main::SCREEN = (byte*)(number) $400 -(byte[]) main::msg +(const byte[]) main::msg = { (byte) 1, (byte)(number) 2, (byte)(number) 3 } -Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((byte[]) main::msg + (number) 0) -Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((byte[]) main::msg + (unumber)(number) 0) -Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← *((byte[]) main::msg + (number) 1) -Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← *((byte[]) main::msg + (unumber)(number) 1) -Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 2) ← *((byte[]) main::msg + (number) 2) -Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 2) ← *((byte[]) main::msg + (unumber)(number) 2) +Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((const byte[]) main::msg + (number) 0) +Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((const byte[]) main::msg + (unumber)(number) 0) +Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← *((const byte[]) main::msg + (number) 1) +Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← *((const byte[]) main::msg + (unumber)(number) 1) +Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 2) ← *((const byte[]) main::msg + (number) 2) +Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 2) ← *((const byte[]) main::msg + (unumber)(number) 2) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) main::msg ← (byte[]){ (byte) 1, (byte)(number) 2, (byte)(number) 3 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 2 Simplifying constant integer cast 3 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 1 @@ -57,12 +54,8 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Identified constant from value list (byte[]) { (byte) 1, (byte) 2, (byte) 3 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) main::msg = { 1, 2, 3 } -Successful SSA optimization Pass2ConstantIdentification -Simplifying expression containing zero main::msg in [1] *((const byte*) main::SCREEN + (byte) 0) ← *((const byte[]) main::msg + (byte) 0) -Simplifying expression containing zero main::SCREEN in [1] *((const byte*) main::SCREEN + (byte) 0) ← *((const byte[]) main::msg) +Simplifying expression containing zero main::msg in [0] *((const byte*) main::SCREEN + (byte) 0) ← *((const byte[]) main::msg + (byte) 0) +Simplifying expression containing zero main::SCREEN in [0] *((const byte*) main::SCREEN + (byte) 0) ← *((const byte[]) main::msg) Successful SSA optimization PassNSimplifyExpressionWithZero Consolidated array index constant in *(main::msg+1) Consolidated array index constant in *(main::SCREEN+1) diff --git a/src/test/ref/mixed-array-1.log b/src/test/ref/mixed-array-1.log index ade66c69c..73effff76 100644 --- a/src/test/ref/mixed-array-1.log +++ b/src/test/ref/mixed-array-1.log @@ -6,10 +6,9 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (signed byte[]) main::msg ← { (number) -1, (number) 0, (number) 1 } - *((const signed byte*) main::SCREEN + (number) 0) ← *((signed byte[]) main::msg + (number) 0) - *((const signed byte*) main::SCREEN + (number) 1) ← *((signed byte[]) main::msg + (number) 1) - *((const signed byte*) main::SCREEN + (number) 2) ← *((signed byte[]) main::msg + (number) 2) + *((const signed byte*) main::SCREEN + (number) 0) ← *((const signed byte[]) main::msg + (number) 0) + *((const signed byte*) main::SCREEN + (number) 1) ← *((const signed byte[]) main::msg + (number) 1) + *((const signed byte*) main::SCREEN + (number) 2) ← *((const signed byte[]) main::msg + (number) 2) to:main::@return main::@return: scope:[main] from main return @@ -29,21 +28,19 @@ SYMBOL TABLE SSA (void()) main() (label) main::@return (const signed byte*) main::SCREEN = (signed byte*)(number) $400 -(signed byte[]) main::msg +(const signed byte[]) main::msg = { (signed byte)(number) -1, (signed byte)(number) 0, (signed byte)(number) 1 } -Adding number conversion cast (unumber) 0 in *((const signed byte*) main::SCREEN + (number) 0) ← *((signed byte[]) main::msg + (number) 0) -Adding number conversion cast (unumber) 0 in *((const signed byte*) main::SCREEN + (number) 0) ← *((signed byte[]) main::msg + (unumber)(number) 0) -Adding number conversion cast (unumber) 1 in *((const signed byte*) main::SCREEN + (number) 1) ← *((signed byte[]) main::msg + (number) 1) -Adding number conversion cast (unumber) 1 in *((const signed byte*) main::SCREEN + (number) 1) ← *((signed byte[]) main::msg + (unumber)(number) 1) -Adding number conversion cast (unumber) 2 in *((const signed byte*) main::SCREEN + (number) 2) ← *((signed byte[]) main::msg + (number) 2) -Adding number conversion cast (unumber) 2 in *((const signed byte*) main::SCREEN + (number) 2) ← *((signed byte[]) main::msg + (unumber)(number) 2) +Adding number conversion cast (unumber) 0 in *((const signed byte*) main::SCREEN + (number) 0) ← *((const signed byte[]) main::msg + (number) 0) +Adding number conversion cast (unumber) 0 in *((const signed byte*) main::SCREEN + (number) 0) ← *((const signed byte[]) main::msg + (unumber)(number) 0) +Adding number conversion cast (unumber) 1 in *((const signed byte*) main::SCREEN + (number) 1) ← *((const signed byte[]) main::msg + (number) 1) +Adding number conversion cast (unumber) 1 in *((const signed byte*) main::SCREEN + (number) 1) ← *((const signed byte[]) main::msg + (unumber)(number) 1) +Adding number conversion cast (unumber) 2 in *((const signed byte*) main::SCREEN + (number) 2) ← *((const signed byte[]) main::msg + (number) 2) +Adding number conversion cast (unumber) 2 in *((const signed byte*) main::SCREEN + (number) 2) ← *((const signed byte[]) main::msg + (unumber)(number) 2) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed byte[]) main::msg ← (signed byte[]){ (signed byte)(number) -1, (signed byte)(number) 0, (signed byte)(number) 1 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Simplifying constant pointer cast (signed byte*) 1024 Simplifying constant integer cast -1 Simplifying constant integer cast 0 Simplifying constant integer cast 1 +Simplifying constant pointer cast (signed byte*) 1024 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 1 @@ -58,12 +55,8 @@ Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 2 Successful SSA optimization PassNFinalizeNumberTypeConversions -Identified constant from value list (signed byte[]) { (signed byte) -1, (signed byte) 0, (signed byte) 1 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const signed byte[]) main::msg = { -1, 0, 1 } -Successful SSA optimization Pass2ConstantIdentification -Simplifying expression containing zero main::msg in [1] *((const signed byte*) main::SCREEN + (byte) 0) ← *((const signed byte[]) main::msg + (byte) 0) -Simplifying expression containing zero main::SCREEN in [1] *((const signed byte*) main::SCREEN + (byte) 0) ← *((const signed byte[]) main::msg) +Simplifying expression containing zero main::msg in [0] *((const signed byte*) main::SCREEN + (byte) 0) ← *((const signed byte[]) main::msg + (byte) 0) +Simplifying expression containing zero main::SCREEN in [0] *((const signed byte*) main::SCREEN + (byte) 0) ← *((const signed byte[]) main::msg) Successful SSA optimization PassNSimplifyExpressionWithZero Consolidated array index constant in *(main::msg+1) Consolidated array index constant in *(main::SCREEN+1) diff --git a/src/test/ref/nes-array.log b/src/test/ref/nes-array.log index 98c1d7bc0..dcd7f32b6 100644 --- a/src/test/ref/nes-array.log +++ b/src/test/ref/nes-array.log @@ -2,13 +2,12 @@ Setting inferred volatile on symbol affected by address-of (signed word*~) main: Setting inferred volatile on symbol affected by address-of (signed word*~) main::$2 ← & (signed word) main::y2 Fixing pointer increment (signed word*) main::SCREEN ← ++ (signed word*) main::SCREEN Fixing pointer increment (signed word*) main::SCREEN ← ++ (signed word*) main::SCREEN -Fixing pointer array-indexing *((signed word[4]) wow + (byte) foo::x) +Fixing pointer array-indexing *((const signed word[4]) wow + (byte) foo::x) Culled Empty Block (label) foo::@1 Culled Empty Block (label) @1 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (signed word[4]) wow ← { (number) $cafe, (number) $babe, (number) $1234, (number) $5678 } to:@2 (signed word()) foo((byte) foo::x , (signed word*) foo::y) @@ -16,7 +15,7 @@ foo: scope:[foo] from main main::@1 (signed word*) foo::y#2 ← phi( main/(signed word*) foo::y#0 main::@1/(signed word*) foo::y#1 ) (byte) foo::x#2 ← phi( main/(byte) foo::x#0 main::@1/(byte) foo::x#1 ) (byte~) foo::$1 ← (byte) foo::x#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word~) foo::$0 ← *((signed word[4]) wow + (byte~) foo::$1) + *((signed word*) foo::y#2) + (signed word~) foo::$0 ← *((const signed word[4]) wow + (byte~) foo::$1) + *((signed word*) foo::y#2) (signed word) foo::return#0 ← (signed word~) foo::$0 to:foo::@return foo::@return: scope:[foo] from foo @@ -111,15 +110,13 @@ SYMBOL TABLE SSA (signed word) main::y2 (signed word) main::y2#0 (signed word) main::y2#1 -(signed word[4]) wow +(const signed word[4]) wow = { (signed word)(number) $cafe, (signed word)(number) $babe, (signed word)(number) $1234, (signed word)(number) $5678 } Adding number conversion cast (snumber) $1234 in (signed word) main::y1#0 ← (number) $1234 Adding number conversion cast (snumber) $1234 in (signed word) main::y2#0 ← (number) $1234 Adding number conversion cast (unumber) 1 in (byte) foo::x#0 ← (number) 1 Adding number conversion cast (unumber) 2 in (byte) foo::x#1 ← (number) 2 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed word[4]) wow ← (signed word[4]){ (signed word)(number) $cafe, (signed word)(number) $babe, (signed word)(number) $1234, (signed word)(number) $5678 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (signed word*) main::SCREEN#0 ← (signed word*)(number) $400 Inlining cast (signed word) main::y1#0 ← (snumber)(number) $1234 Inlining cast (signed word) main::y2#0 ← (snumber)(number) $1234 @@ -150,19 +147,16 @@ Alias (signed word*) foo::y#1 = (signed word*~) main::$2 Alias (signed word) foo::return#3 = (signed word) foo::return#6 Alias (signed word*) main::SCREEN#1 = (signed word*) main::SCREEN#4 Successful SSA optimization Pass2AliasElimination -Constant right-side identified [11] (signed word*) foo::y#0 ← & (signed word) main::y1#0 -Constant right-side identified [20] (signed word*) foo::y#1 ← & (signed word) main::y2#0 +Constant right-side identified [10] (signed word*) foo::y#0 ← & (signed word) main::y1#0 +Constant right-side identified [19] (signed word*) foo::y#1 ← & (signed word) main::y2#0 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (signed word[4]) { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const signed word[4]) wow = { $cafe, $babe, $1234, $5678 } Constant (const signed word*) main::SCREEN#0 = (signed word*) 1024 Constant (const signed word*) foo::y#0 = &main::y1#0 Constant (const byte) foo::x#0 = 1 Constant (const signed word*) foo::y#1 = &main::y2#0 Constant (const byte) foo::x#1 = 2 Successful SSA optimization Pass2ConstantIdentification -Converting *(pointer+n) to pointer[n] [27] *((signed word*) main::SCREEN#1) ← (signed word~) main::$3 -- *(main::SCREEN#0 + SIZEOF_SIGNED_WORD) +Converting *(pointer+n) to pointer[n] [26] *((signed word*) main::SCREEN#1) ← (signed word~) main::$3 -- *(main::SCREEN#0 + SIZEOF_SIGNED_WORD) Successful SSA optimization Pass2InlineDerefIdx Eliminating unused variable (signed word*) main::SCREEN#2 and assignment [15] (signed word*) main::SCREEN#2 ← (signed word*) main::SCREEN#1 + (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization PassNEliminateUnusedVars diff --git a/src/test/ref/norom-charset.log b/src/test/ref/norom-charset.log index 678890b37..221ed3a79 100644 --- a/src/test/ref/norom-charset.log +++ b/src/test/ref/norom-charset.log @@ -1,4 +1,4 @@ -Fixing pointer array-indexing *((word[]) charset_spec_row + (byte) main::c) +Fixing pointer array-indexing *((const word[]) charset_spec_row + (byte) main::c) Identified constant variable (byte*) VIC_MEMORY Identified constant variable (byte*) SCREEN Identified constant variable (byte*) CHARSET @@ -10,7 +10,6 @@ Culled Empty Block (label) gen_char3::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (word[]) charset_spec_row ← { (number) $f7da, (number) $f7de, (number) $f24e, (number) $d6de } to:@2 (void()) main() @@ -30,7 +29,7 @@ main::@2: scope:[main] from main::@1 (byte) main::c#3 ← phi( main::@1/(byte) main::c#2 ) (byte~) main::$10 ← (byte) main::c#3 * (const byte) SIZEOF_WORD (byte*) gen_char3::dst#0 ← (byte*) main::charset#2 - (word) gen_char3::spec#0 ← *((word[]) charset_spec_row + (byte~) main::$10) + (word) gen_char3::spec#0 ← *((const word[]) charset_spec_row + (byte~) main::$10) call gen_char3 to:main::@7 main::@7: scope:[main] from main::@2 @@ -130,7 +129,7 @@ SYMBOL TABLE SSA (const byte*) SCREEN = (byte*)(number) $400 (const byte) SIZEOF_WORD = (byte) 2 (const byte*) VIC_MEMORY = (byte*)(number) $d018 -(word[]) charset_spec_row +(const word[]) charset_spec_row = { (word)(number) $f7da, (word)(number) $f7de, (word)(number) $f24e, (word)(number) $d6de } (void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec) (byte~) gen_char3::$0 (number~) gen_char3::$1 @@ -235,21 +234,19 @@ Adding number conversion cast (unumber) gen_char3::$6 in (number~) gen_char3::$6 Adding number conversion cast (unumber) 1 in (number~) gen_char3::$4 ← (byte) gen_char3::b#4 | (number) 1 Adding number conversion cast (unumber) gen_char3::$4 in (number~) gen_char3::$4 ← (byte) gen_char3::b#4 | (unumber)(number) 1 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) charset_spec_row ← (word[]){ (word)(number) $f7da, (word)(number) $f7de, (word)(number) $f24e, (word)(number) $d6de } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::c#0 ← (unumber)(number) 0 Inlining cast (word~) main::$1 ← (word)(const byte*) SCREEN Inlining cast (word~) main::$3 ← (word)(const byte*) CHARSET Inlining cast (byte~) main::$6 ← (byte)(unumber~) main::$5 Inlining cast (byte) gen_char3::b#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 53272 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 12288 Simplifying constant integer cast $f7da Simplifying constant integer cast $f7de Simplifying constant integer cast $f24e Simplifying constant integer cast $d6de +Simplifying constant pointer cast (byte*) 53272 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 12288 Simplifying constant integer cast 8 Simplifying constant integer cast 0 Simplifying constant integer cast 4 @@ -283,7 +280,7 @@ Inferred type updated to byte in (unumber~) gen_char3::$1 ← (byte~) gen_char3: Inferred type updated to byte in (unumber~) gen_char3::$5 ← (byte) gen_char3::b#3 * (byte) 2 Inferred type updated to word in (unumber~) gen_char3::$6 ← (word) gen_char3::spec#3 * (byte) 2 Inferred type updated to byte in (unumber~) gen_char3::$4 ← (byte) gen_char3::b#4 | (byte) 1 -Inversing boolean not [33] (bool~) gen_char3::$3 ← (byte~) gen_char3::$1 == (byte) 0 from [32] (bool~) gen_char3::$2 ← (byte~) gen_char3::$1 != (byte) 0 +Inversing boolean not [32] (bool~) gen_char3::$3 ← (byte~) gen_char3::$1 == (byte) 0 from [31] (bool~) gen_char3::$2 ← (byte~) gen_char3::$1 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) main::charset#0 = (byte*~) main::$0 Alias (byte) main::c#2 = (byte) main::c#3 (byte) main::c#4 @@ -312,18 +309,15 @@ Identical Phi Values (byte) gen_char3::r#2 (byte) gen_char3::r#6 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (byte*) gen_char3::dst#5 (byte*) gen_char3::dst#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) main::$7 [6] if((byte) main::c#2!=(byte) 4) goto main::@2 -Simple Condition (bool~) gen_char3::$3 [34] if((byte~) gen_char3::$1==(byte) 0) goto gen_char3::@3 -Simple Condition (bool~) gen_char3::$7 [42] if((byte) gen_char3::c#1!=rangelast(0,2)) goto gen_char3::@2 -Simple Condition (bool~) gen_char3::$8 [50] if((byte) gen_char3::r#1!=rangelast(0,4)) goto gen_char3::@1 +Simple Condition (bool~) main::$7 [5] if((byte) main::c#2!=(byte) 4) goto main::@2 +Simple Condition (bool~) gen_char3::$3 [33] if((byte~) gen_char3::$1==(byte) 0) goto gen_char3::@3 +Simple Condition (bool~) gen_char3::$7 [41] if((byte) gen_char3::c#1!=rangelast(0,2)) goto gen_char3::@2 +Simple Condition (bool~) gen_char3::$8 [49] if((byte) gen_char3::r#1!=rangelast(0,4)) goto gen_char3::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [1] (byte*) main::charset#0 ← (const byte*) CHARSET + (byte) 8 -Constant right-side identified [16] (word~) main::$1 ← (word)(const byte*) SCREEN -Constant right-side identified [18] (word~) main::$3 ← (word)(const byte*) CHARSET +Constant right-side identified [0] (byte*) main::charset#0 ← (const byte*) CHARSET + (byte) 8 +Constant right-side identified [15] (word~) main::$1 ← (word)(const byte*) SCREEN +Constant right-side identified [17] (word~) main::$3 ← (word)(const byte*) CHARSET Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) charset_spec_row = { $f7da, $f7de, $f24e, $d6de } Constant (const byte*) main::charset#0 = CHARSET+8 Constant (const byte) main::c#0 = 0 Constant (const word) main::$1 = (word)SCREEN @@ -332,10 +326,10 @@ Constant (const byte) gen_char3::r#0 = 0 Constant (const byte) gen_char3::b#0 = 0 Constant (const byte) gen_char3::c#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [40] gen_char3::c#1 ← ++ gen_char3::c#2 to ++ -Resolved ranged comparison value [42] if(gen_char3::c#1!=rangelast(0,2)) goto gen_char3::@2 to (number) 3 -Resolved ranged next value [48] gen_char3::r#1 ← ++ gen_char3::r#6 to ++ -Resolved ranged comparison value [50] if(gen_char3::r#1!=rangelast(0,4)) goto gen_char3::@1 to (number) 5 +Resolved ranged next value [39] gen_char3::c#1 ← ++ gen_char3::c#2 to ++ +Resolved ranged comparison value [41] if(gen_char3::c#1!=rangelast(0,2)) goto gen_char3::@2 to (number) 3 +Resolved ranged next value [47] gen_char3::r#1 ← ++ gen_char3::r#6 to ++ +Resolved ranged comparison value [49] if(gen_char3::r#1!=rangelast(0,4)) goto gen_char3::@1 to (number) 5 Adding number conversion cast (unumber) 3 in if((byte) gen_char3::c#1!=(number) 3) goto gen_char3::@2 Adding number conversion cast (unumber) 5 in if((byte) gen_char3::r#1!=(number) 5) goto gen_char3::@1 Successful SSA optimization PassNAddNumberTypeConversions diff --git a/src/test/ref/optimize-unsigned-comparisons.log b/src/test/ref/optimize-unsigned-comparisons.log index 6f1927c2d..0b5a37f9b 100644 --- a/src/test/ref/optimize-unsigned-comparisons.log +++ b/src/test/ref/optimize-unsigned-comparisons.log @@ -2,7 +2,6 @@ Culled Empty Block (label) main::@1 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[8]) ball_active ← { (number) 0, (number) 1, (number) 0, (number) 1, (number) 0, (number) 1, (number) 1, (number) 1 } to:@1 (void()) main() @@ -12,13 +11,13 @@ main: scope:[main] from @1 to:main::@2 main::@2: scope:[main] from main main::@3 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (bool~) main::$2 ← *((byte[8]) ball_active + (byte) main::i#2) < (number) 0 + (bool~) main::$2 ← *((const byte[8]) ball_active + (byte) main::i#2) < (number) 0 (bool~) main::$3 ← ! (bool~) main::$2 if((bool~) main::$3) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::i#3 ← phi( main::@2/(byte) main::i#2 main::@4/(byte) main::i#4 ) - (byte) main::temp#1 ← *((byte[8]) ball_active + (byte) main::i#3) + (byte) main::temp#1 ← *((const byte[8]) ball_active + (byte) main::i#3) (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,7) (bool~) main::$4 ← (byte) main::i#1 != rangelast(0,7) if((bool~) main::$4) goto main::@2 @@ -52,7 +51,7 @@ SYMBOL TABLE SSA (label) @2 (label) @begin (label) @end -(byte[8]) ball_active +(const byte[8]) ball_active = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1 } (void()) main() (bool~) main::$0 (bool~) main::$1 @@ -78,22 +77,20 @@ SYMBOL TABLE SSA (byte) main::temp#2 (byte) main::temp#3 -Adding number conversion cast (unumber) 0 in (bool~) main::$2 ← *((byte[8]) ball_active + (byte) main::i#2) < (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) main::$2 ← *((const byte[8]) ball_active + (byte) main::i#2) < (number) 0 Adding number conversion cast (unumber) 0 in (bool~) main::$0 ← (byte) main::temp#2 < (number) 0 Adding number conversion cast (unumber) $28 in *((const byte*) main::screen + (number) $28) ← (byte) main::temp#3 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) ball_active ← (byte[8]){ (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $28 Successful SSA optimization PassNCastSimplification @@ -101,29 +98,26 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions -Inversing boolean not [5] (bool~) main::$3 ← *((byte[8]) ball_active + (byte) main::i#2) >= (byte) 0 from [4] (bool~) main::$2 ← *((byte[8]) ball_active + (byte) main::i#2) < (byte) 0 -Inversing boolean not [16] (bool~) main::$1 ← (byte) main::temp#2 >= (byte) 0 from [15] (bool~) main::$0 ← (byte) main::temp#2 < (byte) 0 +Inversing boolean not [4] (bool~) main::$3 ← *((const byte[8]) ball_active + (byte) main::i#2) >= (byte) 0 from [3] (bool~) main::$2 ← *((const byte[8]) ball_active + (byte) main::i#2) < (byte) 0 +Inversing boolean not [15] (bool~) main::$1 ← (byte) main::temp#2 >= (byte) 0 from [14] (bool~) main::$0 ← (byte) main::temp#2 < (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) main::i#2 = (byte) main::i#4 Alias (byte) main::temp#1 = (byte) main::temp#2 (byte) main::temp#3 Successful SSA optimization Pass2AliasElimination Alias (byte) main::i#2 = (byte) main::i#3 Successful SSA optimization Pass2AliasElimination -Simple Condition (bool~) main::$3 [6] if(*((byte[8]) ball_active + (byte) main::i#2)>=(byte) 0) goto main::@3 -Simple Condition (bool~) main::$4 [11] if((byte) main::i#1!=rangelast(0,7)) goto main::@2 -Simple Condition (bool~) main::$1 [17] if((byte) main::temp#1>=(byte) 0) goto main::@return +Simple Condition (bool~) main::$3 [5] if(*((const byte[8]) ball_active + (byte) main::i#2)>=(byte) 0) goto main::@3 +Simple Condition (bool~) main::$4 [10] if((byte) main::i#1!=rangelast(0,7)) goto main::@2 +Simple Condition (bool~) main::$1 [16] if((byte) main::temp#1>=(byte) 0) goto main::@return Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[8]) { (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[8]) ball_active = { 0, 1, 0, 1, 0, 1, 1, 1 } Constant (const byte) main::temp#0 = 0 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [6] if(*((const byte[8]) ball_active + (byte) main::i#2)>=(byte) 0) goto main::@3 -if() condition always true - replacing block destination [17] if((byte) main::temp#1>=(byte) 0) goto main::@return +if() condition always true - replacing block destination [5] if(*((const byte[8]) ball_active + (byte) main::i#2)>=(byte) 0) goto main::@3 +if() condition always true - replacing block destination [16] if((byte) main::temp#1>=(byte) 0) goto main::@return Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [9] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [11] if(main::i#1!=rangelast(0,7)) goto main::@2 to (number) 8 +Resolved ranged next value [8] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [10] if(main::i#1!=rangelast(0,7)) goto main::@2 to (number) 8 Eliminating unused constant (const byte) main::temp#0 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@4 diff --git a/src/test/ref/plasma-center.log b/src/test/ref/plasma-center.log index bf69e2419..4f9e10da9 100644 --- a/src/test/ref/plasma-center.log +++ b/src/test/ref/plasma-center.log @@ -1287,7 +1287,6 @@ make_plasma_charset: scope:[make_plasma_charset] from main::@10 (byte*) print_char_cursor#29 ← phi( main::@10/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#22 ← phi( main::@10/(byte*) print_line_cursor#14 ) (byte*) print_screen#4 ← phi( main::@10/(byte*) print_screen#5 ) - (byte[8]) make_plasma_charset::bittab ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } call sid_rnd_init to:make_plasma_charset::@23 make_plasma_charset::@23: scope:[make_plasma_charset] from make_plasma_charset @@ -1425,7 +1424,7 @@ make_plasma_charset::@13: scope:[make_plasma_charset] from make_plasma_charset: (word) make_plasma_charset::c#13 ← phi( make_plasma_charset::@25/(word) make_plasma_charset::c#14 ) (byte) make_plasma_charset::ii#4 ← phi( make_plasma_charset::@25/(byte) make_plasma_charset::ii#5 ) (byte) make_plasma_charset::b#3 ← phi( make_plasma_charset::@25/(byte) make_plasma_charset::b#5 ) - (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#3 | *((byte[8]) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#4) + (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#3 | *((const byte[8]) make_plasma_charset::bittab + (byte) make_plasma_charset::ii#4) to:make_plasma_charset::@10 make_plasma_charset::@19: scope:[make_plasma_charset] from make_plasma_charset::@26 make_plasma_charset::@6 (byte*) make_plasma_charset::charset#11 ← phi( make_plasma_charset::@26/(byte*) make_plasma_charset::charset#14 make_plasma_charset::@6/(byte*) make_plasma_charset::charset#15 ) @@ -2328,7 +2327,7 @@ SYMBOL TABLE SSA (byte) make_plasma_charset::b#5 (byte) make_plasma_charset::b#6 (byte) make_plasma_charset::b#7 -(byte[8]) make_plasma_charset::bittab +(const byte[8]) make_plasma_charset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (word) make_plasma_charset::c (word) make_plasma_charset::c#0 (word) make_plasma_charset::c#1 @@ -2846,8 +2845,6 @@ Adding number conversion cast (unumber) 8 in (number~) make_plasma_charset::$10 Adding number conversion cast (unumber) make_plasma_charset::$10 in (number~) make_plasma_charset::$10 ← (word) make_plasma_charset::c#5 * (unumber)(number) 8 Adding number conversion cast (unumber) make_plasma_charset::$11 in (number~) make_plasma_charset::$11 ← (unumber~) make_plasma_charset::$10 + (byte) make_plasma_charset::i#3 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) make_plasma_charset::bittab ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 Inlining cast (void*) malloc::return#0 ← (void*)(byte*) malloc::mem#0 @@ -2892,6 +2889,14 @@ Simplifying constant pointer cast (byte*) 54299 Simplifying constant pointer cast (byte*) 8192 Simplifying constant pointer cast (byte*) 10240 Simplifying constant pointer cast (byte*) 11264 +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 8 +Simplifying constant integer cast $10 +Simplifying constant integer cast $20 +Simplifying constant integer cast $40 +Simplifying constant integer cast $80 Simplifying constant pointer cast (byte*) 40960 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -2971,14 +2976,6 @@ Simplifying constant integer cast $28 Simplifying constant integer cast $28 Simplifying constant integer cast $27 Simplifying constant integer cast $27 -Simplifying constant integer cast 1 -Simplifying constant integer cast 2 -Simplifying constant integer cast 4 -Simplifying constant integer cast 8 -Simplifying constant integer cast $10 -Simplifying constant integer cast $20 -Simplifying constant integer cast $40 -Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast $100 Simplifying constant integer cast 0 @@ -3126,8 +3123,8 @@ Inversing boolean not [150] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi Inversing boolean not [159] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [158] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 Inversing boolean not [170] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [169] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 Inversing boolean not [194] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [193] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 -Inversing boolean not [518] (bool~) make_plasma_charset::$14 ← (byte~) make_plasma_charset::$12 != (byte) 0 from [517] (bool~) make_plasma_charset::$13 ← (byte~) make_plasma_charset::$12 == (byte) 0 -Inversing boolean not [530] (bool~) make_plasma_charset::$9 ← (byte~) make_plasma_charset::$7 <= (byte) make_plasma_charset::s#1 from [529] (bool~) make_plasma_charset::$8 ← (byte~) make_plasma_charset::$7 > (byte) make_plasma_charset::s#1 +Inversing boolean not [517] (bool~) make_plasma_charset::$14 ← (byte~) make_plasma_charset::$12 != (byte) 0 from [516] (bool~) make_plasma_charset::$13 ← (byte~) make_plasma_charset::$12 == (byte) 0 +Inversing boolean not [529] (bool~) make_plasma_charset::$9 ← (byte~) make_plasma_charset::$7 <= (byte) make_plasma_charset::s#1 from [528] (bool~) make_plasma_charset::$8 ← (byte~) make_plasma_charset::$7 > (byte) make_plasma_charset::s#1 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 Alias (void*) memset::str#3 = (void*) memset::str#4 @@ -3526,19 +3523,17 @@ Simple Condition (bool~) init_dist_screen::$3 [429] if((byte) init_dist_screen:: Simple Condition (bool~) init_dist_screen::$10 [448] if((byte) init_dist_screen::x#2<=(byte) $13) goto init_dist_screen::@6 Simple Condition (bool~) init_dist_screen::$12 [453] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@8 Simple Condition (bool~) init_dist_screen::$21 [459] if((byte) init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 -Simple Condition (bool~) make_plasma_charset::$2 [504] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 -Simple Condition (bool~) make_plasma_charset::$4 [511] if((byte) make_plasma_charset::i#2<(byte) 8) goto make_plasma_charset::@5 -Simple Condition (bool~) make_plasma_charset::$14 [519] if((byte~) make_plasma_charset::$12!=(byte) 0) goto make_plasma_charset::@19 -Simple Condition (bool~) make_plasma_charset::$5 [522] if((byte) make_plasma_charset::ii#2<(byte) 8) goto make_plasma_charset::@8 -Simple Condition (bool~) make_plasma_charset::$9 [531] if((byte~) make_plasma_charset::$7<=(byte) make_plasma_charset::s#0) goto make_plasma_charset::@10 +Simple Condition (bool~) make_plasma_charset::$2 [503] if((word) make_plasma_charset::c#2<(word) $100) goto make_plasma_charset::@2 +Simple Condition (bool~) make_plasma_charset::$4 [510] if((byte) make_plasma_charset::i#2<(byte) 8) goto make_plasma_charset::@5 +Simple Condition (bool~) make_plasma_charset::$14 [518] if((byte~) make_plasma_charset::$12!=(byte) 0) goto make_plasma_charset::@19 +Simple Condition (bool~) make_plasma_charset::$5 [521] if((byte) make_plasma_charset::ii#2<(byte) 8) goto make_plasma_charset::@8 +Simple Condition (bool~) make_plasma_charset::$9 [530] if((byte~) make_plasma_charset::$7<=(byte) make_plasma_charset::s#0) goto make_plasma_charset::@10 Successful SSA optimization Pass2ConditionalJumpSimplification Negating conditional jump and destination [191] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement Constant right-side identified [61] (byte~) bsearch16u::$17 ← (byte) 1 * (const byte) SIZEOF_WORD Constant right-side identified [68] (byte~) bsearch16u::$18 ← (byte) 1 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) heap_head#0 = HEAP_TOP Constant (const byte) bsearch16u::$17 = 1*SIZEOF_WORD Constant (const byte) bsearch16u::$18 = 1*SIZEOF_WORD @@ -3580,7 +3575,6 @@ Constant (const byte) NUM_SQUARES#3 = $30 Constant (const byte) init_dist_screen::y#0 = 0 Constant (const byte) init_dist_screen::x#0 = 0 Constant (const byte) init_dist_screen::xb#0 = $27 -Constant (const byte[8]) make_plasma_charset::bittab = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const word) make_plasma_charset::c#0 = 0 Constant (const byte) make_plasma_charset::i#0 = 0 Constant (const byte) make_plasma_charset::b#0 = 0 @@ -3608,7 +3602,7 @@ Resolved ranged next value [457] init_dist_screen::y#1 ← ++ init_dist_screen:: Resolved ranged comparison value [459] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to (number) $d Rewriting conditional comparison [376] if((byte) init_angle_screen::x#2<=(byte) $13) goto init_angle_screen::@3 Rewriting conditional comparison [448] if((byte) init_dist_screen::x#2<=(byte) $13) goto init_dist_screen::@6 -De-inlining pointer[w] to *(pointer+w) [535] *((const byte*) make_plasma_charset::charset#0 + (word~) make_plasma_charset::$11) ← (byte) make_plasma_charset::b#2 +De-inlining pointer[w] to *(pointer+w) [534] *((const byte*) make_plasma_charset::charset#0 + (word~) make_plasma_charset::$11) ← (byte) make_plasma_charset::b#2 Successful SSA optimization Pass2DeInlineWordDerefIdx Eliminating unused variable (void*) memset::return#2 and assignment [105] (void*) memset::return#2 ← (void*) memset::str#3 Eliminating unused variable (void*) memset::return#3 and assignment [126] (void*) memset::return#3 ← (void*) memset::str#3 diff --git a/src/test/ref/screen-center-angle.asm b/src/test/ref/screen-center-angle.asm index 63ba9918a..b54253912 100644 --- a/src/test/ref/screen-center-angle.asm +++ b/src/test/ref/screen-center-angle.asm @@ -549,9 +549,9 @@ init_font_hex: { bne __b1 rts } - print_hextab: .text "0123456789abcdef" // Bit patterns for symbols 0-f (3x5 pixels) used in font hex FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 + print_hextab: .text "0123456789abcdef" // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ... CORDIC_ATAN2_ANGLES_16: .for (var i=0; i (word~) init_angle_screen::$11 Inferred type updated to byte in (unumber~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 Inferred type updated to byte in (unumber~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -Inversing boolean not [61] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [60] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 -Inversing boolean not [70] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [69] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 -Inversing boolean not [81] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [80] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 -Inversing boolean not [105] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [104] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 +Inversing boolean not [60] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [59] (bool~) atan2_16::$16 ← (signed word) atan2_16::yi#3 == (signed byte) 0 +Inversing boolean not [69] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [68] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0 +Inversing boolean not [80] (bool~) atan2_16::$19 ← (byte) 0 == (byte) atan2_16::shift#4 from [79] (bool~) atan2_16::$24 ← (byte) 0 != (byte) atan2_16::shift#4 +Inversing boolean not [104] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [103] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) init_font_hex::charset#3 = (byte*) init_font_hex::charset#4 Alias (byte) init_font_hex::idx#2 = (byte) init_font_hex::idx#6 @@ -1576,27 +1573,26 @@ Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) init_font_hex::$3 [19] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [29] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [34] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) atan2_16::$0 [40] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -Simple Condition (bool~) atan2_16::$5 [49] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -Simple Condition (bool~) atan2_16::$17 [62] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 -Simple Condition (bool~) atan2_16::$11 [71] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -Simple Condition (bool~) atan2_16::$18 [74] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 -Simple Condition (bool~) atan2_16::$19 [82] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 -Simple Condition (bool~) atan2_16::$20 [85] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 -Simple Condition (bool~) atan2_16::$21 [102] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 -Simple Condition (bool~) atan2_16::$14 [106] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -Simple Condition (bool~) init_angle_screen::$2 [230] if((byte) init_angle_screen::x#2<=(byte) $13) goto init_angle_screen::@3 -Simple Condition (bool~) init_angle_screen::$16 [267] if((byte) init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 +Simple Condition (bool~) atan2_16::$0 [39] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 +Simple Condition (bool~) atan2_16::$5 [48] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 +Simple Condition (bool~) atan2_16::$17 [61] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16 +Simple Condition (bool~) atan2_16::$11 [70] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 +Simple Condition (bool~) atan2_16::$18 [73] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19 +Simple Condition (bool~) atan2_16::$19 [81] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25 +Simple Condition (bool~) atan2_16::$20 [84] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26 +Simple Condition (bool~) atan2_16::$21 [101] if((byte) atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@15 +Simple Condition (bool~) atan2_16::$14 [105] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 +Simple Condition (bool~) init_angle_screen::$2 [229] if((byte) init_angle_screen::x#2<=(byte) $13) goto init_angle_screen::@3 +Simple Condition (bool~) init_angle_screen::$16 [266] if((byte) init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Negating conditional jump and destination [102] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 +Negating conditional jump and destination [101] if((byte) atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@17 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const word[CORDIC_ITERATIONS_16]) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i(byte) 0) goto bsearch16u::@7 Simple Condition (bool~) bsearch16u::$12 [25] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@9 @@ -2001,16 +1990,14 @@ Simple Condition (bool~) init_squares::$5 [77] if((byte) init_squares::i#1!=rang Simple Condition (bool~) init_font_hex::$3 [124] if((byte) init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 Simple Condition (bool~) init_font_hex::$4 [134] if((byte) init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 Simple Condition (bool~) init_font_hex::$5 [139] if((byte) init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 -Simple Condition (bool~) init_dist_screen::$3 [270] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2 -Simple Condition (bool~) init_dist_screen::$10 [289] if((byte) init_dist_screen::x#2<=(byte) $13) goto init_dist_screen::@6 -Simple Condition (bool~) init_dist_screen::$12 [294] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@8 -Simple Condition (bool~) init_dist_screen::$21 [300] if((byte) init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 +Simple Condition (bool~) init_dist_screen::$3 [268] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2 +Simple Condition (bool~) init_dist_screen::$10 [287] if((byte) init_dist_screen::x#2<=(byte) $13) goto init_dist_screen::@6 +Simple Condition (bool~) init_dist_screen::$12 [292] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@8 +Simple Condition (bool~) init_dist_screen::$21 [298] if((byte) init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [41] (byte~) bsearch16u::$17 ← (byte) 1 * (const byte) SIZEOF_WORD Constant right-side identified [48] (byte~) bsearch16u::$18 ← (byte) 1 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) heap_head#0 = HEAP_TOP Constant (const byte) bsearch16u::$17 = 1*SIZEOF_WORD Constant (const byte) bsearch16u::$18 = 1*SIZEOF_WORD @@ -2018,11 +2005,12 @@ Constant (const byte) NUM_SQUARES#0 = $ff Constant (const word*) SQUARES#0 = (word*) 0 Constant (const word) init_squares::sqr#0 = 0 Constant (const byte) init_squares::i#0 = 0 +Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c#0 = 0 +Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte) init_font_hex::c1#0 = 0 Constant (const byte) init_font_hex::idx#0 = 0 Constant (const byte) init_font_hex::i#0 = 0 -Constant (const byte[]) FONT_HEX_PROTO = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 } Constant (const byte*) init_font_hex::charset#1 = CHARSET Constant (const byte*) main::toD0181_screen#0 = SCREEN Constant (const byte*) main::toD0181_gfx#0 = CHARSET @@ -2036,8 +2024,6 @@ Constant (const byte) init_dist_screen::x#0 = 0 Constant (const byte) init_dist_screen::xb#0 = $27 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) bsearch16u::num#2 = NUM_SQUARES#3 -Constant (const byte*) init_font_hex::proto_hi#0 = FONT_HEX_PROTO -Constant (const byte*) init_font_hex::proto_lo#0 = FONT_HEX_PROTO Constant (const byte*) print_word_at::at#0 = print_dword_at::at#0 Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0 Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0 @@ -2050,18 +2036,18 @@ Resolved ranged next value [132] init_font_hex::c1#1 ← ++ init_font_hex::c1#4 Resolved ranged comparison value [134] if(init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 to (number) $10 Resolved ranged next value [137] init_font_hex::c#1 ← ++ init_font_hex::c#6 to ++ Resolved ranged comparison value [139] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to (number) $10 -Resolved ranged next value [298] init_dist_screen::y#1 ← ++ init_dist_screen::y#10 to ++ -Resolved ranged comparison value [300] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to (number) $d -Rewriting conditional comparison [289] if((byte) init_dist_screen::x#2<=(byte) $13) goto init_dist_screen::@6 -Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES in [148] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES -Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS in [149] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +Resolved ranged next value [296] init_dist_screen::y#1 ← ++ init_dist_screen::y#10 to ++ +Resolved ranged comparison value [298] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to (number) $d +Rewriting conditional comparison [287] if((byte) init_dist_screen::x#2<=(byte) $13) goto init_dist_screen::@6 +Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES in [146] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES +Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS in [147] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A Successful SSA optimization PassNSimplifyConstantZero Simplifying expression containing zero init_font_hex::charset#2 in [113] *((byte*) init_font_hex::charset#2 + (const byte) init_font_hex::idx#0) ← (byte) 0 -Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [149] *((const byte*) CIA2_TIMER_B_CONTROL) ← (byte) 0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A -Simplifying expression containing zero CIA_TIMER_CONTROL_START in [151] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A -Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [152] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES +Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [147] *((const byte*) CIA2_TIMER_B_CONTROL) ← (byte) 0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +Simplifying expression containing zero CIA_TIMER_CONTROL_START in [149] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [150] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES Successful SSA optimization PassNSimplifyExpressionWithZero -Simplifying expression containing zero CIA_TIMER_CONTROL_START in [152] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_CONTINUOUS +Simplifying expression containing zero CIA_TIMER_CONTROL_START in [150] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_START|(const byte) CIA_TIMER_CONTROL_CONTINUOUS Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte*) heap_head#1 and assignment [1] (byte*) heap_head#1 ← (byte*) malloc::mem#0 Eliminating unused variable (byte) init_font_hex::idx#4 and assignment [67] (byte) init_font_hex::idx#4 ← ++ (byte) init_font_hex::idx#3 @@ -2176,13 +2162,13 @@ Inlining constant with var siblings (const word*) bsearch16u::items#1 Inlining constant with var siblings (const word) init_squares::sqr#0 Inlining constant with var siblings (const byte) init_squares::i#0 Inlining constant with var siblings (const word*) init_squares::squares#0 +Inlining constant with var siblings (const byte*) init_font_hex::proto_hi#0 Inlining constant with var siblings (const byte) init_font_hex::c#0 +Inlining constant with var siblings (const byte*) init_font_hex::proto_lo#0 Inlining constant with var siblings (const byte) init_font_hex::c1#0 Inlining constant with var siblings (const byte) init_font_hex::idx#0 Inlining constant with var siblings (const byte) init_font_hex::i#0 Inlining constant with var siblings (const byte*) init_font_hex::charset#1 -Inlining constant with var siblings (const byte*) init_font_hex::proto_hi#0 -Inlining constant with var siblings (const byte*) init_font_hex::proto_lo#0 Inlining constant with var siblings (const byte) init_font_hex::idx#1 Inlining constant with var siblings (const byte*) print_word_at::at#0 Inlining constant with var siblings (const byte*) print_word_at::at#1 @@ -2249,7 +2235,6 @@ Added new block during phi lifting init_dist_screen::@23(between init_dist_scree Adding NOP phi() at start of @begin Adding NOP phi() at start of @4 Adding NOP phi() at start of @12 -Adding NOP phi() at start of @20 Adding NOP phi() at start of @48 Adding NOP phi() at start of @49 Adding NOP phi() at start of @end @@ -2273,63 +2258,62 @@ Adding NOP phi() at start of init_squares::@3 Adding NOP phi() at start of malloc Adding NOP phi() at start of init_font_hex CALL GRAPH -Calls in [] to main:5 -Calls in [main] to init_font_hex:9 clock_start:14 init_dist_screen:16 clock:18 print_dword_at:23 -Calls in [print_dword_at] to print_word_at:31 print_word_at:34 -Calls in [print_word_at] to print_byte_at:42 print_byte_at:47 -Calls in [print_byte_at] to print_char_at:56 print_char_at:62 -Calls in [init_dist_screen] to init_squares:71 sqr:81 sqr:101 sqrt:106 -Calls in [sqrt] to bsearch16u:122 -Calls in [init_squares] to malloc:162 +Calls in [] to main:4 +Calls in [main] to init_font_hex:8 clock_start:13 init_dist_screen:15 clock:17 print_dword_at:22 +Calls in [print_dword_at] to print_word_at:30 print_word_at:33 +Calls in [print_word_at] to print_byte_at:41 print_byte_at:46 +Calls in [print_byte_at] to print_char_at:55 print_char_at:61 +Calls in [init_dist_screen] to init_squares:70 sqr:80 sqr:100 sqrt:105 +Calls in [sqrt] to bsearch16u:121 +Calls in [init_squares] to malloc:161 Created 31 initial phi equivalence classes -Coalesced [30] print_word_at::w#4 ← print_word_at::w#0 -Coalesced [33] print_word_at::w#5 ← print_word_at::w#1 -Coalesced [40] print_byte_at::b#4 ← print_byte_at::b#0 -Coalesced [41] print_byte_at::at#4 ← print_byte_at::at#0 -Coalesced [45] print_byte_at::b#5 ← print_byte_at::b#1 -Coalesced [46] print_byte_at::at#5 ← print_byte_at::at#1 -Coalesced [54] print_char_at::ch#3 ← print_char_at::ch#0 -Coalesced [55] print_char_at::at#3 ← print_char_at::at#0 -Coalesced [60] print_char_at::ch#4 ← print_char_at::ch#1 -Coalesced [61] print_char_at::at#4 ← print_char_at::at#1 -Coalesced [77] init_dist_screen::yd#2 ← init_dist_screen::$5 -Coalesced [80] sqr::val#4 ← sqr::val#0 -Coalesced [91] init_dist_screen::y#15 ← init_dist_screen::y#1 -Coalesced [92] init_dist_screen::screen_topline#15 ← init_dist_screen::screen_topline#1 -Coalesced [93] init_dist_screen::screen_bottomline#15 ← init_dist_screen::screen_bottomline#1 -Coalesced [97] init_dist_screen::xd#2 ← init_dist_screen::$14 -Coalesced [100] sqr::val#3 ← sqr::val#1 -Coalesced [115] init_dist_screen::x#9 ← init_dist_screen::x#1 -Coalesced [116] init_dist_screen::xb#9 ← init_dist_screen::xb#1 -Coalesced [118] init_dist_screen::xd#1 ← init_dist_screen::$16 -Coalesced [120] init_dist_screen::yd#1 ← init_dist_screen::$7 -Coalesced [134] bsearch16u::return#9 ← bsearch16u::$2 -Coalesced [136] bsearch16u::return#7 ← bsearch16u::return#2 -Coalesced [139] bsearch16u::return#8 ← bsearch16u::items#2 -Not coalescing [145] bsearch16u::return#6 ← bsearch16u::pivot#0 -Coalesced [149] bsearch16u::num#10 ← bsearch16u::num#1 -Coalesced [150] bsearch16u::items#11 ← bsearch16u::items#0 -Coalesced [153] bsearch16u::num#9 ← bsearch16u::num#0 -Coalesced [154] bsearch16u::items#10 ← bsearch16u::items#8 -Coalesced [155] bsearch16u::num#11 ← bsearch16u::num#3 -Coalesced (already) [156] bsearch16u::items#12 ← bsearch16u::items#2 -Coalesced [173] init_squares::sqr#3 ← init_squares::sqr#1 -Coalesced [174] init_squares::squares#3 ← init_squares::squares#1 -Coalesced [175] init_squares::i#3 ← init_squares::i#1 -Coalesced [186] init_font_hex::charset#9 ← init_font_hex::charset#5 -Coalesced [208] init_font_hex::charset#8 ← init_font_hex::charset#0 -Coalesced [209] init_font_hex::proto_hi#7 ← init_font_hex::proto_hi#1 -Coalesced [210] init_font_hex::c#7 ← init_font_hex::c#1 -Coalesced (already) [211] init_font_hex::charset#10 ← init_font_hex::charset#0 -Coalesced [212] init_font_hex::proto_lo#5 ← init_font_hex::proto_lo#1 -Coalesced [213] init_font_hex::c1#5 ← init_font_hex::c1#1 -Coalesced [214] init_font_hex::i#3 ← init_font_hex::i#1 -Coalesced [215] init_font_hex::idx#7 ← init_font_hex::idx#2 +Coalesced [29] print_word_at::w#4 ← print_word_at::w#0 +Coalesced [32] print_word_at::w#5 ← print_word_at::w#1 +Coalesced [39] print_byte_at::b#4 ← print_byte_at::b#0 +Coalesced [40] print_byte_at::at#4 ← print_byte_at::at#0 +Coalesced [44] print_byte_at::b#5 ← print_byte_at::b#1 +Coalesced [45] print_byte_at::at#5 ← print_byte_at::at#1 +Coalesced [53] print_char_at::ch#3 ← print_char_at::ch#0 +Coalesced [54] print_char_at::at#3 ← print_char_at::at#0 +Coalesced [59] print_char_at::ch#4 ← print_char_at::ch#1 +Coalesced [60] print_char_at::at#4 ← print_char_at::at#1 +Coalesced [76] init_dist_screen::yd#2 ← init_dist_screen::$5 +Coalesced [79] sqr::val#4 ← sqr::val#0 +Coalesced [90] init_dist_screen::y#15 ← init_dist_screen::y#1 +Coalesced [91] init_dist_screen::screen_topline#15 ← init_dist_screen::screen_topline#1 +Coalesced [92] init_dist_screen::screen_bottomline#15 ← init_dist_screen::screen_bottomline#1 +Coalesced [96] init_dist_screen::xd#2 ← init_dist_screen::$14 +Coalesced [99] sqr::val#3 ← sqr::val#1 +Coalesced [114] init_dist_screen::x#9 ← init_dist_screen::x#1 +Coalesced [115] init_dist_screen::xb#9 ← init_dist_screen::xb#1 +Coalesced [117] init_dist_screen::xd#1 ← init_dist_screen::$16 +Coalesced [119] init_dist_screen::yd#1 ← init_dist_screen::$7 +Coalesced [133] bsearch16u::return#9 ← bsearch16u::$2 +Coalesced [135] bsearch16u::return#7 ← bsearch16u::return#2 +Coalesced [138] bsearch16u::return#8 ← bsearch16u::items#2 +Not coalescing [144] bsearch16u::return#6 ← bsearch16u::pivot#0 +Coalesced [148] bsearch16u::num#10 ← bsearch16u::num#1 +Coalesced [149] bsearch16u::items#11 ← bsearch16u::items#0 +Coalesced [152] bsearch16u::num#9 ← bsearch16u::num#0 +Coalesced [153] bsearch16u::items#10 ← bsearch16u::items#8 +Coalesced [154] bsearch16u::num#11 ← bsearch16u::num#3 +Coalesced (already) [155] bsearch16u::items#12 ← bsearch16u::items#2 +Coalesced [172] init_squares::sqr#3 ← init_squares::sqr#1 +Coalesced [173] init_squares::squares#3 ← init_squares::squares#1 +Coalesced [174] init_squares::i#3 ← init_squares::i#1 +Coalesced [185] init_font_hex::charset#9 ← init_font_hex::charset#5 +Coalesced [207] init_font_hex::charset#8 ← init_font_hex::charset#0 +Coalesced [208] init_font_hex::proto_hi#7 ← init_font_hex::proto_hi#1 +Coalesced [209] init_font_hex::c#7 ← init_font_hex::c#1 +Coalesced (already) [210] init_font_hex::charset#10 ← init_font_hex::charset#0 +Coalesced [211] init_font_hex::proto_lo#5 ← init_font_hex::proto_lo#1 +Coalesced [212] init_font_hex::c1#5 ← init_font_hex::c1#1 +Coalesced [213] init_font_hex::i#3 ← init_font_hex::i#1 +Coalesced [214] init_font_hex::idx#7 ← init_font_hex::idx#2 Coalesced down to 27 phi equivalence classes Culled Empty Block (label) @4 Culled Empty Block (label) @12 -Culled Empty Block (label) @20 Culled Empty Block (label) @49 Culled Empty Block (label) main::@3 Culled Empty Block (label) main::toD0181_@return @@ -4210,9 +4194,9 @@ init_font_hex: { rts } // File Data - print_hextab: .text "0123456789abcdef" // Bit patterns for symbols 0-f (3x5 pixels) used in font hex FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 + print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -5593,9 +5577,9 @@ init_font_hex: { rts } // File Data - print_hextab: .text "0123456789abcdef" // Bit patterns for symbols 0-f (3x5 pixels) used in font hex FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 + print_hextab: .text "0123456789abcdef" ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 @@ -7012,7 +6996,7 @@ init_font_hex: { rts } // File Data - print_hextab: .text "0123456789abcdef" // Bit patterns for symbols 0-f (3x5 pixels) used in font hex FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 + print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/semi-struct-2.cfg b/src/test/ref/semi-struct-2.cfg index 070ce95c4..47875f154 100644 --- a/src/test/ref/semi-struct-2.cfg +++ b/src/test/ref/semi-struct-2.cfg @@ -52,8 +52,8 @@ main::@11: scope:[main] from main::@10 [25] call print_ln to:main::@12 main::@12: scope:[main] from main::@11 - [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 - [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 + [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 + [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [28] call print_ln to:main::@13 main::@13: scope:[main] from main::@12 @@ -61,12 +61,12 @@ main::@13: scope:[main] from main::@12 [30] call printEntry to:main::@14 main::@14: scope:[main] from main::@13 - [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 - [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 + [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 + [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 [33] call print_ln to:main::@15 main::@15: scope:[main] from main::@14 - [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 + [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 [35] call print_str to:main::@1 main::@1: scope:[main] from main::@15 main::@16 @@ -91,8 +91,8 @@ main::@18: scope:[main] from main::@17 [46] call print_ln to:main::@19 main::@19: scope:[main] from main::@18 - [47] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 - [48] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 + [47] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 + [48] (byte*~) print_char_cursor#228 ← (byte*) print_line_cursor#1 [49] call print_ln to:main::@20 main::@20: scope:[main] from main::@19 @@ -100,12 +100,12 @@ main::@20: scope:[main] from main::@19 [51] call printEntry to:main::@21 main::@21: scope:[main] from main::@20 - [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 - [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 + [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 + [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 [54] call print_ln to:main::@22 main::@22: scope:[main] from main::@21 - [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 + [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 [56] call print_str to:main::@3 main::@3: scope:[main] from main::@22 main::@23 @@ -175,7 +175,7 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from main::@10 main::@15 main::@17 main::@22 printEntry printEntry::@15 printEntry::@17 printEntry::@19 printEntry::@21 printEntry::@23 printEntry::@25 printEntry::@27 printEntry::@29 printEntry::@31 printEntry::@33 printEntry::@35 printEntry::@37 - [83] (byte*) print_char_cursor#164 ← phi( main::@10/(byte*) 1024 main::@15/(byte*~) print_char_cursor#208 main::@17/(byte*) 1024 main::@22/(byte*~) print_char_cursor#209 printEntry/(byte*~) print_char_cursor#210 printEntry::@15/(byte*~) print_char_cursor#211 printEntry::@17/(byte*~) print_char_cursor#212 printEntry::@19/(byte*~) print_char_cursor#213 printEntry::@21/(byte*~) print_char_cursor#214 printEntry::@23/(byte*~) print_char_cursor#215 printEntry::@25/(byte*~) print_char_cursor#216 printEntry::@27/(byte*~) print_char_cursor#217 printEntry::@29/(byte*~) print_char_cursor#218 printEntry::@31/(byte*~) print_char_cursor#219 printEntry::@33/(byte*~) print_char_cursor#220 printEntry::@35/(byte*~) print_char_cursor#221 printEntry::@37/(byte*~) print_char_cursor#222 ) + [83] (byte*) print_char_cursor#164 ← phi( main::@10/(byte*) 1024 main::@15/(byte*~) print_char_cursor#207 main::@17/(byte*) 1024 main::@22/(byte*~) print_char_cursor#208 printEntry/(byte*~) print_char_cursor#209 printEntry::@15/(byte*~) print_char_cursor#210 printEntry::@17/(byte*~) print_char_cursor#211 printEntry::@19/(byte*~) print_char_cursor#212 printEntry::@21/(byte*~) print_char_cursor#213 printEntry::@23/(byte*~) print_char_cursor#214 printEntry::@25/(byte*~) print_char_cursor#215 printEntry::@27/(byte*~) print_char_cursor#216 printEntry::@29/(byte*~) print_char_cursor#217 printEntry::@31/(byte*~) print_char_cursor#218 printEntry::@33/(byte*~) print_char_cursor#219 printEntry::@35/(byte*~) print_char_cursor#220 printEntry::@37/(byte*~) print_char_cursor#221 ) [83] (byte*) print_str::str#20 ← phi( main::@10/(const string) main::str main::@15/(const string) main::str1 main::@17/(const string) main::str2 main::@22/(const string) main::str1 printEntry/(const string) printEntry::str printEntry::@15/(const string) printEntry::str1 printEntry::@17/(const string) printEntry::str2 printEntry::@19/(const string) printEntry::str3 printEntry::@21/(const string) printEntry::str4 printEntry::@23/(const string) printEntry::str5 printEntry::@25/(const string) printEntry::str6 printEntry::@27/(const string) printEntry::str7 printEntry::@29/(const string) printEntry::str8 printEntry::@31/(const string) printEntry::str9 printEntry::@33/(const string) printEntry::str10 printEntry::@35/(const string) printEntry::str11 printEntry::@37/(const string) printEntry::str12 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -194,11 +194,11 @@ print_str::@2: scope:[print_str] from print_str::@1 (void()) print_ln() print_ln: scope:[print_ln] from main::@11 main::@12 main::@14 main::@18 main::@19 main::@21 printEntry::@14 printEntry::@16 printEntry::@18 printEntry::@20 printEntry::@22 printEntry::@24 printEntry::@26 printEntry::@28 printEntry::@30 printEntry::@32 printEntry::@34 printEntry::@36 printEntry::@38 - [90] (byte*) print_char_cursor#143 ← phi( main::@11/(byte*) print_char_cursor#142 main::@12/(byte*~) print_char_cursor#226 main::@14/(byte*~) print_char_cursor#227 main::@18/(byte*) print_char_cursor#142 main::@19/(byte*~) print_char_cursor#229 main::@21/(byte*~) print_char_cursor#230 printEntry::@14/(byte*) print_char_cursor#11 printEntry::@16/(byte*) print_char_cursor#11 printEntry::@18/(byte*) print_char_cursor#11 printEntry::@20/(byte*) print_char_cursor#11 printEntry::@22/(byte*) print_char_cursor#11 printEntry::@24/(byte*) print_char_cursor#11 printEntry::@26/(byte*) print_char_cursor#11 printEntry::@28/(byte*) print_char_cursor#11 printEntry::@30/(byte*) print_char_cursor#11 printEntry::@32/(byte*) print_char_cursor#11 printEntry::@34/(byte*) print_char_cursor#11 printEntry::@36/(byte*) print_char_cursor#11 printEntry::@38/(byte*) print_char_cursor#11 ) - [90] (byte*) print_line_cursor#63 ← phi( main::@11/(byte*) 1024 main::@12/(byte*~) print_line_cursor#155 main::@14/(byte*~) print_line_cursor#156 main::@18/(byte*) 1024 main::@19/(byte*~) print_line_cursor#157 main::@21/(byte*~) print_line_cursor#158 printEntry::@14/(byte*~) print_line_cursor#159 printEntry::@16/(byte*~) print_line_cursor#160 printEntry::@18/(byte*~) print_line_cursor#161 printEntry::@20/(byte*~) print_line_cursor#162 printEntry::@22/(byte*~) print_line_cursor#163 printEntry::@24/(byte*~) print_line_cursor#164 printEntry::@26/(byte*~) print_line_cursor#165 printEntry::@28/(byte*~) print_line_cursor#166 printEntry::@30/(byte*~) print_line_cursor#167 printEntry::@32/(byte*~) print_line_cursor#168 printEntry::@34/(byte*~) print_line_cursor#169 printEntry::@36/(byte*~) print_line_cursor#170 printEntry::@38/(byte*~) print_line_cursor#171 ) + [90] (byte*) print_char_cursor#143 ← phi( main::@11/(byte*) print_char_cursor#142 main::@12/(byte*~) print_char_cursor#225 main::@14/(byte*~) print_char_cursor#226 main::@18/(byte*) print_char_cursor#142 main::@19/(byte*~) print_char_cursor#228 main::@21/(byte*~) print_char_cursor#229 printEntry::@14/(byte*) print_char_cursor#11 printEntry::@16/(byte*) print_char_cursor#11 printEntry::@18/(byte*) print_char_cursor#11 printEntry::@20/(byte*) print_char_cursor#11 printEntry::@22/(byte*) print_char_cursor#11 printEntry::@24/(byte*) print_char_cursor#11 printEntry::@26/(byte*) print_char_cursor#11 printEntry::@28/(byte*) print_char_cursor#11 printEntry::@30/(byte*) print_char_cursor#11 printEntry::@32/(byte*) print_char_cursor#11 printEntry::@34/(byte*) print_char_cursor#11 printEntry::@36/(byte*) print_char_cursor#11 printEntry::@38/(byte*) print_char_cursor#11 ) + [90] (byte*) print_line_cursor#63 ← phi( main::@11/(byte*) 1024 main::@12/(byte*~) print_line_cursor#154 main::@14/(byte*~) print_line_cursor#155 main::@18/(byte*) 1024 main::@19/(byte*~) print_line_cursor#156 main::@21/(byte*~) print_line_cursor#157 printEntry::@14/(byte*~) print_line_cursor#158 printEntry::@16/(byte*~) print_line_cursor#159 printEntry::@18/(byte*~) print_line_cursor#160 printEntry::@20/(byte*~) print_line_cursor#161 printEntry::@22/(byte*~) print_line_cursor#162 printEntry::@24/(byte*~) print_line_cursor#163 printEntry::@26/(byte*~) print_line_cursor#164 printEntry::@28/(byte*~) print_line_cursor#165 printEntry::@30/(byte*~) print_line_cursor#166 printEntry::@32/(byte*~) print_line_cursor#167 printEntry::@34/(byte*~) print_line_cursor#168 printEntry::@36/(byte*~) print_line_cursor#169 printEntry::@38/(byte*~) print_line_cursor#170 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@2 - [91] (byte*) print_line_cursor#32 ← phi( print_ln/(byte*) print_line_cursor#63 print_ln::@2/(byte*~) print_line_cursor#173 ) + [91] (byte*) print_line_cursor#32 ← phi( print_ln/(byte*) print_line_cursor#63 print_ln::@2/(byte*~) print_line_cursor#172 ) [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 to:print_ln::@return @@ -206,13 +206,13 @@ print_ln::@return: scope:[print_ln] from print_ln::@1 [94] return to:@return print_ln::@2: scope:[print_ln] from print_ln::@1 - [95] (byte*~) print_line_cursor#173 ← (byte*) print_line_cursor#1 + [95] (byte*~) print_line_cursor#172 ← (byte*) print_line_cursor#1 to:print_ln::@1 (void()) printEntry((byte*) printEntry::entry) printEntry: scope:[printEntry] from main::@13 main::@20 [96] (byte*) printEntry::entry#10 ← phi( main::@13/(byte*) printEntry::entry#0 main::@20/(byte*) printEntry::entry#1 ) - [97] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 + [97] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 [98] call print_str to:printEntry::entryBufDisk1 printEntry::entryBufDisk1: scope:[printEntry] from printEntry @@ -223,11 +223,11 @@ printEntry::@1: scope:[printEntry] from printEntry::entryBufDisk1 [101] call print_word to:printEntry::@14 printEntry::@14: scope:[printEntry] from printEntry::@1 - [102] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 + [102] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 [103] call print_ln to:printEntry::@15 printEntry::@15: scope:[printEntry] from printEntry::@14 - [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 + [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 [105] call print_str to:printEntry::entryBufEdit1 printEntry::entryBufEdit1: scope:[printEntry] from printEntry::@15 @@ -238,11 +238,11 @@ printEntry::@2: scope:[printEntry] from printEntry::entryBufEdit1 [108] call print_word to:printEntry::@16 printEntry::@16: scope:[printEntry] from printEntry::@2 - [109] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 + [109] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 [110] call print_ln to:printEntry::@17 printEntry::@17: scope:[printEntry] from printEntry::@16 - [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 + [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 [112] call print_str to:printEntry::entryTsLen1 printEntry::entryTsLen1: scope:[printEntry] from printEntry::@17 @@ -253,11 +253,11 @@ printEntry::@3: scope:[printEntry] from printEntry::entryTsLen1 [115] call print_word to:printEntry::@18 printEntry::@18: scope:[printEntry] from printEntry::@3 - [116] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 + [116] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 [117] call print_ln to:printEntry::@19 printEntry::@19: scope:[printEntry] from printEntry::@18 - [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 + [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 [119] call print_str to:printEntry::entryTsOrder1 printEntry::entryTsOrder1: scope:[printEntry] from printEntry::@19 @@ -268,11 +268,11 @@ printEntry::@4: scope:[printEntry] from printEntry::entryTsOrder1 [122] call print_word to:printEntry::@20 printEntry::@20: scope:[printEntry] from printEntry::@4 - [123] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 + [123] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 [124] call print_ln to:printEntry::@21 printEntry::@21: scope:[printEntry] from printEntry::@20 - [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 + [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [126] call print_str to:printEntry::entryTLastLink1 printEntry::entryTLastLink1: scope:[printEntry] from printEntry::@21 @@ -283,11 +283,11 @@ printEntry::@5: scope:[printEntry] from printEntry::entryTLastLink1 [129] call print_byte to:printEntry::@22 printEntry::@22: scope:[printEntry] from printEntry::@5 - [130] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 + [130] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 [131] call print_ln to:printEntry::@23 printEntry::@23: scope:[printEntry] from printEntry::@22 - [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 + [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 [133] call print_str to:printEntry::entrySLastLink1 printEntry::entrySLastLink1: scope:[printEntry] from printEntry::@23 @@ -298,11 +298,11 @@ printEntry::@6: scope:[printEntry] from printEntry::entrySLastLink1 [136] call print_byte to:printEntry::@24 printEntry::@24: scope:[printEntry] from printEntry::@6 - [137] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 + [137] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 [138] call print_ln to:printEntry::@25 printEntry::@25: scope:[printEntry] from printEntry::@24 - [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 + [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 [140] call print_str to:printEntry::entryBFlag1 printEntry::entryBFlag1: scope:[printEntry] from printEntry::@25 @@ -313,11 +313,11 @@ printEntry::@7: scope:[printEntry] from printEntry::entryBFlag1 [143] call print_byte to:printEntry::@26 printEntry::@26: scope:[printEntry] from printEntry::@7 - [144] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 + [144] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 [145] call print_ln to:printEntry::@27 printEntry::@27: scope:[printEntry] from printEntry::@26 - [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 + [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 [147] call print_str to:printEntry::entryBError1 printEntry::entryBError1: scope:[printEntry] from printEntry::@27 @@ -328,11 +328,11 @@ printEntry::@8: scope:[printEntry] from printEntry::entryBError1 [150] call print_byte to:printEntry::@28 printEntry::@28: scope:[printEntry] from printEntry::@8 - [151] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 + [151] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 [152] call print_ln to:printEntry::@29 printEntry::@29: scope:[printEntry] from printEntry::@28 - [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 + [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 [154] call print_str to:printEntry::entryUCross1 printEntry::entryUCross1: scope:[printEntry] from printEntry::@29 @@ -343,11 +343,11 @@ printEntry::@9: scope:[printEntry] from printEntry::entryUCross1 [157] call print_word to:printEntry::@30 printEntry::@30: scope:[printEntry] from printEntry::@9 - [158] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 + [158] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 [159] call print_ln to:printEntry::@31 printEntry::@31: scope:[printEntry] from printEntry::@30 - [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 + [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [161] call print_str to:printEntry::entryBAddrLo1 printEntry::entryBAddrLo1: scope:[printEntry] from printEntry::@31 @@ -358,11 +358,11 @@ printEntry::@10: scope:[printEntry] from printEntry::entryBAddrLo1 [164] call print_byte to:printEntry::@32 printEntry::@32: scope:[printEntry] from printEntry::@10 - [165] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 + [165] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 [166] call print_ln to:printEntry::@33 printEntry::@33: scope:[printEntry] from printEntry::@32 - [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 + [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 [168] call print_str to:printEntry::entryBAddrHi1 printEntry::entryBAddrHi1: scope:[printEntry] from printEntry::@33 @@ -373,11 +373,11 @@ printEntry::@11: scope:[printEntry] from printEntry::entryBAddrHi1 [171] call print_byte to:printEntry::@34 printEntry::@34: scope:[printEntry] from printEntry::@11 - [172] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 + [172] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 [173] call print_ln to:printEntry::@35 printEntry::@35: scope:[printEntry] from printEntry::@34 - [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 + [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [175] call print_str to:printEntry::entryTHi1 printEntry::entryTHi1: scope:[printEntry] from printEntry::@35 @@ -388,11 +388,11 @@ printEntry::@12: scope:[printEntry] from printEntry::entryTHi1 [178] call print_byte to:printEntry::@36 printEntry::@36: scope:[printEntry] from printEntry::@12 - [179] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 + [179] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 [180] call print_ln to:printEntry::@37 printEntry::@37: scope:[printEntry] from printEntry::@36 - [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 + [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 [182] call print_str to:printEntry::entryTLo1 printEntry::entryTLo1: scope:[printEntry] from printEntry::@37 @@ -403,7 +403,7 @@ printEntry::@13: scope:[printEntry] from printEntry::entryTLo1 [185] call print_byte to:printEntry::@38 printEntry::@38: scope:[printEntry] from printEntry::@13 - [186] (byte*~) print_line_cursor#171 ← (byte*) print_line_cursor#1 + [186] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 [187] call print_ln to:printEntry::@return printEntry::@return: scope:[printEntry] from printEntry::@38 diff --git a/src/test/ref/semi-struct-2.log b/src/test/ref/semi-struct-2.log index 066a3d946..636047570 100644 --- a/src/test/ref/semi-struct-2.log +++ b/src/test/ref/semi-struct-2.log @@ -95,6 +95,7 @@ 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) keyboard_matrix_read::@1 Culled Empty Block (label) @47 @@ -256,7 +257,7 @@ memset::@return: scope:[memset] from memset::@1 (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:@45 + to:@52 (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from main::@20 main::@25 main::@28 main::@33 printEntry printEntry::@16 printEntry::@19 printEntry::@22 printEntry::@25 printEntry::@28 printEntry::@31 printEntry::@34 printEntry::@37 printEntry::@40 printEntry::@43 printEntry::@46 printEntry::@49 @@ -393,13 +394,6 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#84 return to:@return -@45: scope:[] from @17 - (byte*) print_screen#37 ← phi( @17/(byte*) print_screen#0 ) - (byte*) print_char_cursor#182 ← phi( @17/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#100 ← phi( @17/(byte*) print_line_cursor#0 ) - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } - to:@52 (void()) keyboard_init() keyboard_init: scope:[keyboard_init] from main @@ -413,7 +407,7 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -439,7 +433,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 ) (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4 - (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) + (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3 to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2 @@ -447,10 +441,10 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#4 return to:@return -@52: scope:[] from @45 - (byte*) print_screen#36 ← phi( @45/(byte*) print_screen#37 ) - (byte*) print_char_cursor#181 ← phi( @45/(byte*) print_char_cursor#182 ) - (byte*) print_line_cursor#99 ← phi( @45/(byte*) print_line_cursor#100 ) +@52: scope:[] from @17 + (byte*) print_screen#36 ← phi( @17/(byte*) print_screen#0 ) + (byte*) print_char_cursor#181 ← phi( @17/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#99 ← phi( @17/(byte*) print_line_cursor#0 ) (word~) $0 ← ((word)) (const byte) MAX_FILES (word~) $1 ← (word~) $0 * (const byte) SIZEOF_ENTRY (byte[$1]) files ← { fill( $1, 0) } @@ -458,20 +452,20 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (void()) main() main: scope:[main] from @69 - (byte*) print_char_cursor#207 ← phi( @69/(byte*) print_char_cursor#163 ) - (byte*) print_line_cursor#154 ← phi( @69/(byte*) print_line_cursor#82 ) + (byte*) print_char_cursor#206 ← phi( @69/(byte*) print_char_cursor#163 ) + (byte*) print_line_cursor#153 ← phi( @69/(byte*) print_line_cursor#82 ) (byte*) print_screen#34 ← phi( @69/(byte*) print_screen#35 ) call keyboard_init to:main::@15 main::@15: scope:[main] from main - (byte*) print_char_cursor#206 ← phi( main/(byte*) print_char_cursor#207 ) - (byte*) print_line_cursor#153 ← phi( main/(byte*) print_line_cursor#154 ) + (byte*) print_char_cursor#205 ← phi( main/(byte*) print_char_cursor#206 ) + (byte*) print_line_cursor#152 ← phi( main/(byte*) print_line_cursor#153 ) (byte*) print_screen#33 ← phi( main/(byte*) print_screen#34 ) (byte) main::fileEntry1_idx#0 ← (number) 1 to:main::fileEntry1 main::fileEntry1: scope:[main] from main::@15 - (byte*) print_char_cursor#205 ← phi( main::@15/(byte*) print_char_cursor#206 ) - (byte*) print_line_cursor#152 ← phi( main::@15/(byte*) print_line_cursor#153 ) + (byte*) print_char_cursor#204 ← phi( main::@15/(byte*) print_char_cursor#205 ) + (byte*) print_line_cursor#151 ← phi( main::@15/(byte*) print_line_cursor#152 ) (byte*) print_screen#30 ← phi( main::@15/(byte*) print_screen#33 ) (byte) main::fileEntry1_idx#1 ← phi( main::@15/(byte) main::fileEntry1_idx#0 ) (byte) mul8u::a#1 ← (byte) main::fileEntry1_idx#1 @@ -480,8 +474,8 @@ main::fileEntry1: scope:[main] from main::@15 (word) mul8u::return#2 ← (word) mul8u::return#1 to:main::@16 main::@16: scope:[main] from main::fileEntry1 - (byte*) print_char_cursor#204 ← phi( main::fileEntry1/(byte*) print_char_cursor#205 ) - (byte*) print_line_cursor#151 ← phi( main::fileEntry1/(byte*) print_line_cursor#152 ) + (byte*) print_char_cursor#203 ← phi( main::fileEntry1/(byte*) print_char_cursor#204 ) + (byte*) print_line_cursor#150 ← phi( main::fileEntry1/(byte*) print_line_cursor#151 ) (byte*) print_screen#27 ← phi( main::fileEntry1/(byte*) print_screen#30 ) (word) mul8u::return#5 ← phi( main::fileEntry1/(word) mul8u::return#2 ) (word~) main::fileEntry1_$0 ← (word) mul8u::return#5 @@ -489,15 +483,15 @@ main::@16: scope:[main] from main::fileEntry1 (byte*) main::fileEntry1_return#0 ← (byte*~) main::fileEntry1_$1 to:main::fileEntry1_@return main::fileEntry1_@return: scope:[main] from main::@16 - (byte*) print_char_cursor#203 ← phi( main::@16/(byte*) print_char_cursor#204 ) - (byte*) print_line_cursor#150 ← phi( main::@16/(byte*) print_line_cursor#151 ) + (byte*) print_char_cursor#202 ← phi( main::@16/(byte*) print_char_cursor#203 ) + (byte*) print_line_cursor#149 ← phi( main::@16/(byte*) print_line_cursor#150 ) (byte*) print_screen#24 ← phi( main::@16/(byte*) print_screen#27 ) (byte*) main::fileEntry1_return#2 ← phi( main::@16/(byte*) main::fileEntry1_return#0 ) (byte*) main::fileEntry1_return#1 ← (byte*) main::fileEntry1_return#2 to:main::@13 main::@13: scope:[main] from main::fileEntry1_@return - (byte*) print_char_cursor#202 ← phi( main::fileEntry1_@return/(byte*) print_char_cursor#203 ) - (byte*) print_line_cursor#149 ← phi( main::fileEntry1_@return/(byte*) print_line_cursor#150 ) + (byte*) print_char_cursor#201 ← phi( main::fileEntry1_@return/(byte*) print_char_cursor#202 ) + (byte*) print_line_cursor#148 ← phi( main::fileEntry1_@return/(byte*) print_line_cursor#149 ) (byte*) print_screen#21 ← phi( main::fileEntry1_@return/(byte*) print_screen#24 ) (byte*) main::fileEntry1_return#3 ← phi( main::fileEntry1_@return/(byte*) main::fileEntry1_return#1 ) (byte*~) main::$1 ← (byte*) main::fileEntry1_return#3 @@ -505,8 +499,8 @@ main::@13: scope:[main] from main::fileEntry1_@return (byte) main::fileEntry2_idx#0 ← (number) 2 to:main::fileEntry2 main::fileEntry2: scope:[main] from main::@13 - (byte*) print_char_cursor#201 ← phi( main::@13/(byte*) print_char_cursor#202 ) - (byte*) print_line_cursor#147 ← phi( main::@13/(byte*) print_line_cursor#149 ) + (byte*) print_char_cursor#200 ← phi( main::@13/(byte*) print_char_cursor#201 ) + (byte*) print_line_cursor#146 ← phi( main::@13/(byte*) print_line_cursor#148 ) (byte*) print_screen#18 ← phi( main::@13/(byte*) print_screen#21 ) (byte*) main::entry1#7 ← phi( main::@13/(byte*) main::entry1#0 ) (byte) main::fileEntry2_idx#1 ← phi( main::@13/(byte) main::fileEntry2_idx#0 ) @@ -516,8 +510,8 @@ main::fileEntry2: scope:[main] from main::@13 (word) mul8u::return#3 ← (word) mul8u::return#1 to:main::@17 main::@17: scope:[main] from main::fileEntry2 - (byte*) print_char_cursor#200 ← phi( main::fileEntry2/(byte*) print_char_cursor#201 ) - (byte*) print_line_cursor#133 ← phi( main::fileEntry2/(byte*) print_line_cursor#147 ) + (byte*) print_char_cursor#199 ← phi( main::fileEntry2/(byte*) print_char_cursor#200 ) + (byte*) print_line_cursor#132 ← phi( main::fileEntry2/(byte*) print_line_cursor#146 ) (byte*) print_screen#15 ← phi( main::fileEntry2/(byte*) print_screen#18 ) (byte*) main::entry1#5 ← phi( main::fileEntry2/(byte*) main::entry1#7 ) (word) mul8u::return#6 ← phi( main::fileEntry2/(word) mul8u::return#3 ) @@ -526,16 +520,16 @@ main::@17: scope:[main] from main::fileEntry2 (byte*) main::fileEntry2_return#0 ← (byte*~) main::fileEntry2_$1 to:main::fileEntry2_@return main::fileEntry2_@return: scope:[main] from main::@17 - (byte*) print_char_cursor#199 ← phi( main::@17/(byte*) print_char_cursor#200 ) - (byte*) print_line_cursor#117 ← phi( main::@17/(byte*) print_line_cursor#133 ) + (byte*) print_char_cursor#198 ← phi( main::@17/(byte*) print_char_cursor#199 ) + (byte*) print_line_cursor#116 ← phi( main::@17/(byte*) print_line_cursor#132 ) (byte*) print_screen#12 ← phi( main::@17/(byte*) print_screen#15 ) (byte*) main::entry1#3 ← phi( main::@17/(byte*) main::entry1#5 ) (byte*) main::fileEntry2_return#2 ← phi( main::@17/(byte*) main::fileEntry2_return#0 ) (byte*) main::fileEntry2_return#1 ← (byte*) main::fileEntry2_return#2 to:main::@14 main::@14: scope:[main] from main::fileEntry2_@return - (byte*) print_char_cursor#183 ← phi( main::fileEntry2_@return/(byte*) print_char_cursor#199 ) - (byte*) print_line_cursor#101 ← phi( main::fileEntry2_@return/(byte*) print_line_cursor#117 ) + (byte*) print_char_cursor#182 ← phi( main::fileEntry2_@return/(byte*) print_char_cursor#198 ) + (byte*) print_line_cursor#100 ← phi( main::fileEntry2_@return/(byte*) print_line_cursor#116 ) (byte*) print_screen#9 ← phi( main::fileEntry2_@return/(byte*) print_screen#12 ) (byte*) main::entry1#1 ← phi( main::fileEntry2_@return/(byte*) main::entry1#3 ) (byte*) main::fileEntry2_return#3 ← phi( main::fileEntry2_@return/(byte*) main::fileEntry2_return#1 ) @@ -547,8 +541,8 @@ main::@14: scope:[main] from main::fileEntry2_@return to:main::@18 main::@18: scope:[main] from main::@14 (byte*) main::entry1#10 ← phi( main::@14/(byte*) main::entry1#1 ) - (byte*) print_char_cursor#165 ← phi( main::@14/(byte*) print_char_cursor#183 ) - (byte*) print_line_cursor#83 ← phi( main::@14/(byte*) print_line_cursor#101 ) + (byte*) print_char_cursor#165 ← phi( main::@14/(byte*) print_char_cursor#182 ) + (byte*) print_line_cursor#83 ← phi( main::@14/(byte*) print_line_cursor#100 ) (byte*) print_screen#6 ← phi( main::@14/(byte*) print_screen#9 ) (byte*) main::entry2#1 ← phi( main::@14/(byte*) main::entry2#0 ) (byte*) initEntry::entry#1 ← (byte*) main::entry2#1 @@ -625,15 +619,15 @@ main::@25: scope:[main] from main::@24 to:main::@26 main::@26: scope:[main] from main::@25 (byte*) main::entry2#9 ← phi( main::@25/(byte*) main::entry2#10 ) - (byte*) print_line_cursor#118 ← phi( main::@25/(byte*) print_line_cursor#9 ) + (byte*) print_line_cursor#117 ← phi( main::@25/(byte*) print_line_cursor#9 ) (byte*) print_screen#13 ← phi( main::@25/(byte*) print_screen#16 ) (byte*) print_char_cursor#91 ← phi( main::@25/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#91 to:main::@1 main::@1: scope:[main] from main::@26 main::@27 (byte*) main::entry2#8 ← phi( main::@26/(byte*) main::entry2#9 main::@27/(byte*) main::entry2#7 ) - (byte*) print_char_cursor#184 ← phi( main::@26/(byte*) print_char_cursor#21 main::@27/(byte*) print_char_cursor#166 ) - (byte*) print_line_cursor#102 ← phi( main::@26/(byte*) print_line_cursor#118 main::@27/(byte*) print_line_cursor#84 ) + (byte*) print_char_cursor#183 ← phi( main::@26/(byte*) print_char_cursor#21 main::@27/(byte*) print_char_cursor#166 ) + (byte*) print_line_cursor#101 ← phi( main::@26/(byte*) print_line_cursor#117 main::@27/(byte*) print_line_cursor#84 ) (byte*) print_screen#10 ← phi( main::@26/(byte*) print_screen#13 main::@27/(byte*) print_screen#7 ) (byte) keyboard_key_pressed::key#0 ← (const byte) KEY_SPACE call keyboard_key_pressed @@ -641,8 +635,8 @@ main::@1: scope:[main] from main::@26 main::@27 to:main::@27 main::@27: scope:[main] from main::@1 (byte*) main::entry2#7 ← phi( main::@1/(byte*) main::entry2#8 ) - (byte*) print_char_cursor#166 ← phi( main::@1/(byte*) print_char_cursor#184 ) - (byte*) print_line_cursor#84 ← phi( main::@1/(byte*) print_line_cursor#102 ) + (byte*) print_char_cursor#166 ← phi( main::@1/(byte*) print_char_cursor#183 ) + (byte*) print_line_cursor#84 ← phi( main::@1/(byte*) print_line_cursor#101 ) (byte*) print_screen#7 ← phi( main::@1/(byte*) print_screen#10 ) (byte) keyboard_key_pressed::return#5 ← phi( main::@1/(byte) keyboard_key_pressed::return#2 ) (byte~) main::$20 ← (byte) keyboard_key_pressed::return#5 @@ -711,22 +705,22 @@ main::@33: scope:[main] from main::@32 call print_str to:main::@34 main::@34: scope:[main] from main::@33 - (byte*) print_line_cursor#119 ← phi( main::@33/(byte*) print_line_cursor#14 ) + (byte*) print_line_cursor#118 ← phi( main::@33/(byte*) print_line_cursor#14 ) (byte*) print_screen#14 ← phi( main::@33/(byte*) print_screen#17 ) (byte*) print_char_cursor#98 ← phi( main::@33/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#98 to:main::@7 main::@7: scope:[main] from main::@34 main::@35 - (byte*) print_char_cursor#185 ← phi( main::@34/(byte*) print_char_cursor#28 main::@35/(byte*) print_char_cursor#167 ) - (byte*) print_line_cursor#103 ← phi( main::@34/(byte*) print_line_cursor#119 main::@35/(byte*) print_line_cursor#85 ) + (byte*) print_char_cursor#184 ← phi( main::@34/(byte*) print_char_cursor#28 main::@35/(byte*) print_char_cursor#167 ) + (byte*) print_line_cursor#102 ← phi( main::@34/(byte*) print_line_cursor#118 main::@35/(byte*) print_line_cursor#85 ) (byte*) print_screen#11 ← phi( main::@34/(byte*) print_screen#14 main::@35/(byte*) print_screen#8 ) (byte) keyboard_key_pressed::key#1 ← (const byte) KEY_SPACE call keyboard_key_pressed (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#1 to:main::@35 main::@35: scope:[main] from main::@7 - (byte*) print_char_cursor#167 ← phi( main::@7/(byte*) print_char_cursor#185 ) - (byte*) print_line_cursor#85 ← phi( main::@7/(byte*) print_line_cursor#103 ) + (byte*) print_char_cursor#167 ← phi( main::@7/(byte*) print_char_cursor#184 ) + (byte*) print_line_cursor#85 ← phi( main::@7/(byte*) print_line_cursor#102 ) (byte*) print_screen#8 ← phi( main::@7/(byte*) print_screen#11 ) (byte) keyboard_key_pressed::return#6 ← phi( main::@7/(byte) keyboard_key_pressed::return#3 ) (byte~) main::$22 ← (byte) keyboard_key_pressed::return#6 @@ -1059,14 +1053,14 @@ initEntry::@return: scope:[initEntry] from initEntry::@13 (void()) printEntry((byte*) printEntry::entry) printEntry: scope:[printEntry] from main::@23 main::@31 - (byte*) print_line_cursor#148 ← phi( main::@23/(byte*) print_line_cursor#7 main::@31/(byte*) print_line_cursor#12 ) + (byte*) print_line_cursor#147 ← phi( main::@23/(byte*) print_line_cursor#7 main::@31/(byte*) print_line_cursor#12 ) (byte*) printEntry::entry#15 ← phi( main::@23/(byte*) printEntry::entry#0 main::@31/(byte*) printEntry::entry#1 ) (byte*) print_char_cursor#149 ← phi( main::@23/(byte*) print_char_cursor#18 main::@31/(byte*) print_char_cursor#25 ) (byte*) print_str::str#5 ← (const string) printEntry::str call print_str to:printEntry::@14 printEntry::@14: scope:[printEntry] from printEntry - (byte*) print_line_cursor#134 ← phi( printEntry/(byte*) print_line_cursor#148 ) + (byte*) print_line_cursor#133 ← phi( printEntry/(byte*) print_line_cursor#147 ) (byte*) printEntry::entry#2 ← phi( printEntry/(byte*) printEntry::entry#15 ) (byte*) print_char_cursor#101 ← phi( printEntry/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#101 @@ -1074,8 +1068,8 @@ printEntry::@14: scope:[printEntry] from printEntry to:printEntry::entryBufDisk1 printEntry::entryBufDisk1: scope:[printEntry] from printEntry::@14 (byte*) printEntry::entry#64 ← phi( printEntry::@14/(byte*) printEntry::entry#2 ) - (byte*) print_line_cursor#120 ← phi( printEntry::@14/(byte*) print_line_cursor#134 ) - (byte*) print_char_cursor#186 ← phi( printEntry::@14/(byte*) print_char_cursor#31 ) + (byte*) print_line_cursor#119 ← phi( printEntry::@14/(byte*) print_line_cursor#133 ) + (byte*) print_char_cursor#185 ← phi( printEntry::@14/(byte*) print_char_cursor#31 ) (byte*) printEntry::entryBufDisk1_entry#1 ← phi( printEntry::@14/(byte*) printEntry::entryBufDisk1_entry#0 ) (byte*~) printEntry::entryBufDisk1_$0 ← (byte*) printEntry::entryBufDisk1_entry#1 + (number) 0 (byte**~) printEntry::entryBufDisk1_$1 ← ((byte**)) (byte*~) printEntry::entryBufDisk1_$0 @@ -1083,14 +1077,14 @@ printEntry::entryBufDisk1: scope:[printEntry] from printEntry::@14 to:printEntry::entryBufDisk1_@return printEntry::entryBufDisk1_@return: scope:[printEntry] from printEntry::entryBufDisk1 (byte*) printEntry::entry#52 ← phi( printEntry::entryBufDisk1/(byte*) printEntry::entry#64 ) - (byte*) print_line_cursor#104 ← phi( printEntry::entryBufDisk1/(byte*) print_line_cursor#120 ) - (byte*) print_char_cursor#168 ← phi( printEntry::entryBufDisk1/(byte*) print_char_cursor#186 ) + (byte*) print_line_cursor#103 ← phi( printEntry::entryBufDisk1/(byte*) print_line_cursor#119 ) + (byte*) print_char_cursor#168 ← phi( printEntry::entryBufDisk1/(byte*) print_char_cursor#185 ) (byte**) printEntry::entryBufDisk1_return#2 ← phi( printEntry::entryBufDisk1/(byte**) printEntry::entryBufDisk1_return#0 ) (byte**) printEntry::entryBufDisk1_return#1 ← (byte**) printEntry::entryBufDisk1_return#2 to:printEntry::@1 printEntry::@1: scope:[printEntry] from printEntry::entryBufDisk1_@return (byte*) printEntry::entry#40 ← phi( printEntry::entryBufDisk1_@return/(byte*) printEntry::entry#52 ) - (byte*) print_line_cursor#86 ← phi( printEntry::entryBufDisk1_@return/(byte*) print_line_cursor#104 ) + (byte*) print_line_cursor#86 ← phi( printEntry::entryBufDisk1_@return/(byte*) print_line_cursor#103 ) (byte*) print_char_cursor#150 ← phi( printEntry::entryBufDisk1_@return/(byte*) print_char_cursor#168 ) (byte**) printEntry::entryBufDisk1_return#3 ← phi( printEntry::entryBufDisk1_@return/(byte**) printEntry::entryBufDisk1_return#1 ) (byte**~) printEntry::$1 ← (byte**) printEntry::entryBufDisk1_return#3 @@ -1115,7 +1109,7 @@ printEntry::@16: scope:[printEntry] from printEntry::@15 call print_str to:printEntry::@17 printEntry::@17: scope:[printEntry] from printEntry::@16 - (byte*) print_line_cursor#135 ← phi( printEntry::@16/(byte*) print_line_cursor#17 ) + (byte*) print_line_cursor#134 ← phi( printEntry::@16/(byte*) print_line_cursor#17 ) (byte*) printEntry::entry#3 ← phi( printEntry::@16/(byte*) printEntry::entry#16 ) (byte*) print_char_cursor#104 ← phi( printEntry::@16/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#104 @@ -1123,8 +1117,8 @@ printEntry::@17: scope:[printEntry] from printEntry::@16 to:printEntry::entryBufEdit1 printEntry::entryBufEdit1: scope:[printEntry] from printEntry::@17 (byte*) printEntry::entry#65 ← phi( printEntry::@17/(byte*) printEntry::entry#3 ) - (byte*) print_line_cursor#121 ← phi( printEntry::@17/(byte*) print_line_cursor#135 ) - (byte*) print_char_cursor#187 ← phi( printEntry::@17/(byte*) print_char_cursor#34 ) + (byte*) print_line_cursor#120 ← phi( printEntry::@17/(byte*) print_line_cursor#134 ) + (byte*) print_char_cursor#186 ← phi( printEntry::@17/(byte*) print_char_cursor#34 ) (byte*) printEntry::entryBufEdit1_entry#1 ← phi( printEntry::@17/(byte*) printEntry::entryBufEdit1_entry#0 ) (byte*~) printEntry::entryBufEdit1_$0 ← (byte*) printEntry::entryBufEdit1_entry#1 + (number) 2 (byte**~) printEntry::entryBufEdit1_$1 ← ((byte**)) (byte*~) printEntry::entryBufEdit1_$0 @@ -1132,14 +1126,14 @@ printEntry::entryBufEdit1: scope:[printEntry] from printEntry::@17 to:printEntry::entryBufEdit1_@return printEntry::entryBufEdit1_@return: scope:[printEntry] from printEntry::entryBufEdit1 (byte*) printEntry::entry#53 ← phi( printEntry::entryBufEdit1/(byte*) printEntry::entry#65 ) - (byte*) print_line_cursor#105 ← phi( printEntry::entryBufEdit1/(byte*) print_line_cursor#121 ) - (byte*) print_char_cursor#169 ← phi( printEntry::entryBufEdit1/(byte*) print_char_cursor#187 ) + (byte*) print_line_cursor#104 ← phi( printEntry::entryBufEdit1/(byte*) print_line_cursor#120 ) + (byte*) print_char_cursor#169 ← phi( printEntry::entryBufEdit1/(byte*) print_char_cursor#186 ) (byte**) printEntry::entryBufEdit1_return#2 ← phi( printEntry::entryBufEdit1/(byte**) printEntry::entryBufEdit1_return#0 ) (byte**) printEntry::entryBufEdit1_return#1 ← (byte**) printEntry::entryBufEdit1_return#2 to:printEntry::@2 printEntry::@2: scope:[printEntry] from printEntry::entryBufEdit1_@return (byte*) printEntry::entry#41 ← phi( printEntry::entryBufEdit1_@return/(byte*) printEntry::entry#53 ) - (byte*) print_line_cursor#87 ← phi( printEntry::entryBufEdit1_@return/(byte*) print_line_cursor#105 ) + (byte*) print_line_cursor#87 ← phi( printEntry::entryBufEdit1_@return/(byte*) print_line_cursor#104 ) (byte*) print_char_cursor#151 ← phi( printEntry::entryBufEdit1_@return/(byte*) print_char_cursor#169 ) (byte**) printEntry::entryBufEdit1_return#3 ← phi( printEntry::entryBufEdit1_@return/(byte**) printEntry::entryBufEdit1_return#1 ) (byte**~) printEntry::$6 ← (byte**) printEntry::entryBufEdit1_return#3 @@ -1164,7 +1158,7 @@ printEntry::@19: scope:[printEntry] from printEntry::@18 call print_str to:printEntry::@20 printEntry::@20: scope:[printEntry] from printEntry::@19 - (byte*) print_line_cursor#136 ← phi( printEntry::@19/(byte*) print_line_cursor#18 ) + (byte*) print_line_cursor#135 ← phi( printEntry::@19/(byte*) print_line_cursor#18 ) (byte*) printEntry::entry#4 ← phi( printEntry::@19/(byte*) printEntry::entry#17 ) (byte*) print_char_cursor#107 ← phi( printEntry::@19/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#107 @@ -1172,8 +1166,8 @@ printEntry::@20: scope:[printEntry] from printEntry::@19 to:printEntry::entryTsLen1 printEntry::entryTsLen1: scope:[printEntry] from printEntry::@20 (byte*) printEntry::entry#66 ← phi( printEntry::@20/(byte*) printEntry::entry#4 ) - (byte*) print_line_cursor#122 ← phi( printEntry::@20/(byte*) print_line_cursor#136 ) - (byte*) print_char_cursor#188 ← phi( printEntry::@20/(byte*) print_char_cursor#37 ) + (byte*) print_line_cursor#121 ← phi( printEntry::@20/(byte*) print_line_cursor#135 ) + (byte*) print_char_cursor#187 ← phi( printEntry::@20/(byte*) print_char_cursor#37 ) (byte*) printEntry::entryTsLen1_entry#1 ← phi( printEntry::@20/(byte*) printEntry::entryTsLen1_entry#0 ) (byte*~) printEntry::entryTsLen1_$0 ← (byte*) printEntry::entryTsLen1_entry#1 + (number) 4 (word*~) printEntry::entryTsLen1_$1 ← ((word*)) (byte*~) printEntry::entryTsLen1_$0 @@ -1181,14 +1175,14 @@ printEntry::entryTsLen1: scope:[printEntry] from printEntry::@20 to:printEntry::entryTsLen1_@return printEntry::entryTsLen1_@return: scope:[printEntry] from printEntry::entryTsLen1 (byte*) printEntry::entry#54 ← phi( printEntry::entryTsLen1/(byte*) printEntry::entry#66 ) - (byte*) print_line_cursor#106 ← phi( printEntry::entryTsLen1/(byte*) print_line_cursor#122 ) - (byte*) print_char_cursor#170 ← phi( printEntry::entryTsLen1/(byte*) print_char_cursor#188 ) + (byte*) print_line_cursor#105 ← phi( printEntry::entryTsLen1/(byte*) print_line_cursor#121 ) + (byte*) print_char_cursor#170 ← phi( printEntry::entryTsLen1/(byte*) print_char_cursor#187 ) (word*) printEntry::entryTsLen1_return#2 ← phi( printEntry::entryTsLen1/(word*) printEntry::entryTsLen1_return#0 ) (word*) printEntry::entryTsLen1_return#1 ← (word*) printEntry::entryTsLen1_return#2 to:printEntry::@3 printEntry::@3: scope:[printEntry] from printEntry::entryTsLen1_@return (byte*) printEntry::entry#42 ← phi( printEntry::entryTsLen1_@return/(byte*) printEntry::entry#54 ) - (byte*) print_line_cursor#88 ← phi( printEntry::entryTsLen1_@return/(byte*) print_line_cursor#106 ) + (byte*) print_line_cursor#88 ← phi( printEntry::entryTsLen1_@return/(byte*) print_line_cursor#105 ) (byte*) print_char_cursor#152 ← phi( printEntry::entryTsLen1_@return/(byte*) print_char_cursor#170 ) (word*) printEntry::entryTsLen1_return#3 ← phi( printEntry::entryTsLen1_@return/(word*) printEntry::entryTsLen1_return#1 ) (word*~) printEntry::$11 ← (word*) printEntry::entryTsLen1_return#3 @@ -1212,7 +1206,7 @@ printEntry::@22: scope:[printEntry] from printEntry::@21 call print_str to:printEntry::@23 printEntry::@23: scope:[printEntry] from printEntry::@22 - (byte*) print_line_cursor#137 ← phi( printEntry::@22/(byte*) print_line_cursor#19 ) + (byte*) print_line_cursor#136 ← phi( printEntry::@22/(byte*) print_line_cursor#19 ) (byte*) printEntry::entry#5 ← phi( printEntry::@22/(byte*) printEntry::entry#18 ) (byte*) print_char_cursor#110 ← phi( printEntry::@22/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#110 @@ -1220,8 +1214,8 @@ printEntry::@23: scope:[printEntry] from printEntry::@22 to:printEntry::entryTsOrder1 printEntry::entryTsOrder1: scope:[printEntry] from printEntry::@23 (byte*) printEntry::entry#67 ← phi( printEntry::@23/(byte*) printEntry::entry#5 ) - (byte*) print_line_cursor#123 ← phi( printEntry::@23/(byte*) print_line_cursor#137 ) - (byte*) print_char_cursor#189 ← phi( printEntry::@23/(byte*) print_char_cursor#40 ) + (byte*) print_line_cursor#122 ← phi( printEntry::@23/(byte*) print_line_cursor#136 ) + (byte*) print_char_cursor#188 ← phi( printEntry::@23/(byte*) print_char_cursor#40 ) (byte*) printEntry::entryTsOrder1_entry#1 ← phi( printEntry::@23/(byte*) printEntry::entryTsOrder1_entry#0 ) (byte*~) printEntry::entryTsOrder1_$0 ← (byte*) printEntry::entryTsOrder1_entry#1 + (number) 6 (word**~) printEntry::entryTsOrder1_$1 ← ((word**)) (byte*~) printEntry::entryTsOrder1_$0 @@ -1229,14 +1223,14 @@ printEntry::entryTsOrder1: scope:[printEntry] from printEntry::@23 to:printEntry::entryTsOrder1_@return printEntry::entryTsOrder1_@return: scope:[printEntry] from printEntry::entryTsOrder1 (byte*) printEntry::entry#55 ← phi( printEntry::entryTsOrder1/(byte*) printEntry::entry#67 ) - (byte*) print_line_cursor#107 ← phi( printEntry::entryTsOrder1/(byte*) print_line_cursor#123 ) - (byte*) print_char_cursor#171 ← phi( printEntry::entryTsOrder1/(byte*) print_char_cursor#189 ) + (byte*) print_line_cursor#106 ← phi( printEntry::entryTsOrder1/(byte*) print_line_cursor#122 ) + (byte*) print_char_cursor#171 ← phi( printEntry::entryTsOrder1/(byte*) print_char_cursor#188 ) (word**) printEntry::entryTsOrder1_return#2 ← phi( printEntry::entryTsOrder1/(word**) printEntry::entryTsOrder1_return#0 ) (word**) printEntry::entryTsOrder1_return#1 ← (word**) printEntry::entryTsOrder1_return#2 to:printEntry::@4 printEntry::@4: scope:[printEntry] from printEntry::entryTsOrder1_@return (byte*) printEntry::entry#43 ← phi( printEntry::entryTsOrder1_@return/(byte*) printEntry::entry#55 ) - (byte*) print_line_cursor#89 ← phi( printEntry::entryTsOrder1_@return/(byte*) print_line_cursor#107 ) + (byte*) print_line_cursor#89 ← phi( printEntry::entryTsOrder1_@return/(byte*) print_line_cursor#106 ) (byte*) print_char_cursor#153 ← phi( printEntry::entryTsOrder1_@return/(byte*) print_char_cursor#171 ) (word**) printEntry::entryTsOrder1_return#3 ← phi( printEntry::entryTsOrder1_@return/(word**) printEntry::entryTsOrder1_return#1 ) (word**~) printEntry::$15 ← (word**) printEntry::entryTsOrder1_return#3 @@ -1261,7 +1255,7 @@ printEntry::@25: scope:[printEntry] from printEntry::@24 call print_str to:printEntry::@26 printEntry::@26: scope:[printEntry] from printEntry::@25 - (byte*) print_line_cursor#138 ← phi( printEntry::@25/(byte*) print_line_cursor#20 ) + (byte*) print_line_cursor#137 ← phi( printEntry::@25/(byte*) print_line_cursor#20 ) (byte*) printEntry::entry#6 ← phi( printEntry::@25/(byte*) printEntry::entry#19 ) (byte*) print_char_cursor#113 ← phi( printEntry::@25/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#113 @@ -1269,8 +1263,8 @@ printEntry::@26: scope:[printEntry] from printEntry::@25 to:printEntry::entryTLastLink1 printEntry::entryTLastLink1: scope:[printEntry] from printEntry::@26 (byte*) printEntry::entry#68 ← phi( printEntry::@26/(byte*) printEntry::entry#6 ) - (byte*) print_line_cursor#124 ← phi( printEntry::@26/(byte*) print_line_cursor#138 ) - (byte*) print_char_cursor#190 ← phi( printEntry::@26/(byte*) print_char_cursor#43 ) + (byte*) print_line_cursor#123 ← phi( printEntry::@26/(byte*) print_line_cursor#137 ) + (byte*) print_char_cursor#189 ← phi( printEntry::@26/(byte*) print_char_cursor#43 ) (byte*) printEntry::entryTLastLink1_entry#1 ← phi( printEntry::@26/(byte*) printEntry::entryTLastLink1_entry#0 ) (byte*~) printEntry::entryTLastLink1_$0 ← (byte*) printEntry::entryTLastLink1_entry#1 + (number) 8 (byte*~) printEntry::entryTLastLink1_$1 ← ((byte*)) (byte*~) printEntry::entryTLastLink1_$0 @@ -1278,14 +1272,14 @@ printEntry::entryTLastLink1: scope:[printEntry] from printEntry::@26 to:printEntry::entryTLastLink1_@return printEntry::entryTLastLink1_@return: scope:[printEntry] from printEntry::entryTLastLink1 (byte*) printEntry::entry#56 ← phi( printEntry::entryTLastLink1/(byte*) printEntry::entry#68 ) - (byte*) print_line_cursor#108 ← phi( printEntry::entryTLastLink1/(byte*) print_line_cursor#124 ) - (byte*) print_char_cursor#172 ← phi( printEntry::entryTLastLink1/(byte*) print_char_cursor#190 ) + (byte*) print_line_cursor#107 ← phi( printEntry::entryTLastLink1/(byte*) print_line_cursor#123 ) + (byte*) print_char_cursor#172 ← phi( printEntry::entryTLastLink1/(byte*) print_char_cursor#189 ) (byte*) printEntry::entryTLastLink1_return#2 ← phi( printEntry::entryTLastLink1/(byte*) printEntry::entryTLastLink1_return#0 ) (byte*) printEntry::entryTLastLink1_return#1 ← (byte*) printEntry::entryTLastLink1_return#2 to:printEntry::@5 printEntry::@5: scope:[printEntry] from printEntry::entryTLastLink1_@return (byte*) printEntry::entry#44 ← phi( printEntry::entryTLastLink1_@return/(byte*) printEntry::entry#56 ) - (byte*) print_line_cursor#90 ← phi( printEntry::entryTLastLink1_@return/(byte*) print_line_cursor#108 ) + (byte*) print_line_cursor#90 ← phi( printEntry::entryTLastLink1_@return/(byte*) print_line_cursor#107 ) (byte*) print_char_cursor#154 ← phi( printEntry::entryTLastLink1_@return/(byte*) print_char_cursor#172 ) (byte*) printEntry::entryTLastLink1_return#3 ← phi( printEntry::entryTLastLink1_@return/(byte*) printEntry::entryTLastLink1_return#1 ) (byte*~) printEntry::$20 ← (byte*) printEntry::entryTLastLink1_return#3 @@ -1309,7 +1303,7 @@ printEntry::@28: scope:[printEntry] from printEntry::@27 call print_str to:printEntry::@29 printEntry::@29: scope:[printEntry] from printEntry::@28 - (byte*) print_line_cursor#139 ← phi( printEntry::@28/(byte*) print_line_cursor#21 ) + (byte*) print_line_cursor#138 ← phi( printEntry::@28/(byte*) print_line_cursor#21 ) (byte*) printEntry::entry#7 ← phi( printEntry::@28/(byte*) printEntry::entry#20 ) (byte*) print_char_cursor#116 ← phi( printEntry::@28/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#116 @@ -1317,8 +1311,8 @@ printEntry::@29: scope:[printEntry] from printEntry::@28 to:printEntry::entrySLastLink1 printEntry::entrySLastLink1: scope:[printEntry] from printEntry::@29 (byte*) printEntry::entry#69 ← phi( printEntry::@29/(byte*) printEntry::entry#7 ) - (byte*) print_line_cursor#125 ← phi( printEntry::@29/(byte*) print_line_cursor#139 ) - (byte*) print_char_cursor#191 ← phi( printEntry::@29/(byte*) print_char_cursor#46 ) + (byte*) print_line_cursor#124 ← phi( printEntry::@29/(byte*) print_line_cursor#138 ) + (byte*) print_char_cursor#190 ← phi( printEntry::@29/(byte*) print_char_cursor#46 ) (byte*) printEntry::entrySLastLink1_entry#1 ← phi( printEntry::@29/(byte*) printEntry::entrySLastLink1_entry#0 ) (byte*~) printEntry::entrySLastLink1_$0 ← (byte*) printEntry::entrySLastLink1_entry#1 + (number) 9 (byte*~) printEntry::entrySLastLink1_$1 ← ((byte*)) (byte*~) printEntry::entrySLastLink1_$0 @@ -1326,14 +1320,14 @@ printEntry::entrySLastLink1: scope:[printEntry] from printEntry::@29 to:printEntry::entrySLastLink1_@return printEntry::entrySLastLink1_@return: scope:[printEntry] from printEntry::entrySLastLink1 (byte*) printEntry::entry#57 ← phi( printEntry::entrySLastLink1/(byte*) printEntry::entry#69 ) - (byte*) print_line_cursor#109 ← phi( printEntry::entrySLastLink1/(byte*) print_line_cursor#125 ) - (byte*) print_char_cursor#173 ← phi( printEntry::entrySLastLink1/(byte*) print_char_cursor#191 ) + (byte*) print_line_cursor#108 ← phi( printEntry::entrySLastLink1/(byte*) print_line_cursor#124 ) + (byte*) print_char_cursor#173 ← phi( printEntry::entrySLastLink1/(byte*) print_char_cursor#190 ) (byte*) printEntry::entrySLastLink1_return#2 ← phi( printEntry::entrySLastLink1/(byte*) printEntry::entrySLastLink1_return#0 ) (byte*) printEntry::entrySLastLink1_return#1 ← (byte*) printEntry::entrySLastLink1_return#2 to:printEntry::@6 printEntry::@6: scope:[printEntry] from printEntry::entrySLastLink1_@return (byte*) printEntry::entry#45 ← phi( printEntry::entrySLastLink1_@return/(byte*) printEntry::entry#57 ) - (byte*) print_line_cursor#91 ← phi( printEntry::entrySLastLink1_@return/(byte*) print_line_cursor#109 ) + (byte*) print_line_cursor#91 ← phi( printEntry::entrySLastLink1_@return/(byte*) print_line_cursor#108 ) (byte*) print_char_cursor#155 ← phi( printEntry::entrySLastLink1_@return/(byte*) print_char_cursor#173 ) (byte*) printEntry::entrySLastLink1_return#3 ← phi( printEntry::entrySLastLink1_@return/(byte*) printEntry::entrySLastLink1_return#1 ) (byte*~) printEntry::$24 ← (byte*) printEntry::entrySLastLink1_return#3 @@ -1357,7 +1351,7 @@ printEntry::@31: scope:[printEntry] from printEntry::@30 call print_str to:printEntry::@32 printEntry::@32: scope:[printEntry] from printEntry::@31 - (byte*) print_line_cursor#140 ← phi( printEntry::@31/(byte*) print_line_cursor#22 ) + (byte*) print_line_cursor#139 ← phi( printEntry::@31/(byte*) print_line_cursor#22 ) (byte*) printEntry::entry#8 ← phi( printEntry::@31/(byte*) printEntry::entry#21 ) (byte*) print_char_cursor#119 ← phi( printEntry::@31/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#119 @@ -1365,8 +1359,8 @@ printEntry::@32: scope:[printEntry] from printEntry::@31 to:printEntry::entryBFlag1 printEntry::entryBFlag1: scope:[printEntry] from printEntry::@32 (byte*) printEntry::entry#70 ← phi( printEntry::@32/(byte*) printEntry::entry#8 ) - (byte*) print_line_cursor#126 ← phi( printEntry::@32/(byte*) print_line_cursor#140 ) - (byte*) print_char_cursor#192 ← phi( printEntry::@32/(byte*) print_char_cursor#49 ) + (byte*) print_line_cursor#125 ← phi( printEntry::@32/(byte*) print_line_cursor#139 ) + (byte*) print_char_cursor#191 ← phi( printEntry::@32/(byte*) print_char_cursor#49 ) (byte*) printEntry::entryBFlag1_entry#1 ← phi( printEntry::@32/(byte*) printEntry::entryBFlag1_entry#0 ) (byte*~) printEntry::entryBFlag1_$0 ← (byte*) printEntry::entryBFlag1_entry#1 + (number) $a (byte*~) printEntry::entryBFlag1_$1 ← ((byte*)) (byte*~) printEntry::entryBFlag1_$0 @@ -1374,14 +1368,14 @@ printEntry::entryBFlag1: scope:[printEntry] from printEntry::@32 to:printEntry::entryBFlag1_@return printEntry::entryBFlag1_@return: scope:[printEntry] from printEntry::entryBFlag1 (byte*) printEntry::entry#58 ← phi( printEntry::entryBFlag1/(byte*) printEntry::entry#70 ) - (byte*) print_line_cursor#110 ← phi( printEntry::entryBFlag1/(byte*) print_line_cursor#126 ) - (byte*) print_char_cursor#174 ← phi( printEntry::entryBFlag1/(byte*) print_char_cursor#192 ) + (byte*) print_line_cursor#109 ← phi( printEntry::entryBFlag1/(byte*) print_line_cursor#125 ) + (byte*) print_char_cursor#174 ← phi( printEntry::entryBFlag1/(byte*) print_char_cursor#191 ) (byte*) printEntry::entryBFlag1_return#2 ← phi( printEntry::entryBFlag1/(byte*) printEntry::entryBFlag1_return#0 ) (byte*) printEntry::entryBFlag1_return#1 ← (byte*) printEntry::entryBFlag1_return#2 to:printEntry::@7 printEntry::@7: scope:[printEntry] from printEntry::entryBFlag1_@return (byte*) printEntry::entry#46 ← phi( printEntry::entryBFlag1_@return/(byte*) printEntry::entry#58 ) - (byte*) print_line_cursor#92 ← phi( printEntry::entryBFlag1_@return/(byte*) print_line_cursor#110 ) + (byte*) print_line_cursor#92 ← phi( printEntry::entryBFlag1_@return/(byte*) print_line_cursor#109 ) (byte*) print_char_cursor#156 ← phi( printEntry::entryBFlag1_@return/(byte*) print_char_cursor#174 ) (byte*) printEntry::entryBFlag1_return#3 ← phi( printEntry::entryBFlag1_@return/(byte*) printEntry::entryBFlag1_return#1 ) (byte*~) printEntry::$28 ← (byte*) printEntry::entryBFlag1_return#3 @@ -1405,7 +1399,7 @@ printEntry::@34: scope:[printEntry] from printEntry::@33 call print_str to:printEntry::@35 printEntry::@35: scope:[printEntry] from printEntry::@34 - (byte*) print_line_cursor#141 ← phi( printEntry::@34/(byte*) print_line_cursor#23 ) + (byte*) print_line_cursor#140 ← phi( printEntry::@34/(byte*) print_line_cursor#23 ) (byte*) printEntry::entry#9 ← phi( printEntry::@34/(byte*) printEntry::entry#22 ) (byte*) print_char_cursor#122 ← phi( printEntry::@34/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#122 @@ -1413,22 +1407,22 @@ printEntry::@35: scope:[printEntry] from printEntry::@34 to:printEntry::entryBError1 printEntry::entryBError1: scope:[printEntry] from printEntry::@35 (byte*) printEntry::entry#71 ← phi( printEntry::@35/(byte*) printEntry::entry#9 ) - (byte*) print_line_cursor#127 ← phi( printEntry::@35/(byte*) print_line_cursor#141 ) - (byte*) print_char_cursor#193 ← phi( printEntry::@35/(byte*) print_char_cursor#52 ) + (byte*) print_line_cursor#126 ← phi( printEntry::@35/(byte*) print_line_cursor#140 ) + (byte*) print_char_cursor#192 ← phi( printEntry::@35/(byte*) print_char_cursor#52 ) (byte*) printEntry::entryBError1_entry#1 ← phi( printEntry::@35/(byte*) printEntry::entryBError1_entry#0 ) (byte*~) printEntry::entryBError1_$0 ← (byte*) printEntry::entryBError1_entry#1 + (number) $b (byte*) printEntry::entryBError1_return#0 ← (byte*~) printEntry::entryBError1_$0 to:printEntry::entryBError1_@return printEntry::entryBError1_@return: scope:[printEntry] from printEntry::entryBError1 (byte*) printEntry::entry#59 ← phi( printEntry::entryBError1/(byte*) printEntry::entry#71 ) - (byte*) print_line_cursor#111 ← phi( printEntry::entryBError1/(byte*) print_line_cursor#127 ) - (byte*) print_char_cursor#175 ← phi( printEntry::entryBError1/(byte*) print_char_cursor#193 ) + (byte*) print_line_cursor#110 ← phi( printEntry::entryBError1/(byte*) print_line_cursor#126 ) + (byte*) print_char_cursor#175 ← phi( printEntry::entryBError1/(byte*) print_char_cursor#192 ) (byte*) printEntry::entryBError1_return#2 ← phi( printEntry::entryBError1/(byte*) printEntry::entryBError1_return#0 ) (byte*) printEntry::entryBError1_return#1 ← (byte*) printEntry::entryBError1_return#2 to:printEntry::@8 printEntry::@8: scope:[printEntry] from printEntry::entryBError1_@return (byte*) printEntry::entry#47 ← phi( printEntry::entryBError1_@return/(byte*) printEntry::entry#59 ) - (byte*) print_line_cursor#93 ← phi( printEntry::entryBError1_@return/(byte*) print_line_cursor#111 ) + (byte*) print_line_cursor#93 ← phi( printEntry::entryBError1_@return/(byte*) print_line_cursor#110 ) (byte*) print_char_cursor#157 ← phi( printEntry::entryBError1_@return/(byte*) print_char_cursor#175 ) (byte*) printEntry::entryBError1_return#3 ← phi( printEntry::entryBError1_@return/(byte*) printEntry::entryBError1_return#1 ) (byte*~) printEntry::$32 ← (byte*) printEntry::entryBError1_return#3 @@ -1452,7 +1446,7 @@ printEntry::@37: scope:[printEntry] from printEntry::@36 call print_str to:printEntry::@38 printEntry::@38: scope:[printEntry] from printEntry::@37 - (byte*) print_line_cursor#142 ← phi( printEntry::@37/(byte*) print_line_cursor#24 ) + (byte*) print_line_cursor#141 ← phi( printEntry::@37/(byte*) print_line_cursor#24 ) (byte*) printEntry::entry#10 ← phi( printEntry::@37/(byte*) printEntry::entry#23 ) (byte*) print_char_cursor#125 ← phi( printEntry::@37/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#125 @@ -1460,8 +1454,8 @@ printEntry::@38: scope:[printEntry] from printEntry::@37 to:printEntry::entryUCross1 printEntry::entryUCross1: scope:[printEntry] from printEntry::@38 (byte*) printEntry::entry#72 ← phi( printEntry::@38/(byte*) printEntry::entry#10 ) - (byte*) print_line_cursor#128 ← phi( printEntry::@38/(byte*) print_line_cursor#142 ) - (byte*) print_char_cursor#194 ← phi( printEntry::@38/(byte*) print_char_cursor#55 ) + (byte*) print_line_cursor#127 ← phi( printEntry::@38/(byte*) print_line_cursor#141 ) + (byte*) print_char_cursor#193 ← phi( printEntry::@38/(byte*) print_char_cursor#55 ) (byte*) printEntry::entryUCross1_entry#1 ← phi( printEntry::@38/(byte*) printEntry::entryUCross1_entry#0 ) (byte*~) printEntry::entryUCross1_$0 ← (byte*) printEntry::entryUCross1_entry#1 + (number) $c (word*~) printEntry::entryUCross1_$1 ← ((word*)) (byte*~) printEntry::entryUCross1_$0 @@ -1469,14 +1463,14 @@ printEntry::entryUCross1: scope:[printEntry] from printEntry::@38 to:printEntry::entryUCross1_@return printEntry::entryUCross1_@return: scope:[printEntry] from printEntry::entryUCross1 (byte*) printEntry::entry#60 ← phi( printEntry::entryUCross1/(byte*) printEntry::entry#72 ) - (byte*) print_line_cursor#112 ← phi( printEntry::entryUCross1/(byte*) print_line_cursor#128 ) - (byte*) print_char_cursor#176 ← phi( printEntry::entryUCross1/(byte*) print_char_cursor#194 ) + (byte*) print_line_cursor#111 ← phi( printEntry::entryUCross1/(byte*) print_line_cursor#127 ) + (byte*) print_char_cursor#176 ← phi( printEntry::entryUCross1/(byte*) print_char_cursor#193 ) (word*) printEntry::entryUCross1_return#2 ← phi( printEntry::entryUCross1/(word*) printEntry::entryUCross1_return#0 ) (word*) printEntry::entryUCross1_return#1 ← (word*) printEntry::entryUCross1_return#2 to:printEntry::@9 printEntry::@9: scope:[printEntry] from printEntry::entryUCross1_@return (byte*) printEntry::entry#48 ← phi( printEntry::entryUCross1_@return/(byte*) printEntry::entry#60 ) - (byte*) print_line_cursor#94 ← phi( printEntry::entryUCross1_@return/(byte*) print_line_cursor#112 ) + (byte*) print_line_cursor#94 ← phi( printEntry::entryUCross1_@return/(byte*) print_line_cursor#111 ) (byte*) print_char_cursor#158 ← phi( printEntry::entryUCross1_@return/(byte*) print_char_cursor#176 ) (word*) printEntry::entryUCross1_return#3 ← phi( printEntry::entryUCross1_@return/(word*) printEntry::entryUCross1_return#1 ) (word*~) printEntry::$36 ← (word*) printEntry::entryUCross1_return#3 @@ -1500,7 +1494,7 @@ printEntry::@40: scope:[printEntry] from printEntry::@39 call print_str to:printEntry::@41 printEntry::@41: scope:[printEntry] from printEntry::@40 - (byte*) print_line_cursor#143 ← phi( printEntry::@40/(byte*) print_line_cursor#25 ) + (byte*) print_line_cursor#142 ← phi( printEntry::@40/(byte*) print_line_cursor#25 ) (byte*) printEntry::entry#11 ← phi( printEntry::@40/(byte*) printEntry::entry#24 ) (byte*) print_char_cursor#128 ← phi( printEntry::@40/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#128 @@ -1508,8 +1502,8 @@ printEntry::@41: scope:[printEntry] from printEntry::@40 to:printEntry::entryBAddrLo1 printEntry::entryBAddrLo1: scope:[printEntry] from printEntry::@41 (byte*) printEntry::entry#73 ← phi( printEntry::@41/(byte*) printEntry::entry#11 ) - (byte*) print_line_cursor#129 ← phi( printEntry::@41/(byte*) print_line_cursor#143 ) - (byte*) print_char_cursor#195 ← phi( printEntry::@41/(byte*) print_char_cursor#58 ) + (byte*) print_line_cursor#128 ← phi( printEntry::@41/(byte*) print_line_cursor#142 ) + (byte*) print_char_cursor#194 ← phi( printEntry::@41/(byte*) print_char_cursor#58 ) (byte*) printEntry::entryBAddrLo1_entry#1 ← phi( printEntry::@41/(byte*) printEntry::entryBAddrLo1_entry#0 ) (byte*~) printEntry::entryBAddrLo1_$0 ← (byte*) printEntry::entryBAddrLo1_entry#1 + (number) $e (byte*~) printEntry::entryBAddrLo1_$1 ← ((byte*)) (byte*~) printEntry::entryBAddrLo1_$0 @@ -1517,14 +1511,14 @@ printEntry::entryBAddrLo1: scope:[printEntry] from printEntry::@41 to:printEntry::entryBAddrLo1_@return printEntry::entryBAddrLo1_@return: scope:[printEntry] from printEntry::entryBAddrLo1 (byte*) printEntry::entry#61 ← phi( printEntry::entryBAddrLo1/(byte*) printEntry::entry#73 ) - (byte*) print_line_cursor#113 ← phi( printEntry::entryBAddrLo1/(byte*) print_line_cursor#129 ) - (byte*) print_char_cursor#177 ← phi( printEntry::entryBAddrLo1/(byte*) print_char_cursor#195 ) + (byte*) print_line_cursor#112 ← phi( printEntry::entryBAddrLo1/(byte*) print_line_cursor#128 ) + (byte*) print_char_cursor#177 ← phi( printEntry::entryBAddrLo1/(byte*) print_char_cursor#194 ) (byte*) printEntry::entryBAddrLo1_return#2 ← phi( printEntry::entryBAddrLo1/(byte*) printEntry::entryBAddrLo1_return#0 ) (byte*) printEntry::entryBAddrLo1_return#1 ← (byte*) printEntry::entryBAddrLo1_return#2 to:printEntry::@10 printEntry::@10: scope:[printEntry] from printEntry::entryBAddrLo1_@return (byte*) printEntry::entry#49 ← phi( printEntry::entryBAddrLo1_@return/(byte*) printEntry::entry#61 ) - (byte*) print_line_cursor#95 ← phi( printEntry::entryBAddrLo1_@return/(byte*) print_line_cursor#113 ) + (byte*) print_line_cursor#95 ← phi( printEntry::entryBAddrLo1_@return/(byte*) print_line_cursor#112 ) (byte*) print_char_cursor#159 ← phi( printEntry::entryBAddrLo1_@return/(byte*) print_char_cursor#177 ) (byte*) printEntry::entryBAddrLo1_return#3 ← phi( printEntry::entryBAddrLo1_@return/(byte*) printEntry::entryBAddrLo1_return#1 ) (byte*~) printEntry::$40 ← (byte*) printEntry::entryBAddrLo1_return#3 @@ -1548,7 +1542,7 @@ printEntry::@43: scope:[printEntry] from printEntry::@42 call print_str to:printEntry::@44 printEntry::@44: scope:[printEntry] from printEntry::@43 - (byte*) print_line_cursor#144 ← phi( printEntry::@43/(byte*) print_line_cursor#26 ) + (byte*) print_line_cursor#143 ← phi( printEntry::@43/(byte*) print_line_cursor#26 ) (byte*) printEntry::entry#12 ← phi( printEntry::@43/(byte*) printEntry::entry#25 ) (byte*) print_char_cursor#131 ← phi( printEntry::@43/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#131 @@ -1556,8 +1550,8 @@ printEntry::@44: scope:[printEntry] from printEntry::@43 to:printEntry::entryBAddrHi1 printEntry::entryBAddrHi1: scope:[printEntry] from printEntry::@44 (byte*) printEntry::entry#74 ← phi( printEntry::@44/(byte*) printEntry::entry#12 ) - (byte*) print_line_cursor#130 ← phi( printEntry::@44/(byte*) print_line_cursor#144 ) - (byte*) print_char_cursor#196 ← phi( printEntry::@44/(byte*) print_char_cursor#61 ) + (byte*) print_line_cursor#129 ← phi( printEntry::@44/(byte*) print_line_cursor#143 ) + (byte*) print_char_cursor#195 ← phi( printEntry::@44/(byte*) print_char_cursor#61 ) (byte*) printEntry::entryBAddrHi1_entry#1 ← phi( printEntry::@44/(byte*) printEntry::entryBAddrHi1_entry#0 ) (byte*~) printEntry::entryBAddrHi1_$0 ← (byte*) printEntry::entryBAddrHi1_entry#1 + (number) $f (byte*~) printEntry::entryBAddrHi1_$1 ← ((byte*)) (byte*~) printEntry::entryBAddrHi1_$0 @@ -1565,14 +1559,14 @@ printEntry::entryBAddrHi1: scope:[printEntry] from printEntry::@44 to:printEntry::entryBAddrHi1_@return printEntry::entryBAddrHi1_@return: scope:[printEntry] from printEntry::entryBAddrHi1 (byte*) printEntry::entry#62 ← phi( printEntry::entryBAddrHi1/(byte*) printEntry::entry#74 ) - (byte*) print_line_cursor#114 ← phi( printEntry::entryBAddrHi1/(byte*) print_line_cursor#130 ) - (byte*) print_char_cursor#178 ← phi( printEntry::entryBAddrHi1/(byte*) print_char_cursor#196 ) + (byte*) print_line_cursor#113 ← phi( printEntry::entryBAddrHi1/(byte*) print_line_cursor#129 ) + (byte*) print_char_cursor#178 ← phi( printEntry::entryBAddrHi1/(byte*) print_char_cursor#195 ) (byte*) printEntry::entryBAddrHi1_return#2 ← phi( printEntry::entryBAddrHi1/(byte*) printEntry::entryBAddrHi1_return#0 ) (byte*) printEntry::entryBAddrHi1_return#1 ← (byte*) printEntry::entryBAddrHi1_return#2 to:printEntry::@11 printEntry::@11: scope:[printEntry] from printEntry::entryBAddrHi1_@return (byte*) printEntry::entry#50 ← phi( printEntry::entryBAddrHi1_@return/(byte*) printEntry::entry#62 ) - (byte*) print_line_cursor#96 ← phi( printEntry::entryBAddrHi1_@return/(byte*) print_line_cursor#114 ) + (byte*) print_line_cursor#96 ← phi( printEntry::entryBAddrHi1_@return/(byte*) print_line_cursor#113 ) (byte*) print_char_cursor#160 ← phi( printEntry::entryBAddrHi1_@return/(byte*) print_char_cursor#178 ) (byte*) printEntry::entryBAddrHi1_return#3 ← phi( printEntry::entryBAddrHi1_@return/(byte*) printEntry::entryBAddrHi1_return#1 ) (byte*~) printEntry::$44 ← (byte*) printEntry::entryBAddrHi1_return#3 @@ -1596,7 +1590,7 @@ printEntry::@46: scope:[printEntry] from printEntry::@45 call print_str to:printEntry::@47 printEntry::@47: scope:[printEntry] from printEntry::@46 - (byte*) print_line_cursor#145 ← phi( printEntry::@46/(byte*) print_line_cursor#27 ) + (byte*) print_line_cursor#144 ← phi( printEntry::@46/(byte*) print_line_cursor#27 ) (byte*) printEntry::entry#13 ← phi( printEntry::@46/(byte*) printEntry::entry#26 ) (byte*) print_char_cursor#134 ← phi( printEntry::@46/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#134 @@ -1604,8 +1598,8 @@ printEntry::@47: scope:[printEntry] from printEntry::@46 to:printEntry::entryTHi1 printEntry::entryTHi1: scope:[printEntry] from printEntry::@47 (byte*) printEntry::entry#75 ← phi( printEntry::@47/(byte*) printEntry::entry#13 ) - (byte*) print_line_cursor#131 ← phi( printEntry::@47/(byte*) print_line_cursor#145 ) - (byte*) print_char_cursor#197 ← phi( printEntry::@47/(byte*) print_char_cursor#64 ) + (byte*) print_line_cursor#130 ← phi( printEntry::@47/(byte*) print_line_cursor#144 ) + (byte*) print_char_cursor#196 ← phi( printEntry::@47/(byte*) print_char_cursor#64 ) (byte*) printEntry::entryTHi1_entry#1 ← phi( printEntry::@47/(byte*) printEntry::entryTHi1_entry#0 ) (byte*~) printEntry::entryTHi1_$0 ← (byte*) printEntry::entryTHi1_entry#1 + (number) $10 (byte*~) printEntry::entryTHi1_$1 ← ((byte*)) (byte*~) printEntry::entryTHi1_$0 @@ -1613,14 +1607,14 @@ printEntry::entryTHi1: scope:[printEntry] from printEntry::@47 to:printEntry::entryTHi1_@return printEntry::entryTHi1_@return: scope:[printEntry] from printEntry::entryTHi1 (byte*) printEntry::entry#63 ← phi( printEntry::entryTHi1/(byte*) printEntry::entry#75 ) - (byte*) print_line_cursor#115 ← phi( printEntry::entryTHi1/(byte*) print_line_cursor#131 ) - (byte*) print_char_cursor#179 ← phi( printEntry::entryTHi1/(byte*) print_char_cursor#197 ) + (byte*) print_line_cursor#114 ← phi( printEntry::entryTHi1/(byte*) print_line_cursor#130 ) + (byte*) print_char_cursor#179 ← phi( printEntry::entryTHi1/(byte*) print_char_cursor#196 ) (byte*) printEntry::entryTHi1_return#2 ← phi( printEntry::entryTHi1/(byte*) printEntry::entryTHi1_return#0 ) (byte*) printEntry::entryTHi1_return#1 ← (byte*) printEntry::entryTHi1_return#2 to:printEntry::@12 printEntry::@12: scope:[printEntry] from printEntry::entryTHi1_@return (byte*) printEntry::entry#51 ← phi( printEntry::entryTHi1_@return/(byte*) printEntry::entry#63 ) - (byte*) print_line_cursor#97 ← phi( printEntry::entryTHi1_@return/(byte*) print_line_cursor#115 ) + (byte*) print_line_cursor#97 ← phi( printEntry::entryTHi1_@return/(byte*) print_line_cursor#114 ) (byte*) print_char_cursor#161 ← phi( printEntry::entryTHi1_@return/(byte*) print_char_cursor#179 ) (byte*) printEntry::entryTHi1_return#3 ← phi( printEntry::entryTHi1_@return/(byte*) printEntry::entryTHi1_return#1 ) (byte*~) printEntry::$48 ← (byte*) printEntry::entryTHi1_return#3 @@ -1644,28 +1638,28 @@ printEntry::@49: scope:[printEntry] from printEntry::@48 call print_str to:printEntry::@50 printEntry::@50: scope:[printEntry] from printEntry::@49 - (byte*) print_line_cursor#146 ← phi( printEntry::@49/(byte*) print_line_cursor#28 ) + (byte*) print_line_cursor#145 ← phi( printEntry::@49/(byte*) print_line_cursor#28 ) (byte*) printEntry::entry#14 ← phi( printEntry::@49/(byte*) printEntry::entry#27 ) (byte*) print_char_cursor#137 ← phi( printEntry::@49/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#137 (byte*) printEntry::entryTLo1_entry#0 ← (byte*) printEntry::entry#14 to:printEntry::entryTLo1 printEntry::entryTLo1: scope:[printEntry] from printEntry::@50 - (byte*) print_line_cursor#132 ← phi( printEntry::@50/(byte*) print_line_cursor#146 ) - (byte*) print_char_cursor#198 ← phi( printEntry::@50/(byte*) print_char_cursor#67 ) + (byte*) print_line_cursor#131 ← phi( printEntry::@50/(byte*) print_line_cursor#145 ) + (byte*) print_char_cursor#197 ← phi( printEntry::@50/(byte*) print_char_cursor#67 ) (byte*) printEntry::entryTLo1_entry#1 ← phi( printEntry::@50/(byte*) printEntry::entryTLo1_entry#0 ) (byte*~) printEntry::entryTLo1_$0 ← (byte*) printEntry::entryTLo1_entry#1 + (number) $11 (byte*~) printEntry::entryTLo1_$1 ← ((byte*)) (byte*~) printEntry::entryTLo1_$0 (byte*) printEntry::entryTLo1_return#0 ← (byte*~) printEntry::entryTLo1_$1 to:printEntry::entryTLo1_@return printEntry::entryTLo1_@return: scope:[printEntry] from printEntry::entryTLo1 - (byte*) print_line_cursor#116 ← phi( printEntry::entryTLo1/(byte*) print_line_cursor#132 ) - (byte*) print_char_cursor#180 ← phi( printEntry::entryTLo1/(byte*) print_char_cursor#198 ) + (byte*) print_line_cursor#115 ← phi( printEntry::entryTLo1/(byte*) print_line_cursor#131 ) + (byte*) print_char_cursor#180 ← phi( printEntry::entryTLo1/(byte*) print_char_cursor#197 ) (byte*) printEntry::entryTLo1_return#2 ← phi( printEntry::entryTLo1/(byte*) printEntry::entryTLo1_return#0 ) (byte*) printEntry::entryTLo1_return#1 ← (byte*) printEntry::entryTLo1_return#2 to:printEntry::@13 printEntry::@13: scope:[printEntry] from printEntry::entryTLo1_@return - (byte*) print_line_cursor#98 ← phi( printEntry::entryTLo1_@return/(byte*) print_line_cursor#116 ) + (byte*) print_line_cursor#98 ← phi( printEntry::entryTLo1_@return/(byte*) print_line_cursor#115 ) (byte*) print_char_cursor#162 ← phi( printEntry::entryTLo1_@return/(byte*) print_char_cursor#180 ) (byte*) printEntry::entryTLo1_return#3 ← phi( printEntry::entryTLo1_@return/(byte*) printEntry::entryTLo1_return#1 ) (byte*~) printEntry::$52 ← (byte*) printEntry::entryTLo1_return#3 @@ -1709,7 +1703,6 @@ SYMBOL TABLE SSA (word~) $0 (word~) $1 (label) @17 -(label) @45 (label) @52 (label) @69 (label) @70 @@ -2032,7 +2025,7 @@ SYMBOL TABLE SSA (byte) keyboard_key_pressed::return#6 (byte) keyboard_key_pressed::rowidx (byte) keyboard_key_pressed::rowidx#0 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -2047,7 +2040,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() (byte*~) main::$1 (byte*~) main::$2 @@ -2696,7 +2689,6 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#204 (byte*) print_char_cursor#205 (byte*) print_char_cursor#206 -(byte*) print_char_cursor#207 (byte*) print_char_cursor#21 (byte*) print_char_cursor#22 (byte*) print_char_cursor#23 @@ -2850,7 +2842,6 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#151 (byte*) print_line_cursor#152 (byte*) print_line_cursor#153 -(byte*) print_line_cursor#154 (byte*) print_line_cursor#16 (byte*) print_line_cursor#17 (byte*) print_line_cursor#18 @@ -2981,7 +2972,6 @@ SYMBOL TABLE SSA (byte*) print_screen#34 (byte*) print_screen#35 (byte*) print_screen#36 -(byte*) print_screen#37 (byte*) print_screen#4 (byte*) print_screen#5 (byte*) print_screen#6 @@ -3108,9 +3098,6 @@ Adding number conversion cast (unumber) $f in (byte*~) printEntry::entryBAddrHi1 Adding number conversion cast (unumber) $10 in (byte*~) printEntry::entryTHi1_$0 ← (byte*) printEntry::entryTHi1_entry#1 + (number) $10 Adding number conversion cast (unumber) $11 in (byte*~) printEntry::entryTLo1_$0 ← (byte*) printEntry::entryTLo1_entry#1 + (number) $11 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 @@ -3158,19 +3145,6 @@ Simplifying constant pointer cast (byte*) 56320 Simplifying constant pointer cast (byte*) 56321 Simplifying constant pointer cast (byte*) 56322 Simplifying constant pointer cast (byte*) 56323 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast 0 -Simplifying constant integer cast $28 -Simplifying constant integer cast 4 -Simplifying constant integer cast $f -Simplifying constant integer cast $3e8 Simplifying constant integer cast $fe Simplifying constant integer cast $fd Simplifying constant integer cast $fb @@ -3187,6 +3161,19 @@ Simplifying constant integer cast $10 Simplifying constant integer cast $20 Simplifying constant integer cast $40 Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast $28 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Simplifying constant integer cast $3e8 Simplifying constant integer cast $ff Simplifying constant integer cast 0 Simplifying constant integer cast 7 @@ -3348,7 +3335,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2 Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 Alias (byte*) memset::end#1 = (byte*) memset::end#2 Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#100 (byte*) print_char_cursor#182 (byte*) print_screen#37 (byte*) print_line_cursor#99 (byte*) print_char_cursor#181 (byte*) print_screen#36 (byte*) print_line_cursor#82 (byte*) print_char_cursor#163 (byte*) print_screen#35 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#99 (byte*) print_char_cursor#181 (byte*) print_screen#36 (byte*) print_line_cursor#82 (byte*) print_char_cursor#163 (byte*) print_screen#35 Alias (byte*) print_str::str#18 = (byte*) print_str::str#19 Alias (byte*) print_char_cursor#142 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#2 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#33 (byte*) print_char_cursor#3 (byte*) print_line_cursor#34 (byte*) print_char_cursor#75 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 @@ -3368,8 +3355,8 @@ Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::return#1 Alias (byte*) print_screen#12 = (byte*) print_screen#33 (byte*) print_screen#34 (byte*) print_screen#30 (byte*) print_screen#27 (byte*) print_screen#24 (byte*) print_screen#21 (byte*) print_screen#18 (byte*) print_screen#15 (byte*) print_screen#9 (byte*) print_screen#6 (byte*) print_screen#3 (byte*) print_screen#31 (byte*) print_screen#28 (byte*) print_screen#25 (byte*) print_screen#22 (byte*) print_screen#19 (byte*) print_screen#16 (byte*) print_screen#13 -Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#153 (byte*) print_line_cursor#154 (byte*) print_line_cursor#152 (byte*) print_line_cursor#151 (byte*) print_line_cursor#150 (byte*) print_line_cursor#149 (byte*) print_line_cursor#147 (byte*) print_line_cursor#133 (byte*) print_line_cursor#117 (byte*) print_line_cursor#83 (byte*) print_line_cursor#64 -Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#206 (byte*) print_char_cursor#207 (byte*) print_char_cursor#205 (byte*) print_char_cursor#204 (byte*) print_char_cursor#203 (byte*) print_char_cursor#202 (byte*) print_char_cursor#201 (byte*) print_char_cursor#200 (byte*) print_char_cursor#199 (byte*) print_char_cursor#183 (byte*) print_char_cursor#165 +Alias (byte*) print_line_cursor#100 = (byte*) print_line_cursor#152 (byte*) print_line_cursor#153 (byte*) print_line_cursor#151 (byte*) print_line_cursor#150 (byte*) print_line_cursor#149 (byte*) print_line_cursor#148 (byte*) print_line_cursor#146 (byte*) print_line_cursor#132 (byte*) print_line_cursor#116 (byte*) print_line_cursor#83 (byte*) print_line_cursor#64 +Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#205 (byte*) print_char_cursor#206 (byte*) print_char_cursor#204 (byte*) print_char_cursor#203 (byte*) print_char_cursor#202 (byte*) print_char_cursor#201 (byte*) print_char_cursor#200 (byte*) print_char_cursor#199 (byte*) print_char_cursor#198 (byte*) print_char_cursor#182 (byte*) print_char_cursor#165 Alias (byte) main::fileEntry1_idx#0 = (byte) main::fileEntry1_idx#1 Alias (word) mul8u::return#2 = (word) mul8u::return#5 Alias (byte*) main::entry1#0 = (byte*) main::fileEntry1_return#0 (byte*~) main::fileEntry1_$1 (byte*) main::fileEntry1_return#2 (byte*) main::fileEntry1_return#1 (byte*) main::fileEntry1_return#3 (byte*~) main::$1 (byte*) main::entry1#7 (byte*) main::entry1#5 (byte*) main::entry1#3 (byte*) main::entry1#1 (byte*) main::entry1#10 (byte*) main::entry1#9 (byte*) main::entry1#8 (byte*) main::entry1#6 (byte*) main::entry1#4 (byte*) main::entry1#2 @@ -3385,13 +3372,13 @@ Alias (byte*) print_line_cursor#38 = (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#88 Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#89 Alias (byte*) print_line_cursor#39 = (byte*) print_line_cursor#8 -Alias (byte*) print_line_cursor#118 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#40 +Alias (byte*) print_line_cursor#117 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#40 Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#90 Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#91 Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#5 Alias (byte*) print_screen#10 = (byte*) print_screen#7 (byte*) print_screen#4 (byte*) print_screen#32 (byte*) print_screen#29 (byte*) print_screen#26 (byte*) print_screen#23 (byte*) print_screen#20 (byte*) print_screen#17 (byte*) print_screen#14 -Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#66 -Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#166 (byte*) print_char_cursor#184 +Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#66 +Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#166 (byte*) print_char_cursor#183 Alias (byte*) main::entry2#2 = (byte*) main::entry2#7 (byte*) main::entry2#8 (byte*) main::entry2#6 (byte*) main::entry2#5 (byte*) main::entry2#4 (byte*) main::entry2#3 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#41 (byte*) print_line_cursor#67 Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#92 @@ -3402,13 +3389,13 @@ Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#43 Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#95 Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#96 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#44 -Alias (byte*) print_line_cursor#119 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#45 +Alias (byte*) print_line_cursor#118 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#45 Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#97 Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#98 Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#6 Alias (byte*) print_screen#11 = (byte*) print_screen#8 (byte*) print_screen#5 -Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#85 (byte*) print_line_cursor#68 -Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#185 +Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#85 (byte*) print_line_cursor#68 +Alias (byte*) print_char_cursor#148 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#184 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#46 (byte*) print_line_cursor#47 (byte*) print_line_cursor#16 Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#99 (byte*) print_char_cursor#30 Alias (byte*) initEntry::entry#10 = (byte*) initEntry::entryBufDisk1_entry#0 (byte*) initEntry::entry#2 (byte*) initEntry::entryBufDisk1_entry#1 (byte*) initEntry::entry#27 (byte*) initEntry::entry#15 (byte*) initEntry::entry#3 (byte*) initEntry::entryBufEdit1_entry#0 (byte*) initEntry::entryBufEdit1_entry#1 (byte*) initEntry::entry#28 (byte*) initEntry::entry#16 (byte*) initEntry::entry#4 (byte*) initEntry::entryTsLen1_entry#0 (byte*) initEntry::entryTsLen1_entry#1 (byte*) initEntry::entry#29 (byte*) initEntry::entry#17 (byte*) initEntry::entry#5 (byte*) initEntry::entryTsOrder1_entry#0 (byte*) initEntry::entryTsOrder1_entry#1 (byte*) initEntry::entry#30 (byte*) initEntry::entry#18 (byte*) initEntry::entry#6 (byte*) initEntry::entryTLastLink1_entry#0 (byte*) initEntry::entryTLastLink1_entry#1 (byte*) initEntry::entry#31 (byte*) initEntry::entry#19 (byte*) initEntry::entry#7 (byte*) initEntry::entrySLastLink1_entry#0 (byte*) initEntry::entrySLastLink1_entry#1 (byte*) initEntry::entry#32 (byte*) initEntry::entry#20 (byte*) initEntry::entry#8 (byte*) initEntry::entryBFlag1_entry#0 (byte*) initEntry::entryBFlag1_entry#1 (byte*) initEntry::entry#33 (byte*) initEntry::entry#21 (byte*) initEntry::entry#9 (byte*) initEntry::entryBError1_entry#0 (byte*) initEntry::entryBError1_entry#1 (byte*) initEntry::entry#34 (byte*) initEntry::entry#22 (byte*) initEntry::entryUCross1_entry#0 (byte*) initEntry::entryUCross1_entry#1 (byte*) initEntry::entry#35 (byte*) initEntry::entry#23 (byte*) initEntry::entry#11 (byte*) initEntry::entryBAddrLo1_entry#0 (byte*) initEntry::entryBAddrLo1_entry#1 (byte*) initEntry::entry#36 (byte*) initEntry::entry#24 (byte*) initEntry::entry#12 (byte*) initEntry::entryBAddrHi1_entry#0 (byte*) initEntry::entryBAddrHi1_entry#1 (byte*) initEntry::entry#37 (byte*) initEntry::entry#25 (byte*) initEntry::entry#13 (byte*) initEntry::entryTHi1_entry#0 (byte*) initEntry::entryTHi1_entry#1 (byte*) initEntry::entry#38 (byte*) initEntry::entry#26 (byte*) initEntry::entry#14 (byte*) initEntry::entryTLo1_entry#0 (byte*) initEntry::entryTLo1_entry#1 @@ -3427,71 +3414,71 @@ Alias (byte*) initEntry::entryBAddrHi1_return#0 = (byte*~) initEntry::entryBAddr Alias (byte*) initEntry::entryTHi1_return#0 = (byte*~) initEntry::entryTHi1_$1 (byte*~) initEntry::entryTHi1_$0 (byte*) initEntry::entryTHi1_return#2 (byte*) initEntry::entryTHi1_return#1 (byte*) initEntry::entryTHi1_return#3 (byte*~) initEntry::$22 Alias (byte*) initEntry::entryTLo1_return#0 = (byte*~) initEntry::entryTLo1_$1 (byte*~) initEntry::entryTLo1_$0 (byte*) initEntry::entryTLo1_return#2 (byte*) initEntry::entryTLo1_return#1 (byte*) initEntry::entryTLo1_return#3 (byte*~) initEntry::$24 Alias (byte*) printEntry::entry#10 = (byte*) printEntry::entry#2 (byte*) printEntry::entry#15 (byte*) printEntry::entryBufDisk1_entry#0 (byte*) printEntry::entryBufDisk1_entry#1 (byte*) printEntry::entry#64 (byte*) printEntry::entry#52 (byte*) printEntry::entry#40 (byte*) printEntry::entry#28 (byte*) printEntry::entry#16 (byte*) printEntry::entry#3 (byte*) printEntry::entryBufEdit1_entry#0 (byte*) printEntry::entryBufEdit1_entry#1 (byte*) printEntry::entry#65 (byte*) printEntry::entry#53 (byte*) printEntry::entry#41 (byte*) printEntry::entry#29 (byte*) printEntry::entry#17 (byte*) printEntry::entry#4 (byte*) printEntry::entryTsLen1_entry#0 (byte*) printEntry::entryTsLen1_entry#1 (byte*) printEntry::entry#66 (byte*) printEntry::entry#54 (byte*) printEntry::entry#42 (byte*) printEntry::entry#30 (byte*) printEntry::entry#18 (byte*) printEntry::entry#5 (byte*) printEntry::entryTsOrder1_entry#0 (byte*) printEntry::entryTsOrder1_entry#1 (byte*) printEntry::entry#67 (byte*) printEntry::entry#55 (byte*) printEntry::entry#43 (byte*) printEntry::entry#31 (byte*) printEntry::entry#19 (byte*) printEntry::entry#6 (byte*) printEntry::entryTLastLink1_entry#0 (byte*) printEntry::entryTLastLink1_entry#1 (byte*) printEntry::entry#68 (byte*) printEntry::entry#56 (byte*) printEntry::entry#44 (byte*) printEntry::entry#32 (byte*) printEntry::entry#20 (byte*) printEntry::entry#7 (byte*) printEntry::entrySLastLink1_entry#0 (byte*) printEntry::entrySLastLink1_entry#1 (byte*) printEntry::entry#69 (byte*) printEntry::entry#57 (byte*) printEntry::entry#45 (byte*) printEntry::entry#33 (byte*) printEntry::entry#21 (byte*) printEntry::entry#8 (byte*) printEntry::entryBFlag1_entry#0 (byte*) printEntry::entryBFlag1_entry#1 (byte*) printEntry::entry#70 (byte*) printEntry::entry#58 (byte*) printEntry::entry#46 (byte*) printEntry::entry#34 (byte*) printEntry::entry#22 (byte*) printEntry::entry#9 (byte*) printEntry::entryBError1_entry#0 (byte*) printEntry::entryBError1_entry#1 (byte*) printEntry::entry#71 (byte*) printEntry::entry#59 (byte*) printEntry::entry#47 (byte*) printEntry::entry#35 (byte*) printEntry::entry#23 (byte*) printEntry::entryUCross1_entry#0 (byte*) printEntry::entryUCross1_entry#1 (byte*) printEntry::entry#72 (byte*) printEntry::entry#60 (byte*) printEntry::entry#48 (byte*) printEntry::entry#36 (byte*) printEntry::entry#24 (byte*) printEntry::entry#11 (byte*) printEntry::entryBAddrLo1_entry#0 (byte*) printEntry::entryBAddrLo1_entry#1 (byte*) printEntry::entry#73 (byte*) printEntry::entry#61 (byte*) printEntry::entry#49 (byte*) printEntry::entry#37 (byte*) printEntry::entry#25 (byte*) printEntry::entry#12 (byte*) printEntry::entryBAddrHi1_entry#0 (byte*) printEntry::entryBAddrHi1_entry#1 (byte*) printEntry::entry#74 (byte*) printEntry::entry#62 (byte*) printEntry::entry#50 (byte*) printEntry::entry#38 (byte*) printEntry::entry#26 (byte*) printEntry::entry#13 (byte*) printEntry::entryTHi1_entry#0 (byte*) printEntry::entryTHi1_entry#1 (byte*) printEntry::entry#75 (byte*) printEntry::entry#63 (byte*) printEntry::entry#51 (byte*) printEntry::entry#39 (byte*) printEntry::entry#27 (byte*) printEntry::entry#14 (byte*) printEntry::entryTLo1_entry#0 (byte*) printEntry::entryTLo1_entry#1 -Alias (byte*) print_line_cursor#104 = (byte*) print_line_cursor#134 (byte*) print_line_cursor#148 (byte*) print_line_cursor#120 (byte*) print_line_cursor#86 (byte*) print_line_cursor#69 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#186 (byte*) print_char_cursor#168 (byte*) print_char_cursor#150 +Alias (byte*) print_line_cursor#103 = (byte*) print_line_cursor#133 (byte*) print_line_cursor#147 (byte*) print_line_cursor#119 (byte*) print_line_cursor#86 (byte*) print_line_cursor#69 +Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#185 (byte*) print_char_cursor#168 (byte*) print_char_cursor#150 Alias (byte**) printEntry::entryBufDisk1_return#0 = (byte**~) printEntry::entryBufDisk1_$1 (byte**) printEntry::entryBufDisk1_return#2 (byte**) printEntry::entryBufDisk1_return#1 (byte**) printEntry::entryBufDisk1_return#3 (byte**~) printEntry::$1 Alias (word) print_word::w#0 = (word~) printEntry::$2 Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#32 -Alias (byte*) print_line_cursor#105 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#48 (byte*) print_line_cursor#135 (byte*) print_line_cursor#121 (byte*) print_line_cursor#87 (byte*) print_line_cursor#70 +Alias (byte*) print_line_cursor#104 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#48 (byte*) print_line_cursor#134 (byte*) print_line_cursor#120 (byte*) print_line_cursor#87 (byte*) print_line_cursor#70 Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#33 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#187 (byte*) print_char_cursor#169 (byte*) print_char_cursor#151 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#186 (byte*) print_char_cursor#169 (byte*) print_char_cursor#151 Alias (byte**) printEntry::entryBufEdit1_return#0 = (byte**~) printEntry::entryBufEdit1_$1 (byte**) printEntry::entryBufEdit1_return#2 (byte**) printEntry::entryBufEdit1_return#1 (byte**) printEntry::entryBufEdit1_return#3 (byte**~) printEntry::$6 Alias (word) print_word::w#1 = (word~) printEntry::$7 Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#35 -Alias (byte*) print_line_cursor#106 = (byte*) print_line_cursor#18 (byte*) print_line_cursor#49 (byte*) print_line_cursor#136 (byte*) print_line_cursor#122 (byte*) print_line_cursor#88 (byte*) print_line_cursor#71 +Alias (byte*) print_line_cursor#105 = (byte*) print_line_cursor#18 (byte*) print_line_cursor#49 (byte*) print_line_cursor#135 (byte*) print_line_cursor#121 (byte*) print_line_cursor#88 (byte*) print_line_cursor#71 Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#188 (byte*) print_char_cursor#170 (byte*) print_char_cursor#152 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#37 (byte*) print_char_cursor#187 (byte*) print_char_cursor#170 (byte*) print_char_cursor#152 Alias (word*) printEntry::entryTsLen1_return#0 = (word*~) printEntry::entryTsLen1_$1 (word*) printEntry::entryTsLen1_return#2 (word*) printEntry::entryTsLen1_return#1 (word*) printEntry::entryTsLen1_return#3 (word*~) printEntry::$11 Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#38 -Alias (byte*) print_line_cursor#107 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#50 (byte*) print_line_cursor#137 (byte*) print_line_cursor#123 (byte*) print_line_cursor#89 (byte*) print_line_cursor#72 +Alias (byte*) print_line_cursor#106 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#50 (byte*) print_line_cursor#136 (byte*) print_line_cursor#122 (byte*) print_line_cursor#89 (byte*) print_line_cursor#72 Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#189 (byte*) print_char_cursor#171 (byte*) print_char_cursor#153 +Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#188 (byte*) print_char_cursor#171 (byte*) print_char_cursor#153 Alias (word**) printEntry::entryTsOrder1_return#0 = (word**~) printEntry::entryTsOrder1_$1 (word**) printEntry::entryTsOrder1_return#2 (word**) printEntry::entryTsOrder1_return#1 (word**) printEntry::entryTsOrder1_return#3 (word**~) printEntry::$15 Alias (word) print_word::w#3 = (word~) printEntry::$16 Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#41 -Alias (byte*) print_line_cursor#108 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#51 (byte*) print_line_cursor#138 (byte*) print_line_cursor#124 (byte*) print_line_cursor#90 (byte*) print_line_cursor#73 +Alias (byte*) print_line_cursor#107 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#51 (byte*) print_line_cursor#137 (byte*) print_line_cursor#123 (byte*) print_line_cursor#90 (byte*) print_line_cursor#73 Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#43 (byte*) print_char_cursor#190 (byte*) print_char_cursor#172 (byte*) print_char_cursor#154 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#43 (byte*) print_char_cursor#189 (byte*) print_char_cursor#172 (byte*) print_char_cursor#154 Alias (byte*) printEntry::entryTLastLink1_return#0 = (byte*~) printEntry::entryTLastLink1_$1 (byte*~) printEntry::entryTLastLink1_$0 (byte*) printEntry::entryTLastLink1_return#2 (byte*) printEntry::entryTLastLink1_return#1 (byte*) printEntry::entryTLastLink1_return#3 (byte*~) printEntry::$20 Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#44 -Alias (byte*) print_line_cursor#109 = (byte*) print_line_cursor#21 (byte*) print_line_cursor#52 (byte*) print_line_cursor#139 (byte*) print_line_cursor#125 (byte*) print_line_cursor#91 (byte*) print_line_cursor#74 +Alias (byte*) print_line_cursor#108 = (byte*) print_line_cursor#21 (byte*) print_line_cursor#52 (byte*) print_line_cursor#138 (byte*) print_line_cursor#124 (byte*) print_line_cursor#91 (byte*) print_line_cursor#74 Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#191 (byte*) print_char_cursor#173 (byte*) print_char_cursor#155 +Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#190 (byte*) print_char_cursor#173 (byte*) print_char_cursor#155 Alias (byte*) printEntry::entrySLastLink1_return#0 = (byte*~) printEntry::entrySLastLink1_$1 (byte*~) printEntry::entrySLastLink1_$0 (byte*) printEntry::entrySLastLink1_return#2 (byte*) printEntry::entrySLastLink1_return#1 (byte*) printEntry::entrySLastLink1_return#3 (byte*~) printEntry::$24 Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#47 -Alias (byte*) print_line_cursor#110 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#53 (byte*) print_line_cursor#140 (byte*) print_line_cursor#126 (byte*) print_line_cursor#92 (byte*) print_line_cursor#75 +Alias (byte*) print_line_cursor#109 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#53 (byte*) print_line_cursor#139 (byte*) print_line_cursor#125 (byte*) print_line_cursor#92 (byte*) print_line_cursor#75 Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#48 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#192 (byte*) print_char_cursor#174 (byte*) print_char_cursor#156 +Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#191 (byte*) print_char_cursor#174 (byte*) print_char_cursor#156 Alias (byte*) printEntry::entryBFlag1_return#0 = (byte*~) printEntry::entryBFlag1_$1 (byte*~) printEntry::entryBFlag1_$0 (byte*) printEntry::entryBFlag1_return#2 (byte*) printEntry::entryBFlag1_return#1 (byte*) printEntry::entryBFlag1_return#3 (byte*~) printEntry::$28 Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#50 -Alias (byte*) print_line_cursor#111 = (byte*) print_line_cursor#23 (byte*) print_line_cursor#54 (byte*) print_line_cursor#141 (byte*) print_line_cursor#127 (byte*) print_line_cursor#93 (byte*) print_line_cursor#76 +Alias (byte*) print_line_cursor#110 = (byte*) print_line_cursor#23 (byte*) print_line_cursor#54 (byte*) print_line_cursor#140 (byte*) print_line_cursor#126 (byte*) print_line_cursor#93 (byte*) print_line_cursor#76 Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#52 (byte*) print_char_cursor#193 (byte*) print_char_cursor#175 (byte*) print_char_cursor#157 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#52 (byte*) print_char_cursor#192 (byte*) print_char_cursor#175 (byte*) print_char_cursor#157 Alias (byte*) printEntry::entryBError1_return#0 = (byte*~) printEntry::entryBError1_$0 (byte*) printEntry::entryBError1_return#2 (byte*) printEntry::entryBError1_return#1 (byte*) printEntry::entryBError1_return#3 (byte*~) printEntry::$32 Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#53 -Alias (byte*) print_line_cursor#112 = (byte*) print_line_cursor#24 (byte*) print_line_cursor#55 (byte*) print_line_cursor#142 (byte*) print_line_cursor#128 (byte*) print_line_cursor#94 (byte*) print_line_cursor#77 +Alias (byte*) print_line_cursor#111 = (byte*) print_line_cursor#24 (byte*) print_line_cursor#55 (byte*) print_line_cursor#141 (byte*) print_line_cursor#127 (byte*) print_line_cursor#94 (byte*) print_line_cursor#77 Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#194 (byte*) print_char_cursor#176 (byte*) print_char_cursor#158 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#193 (byte*) print_char_cursor#176 (byte*) print_char_cursor#158 Alias (word*) printEntry::entryUCross1_return#0 = (word*~) printEntry::entryUCross1_$1 (word*) printEntry::entryUCross1_return#2 (word*) printEntry::entryUCross1_return#1 (word*) printEntry::entryUCross1_return#3 (word*~) printEntry::$36 Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#56 -Alias (byte*) print_line_cursor#113 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#56 (byte*) print_line_cursor#143 (byte*) print_line_cursor#129 (byte*) print_line_cursor#95 (byte*) print_line_cursor#78 +Alias (byte*) print_line_cursor#112 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#56 (byte*) print_line_cursor#142 (byte*) print_line_cursor#128 (byte*) print_line_cursor#95 (byte*) print_line_cursor#78 Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#195 (byte*) print_char_cursor#177 (byte*) print_char_cursor#159 +Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#194 (byte*) print_char_cursor#177 (byte*) print_char_cursor#159 Alias (byte*) printEntry::entryBAddrLo1_return#0 = (byte*~) printEntry::entryBAddrLo1_$1 (byte*~) printEntry::entryBAddrLo1_$0 (byte*) printEntry::entryBAddrLo1_return#2 (byte*) printEntry::entryBAddrLo1_return#1 (byte*) printEntry::entryBAddrLo1_return#3 (byte*~) printEntry::$40 Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#59 -Alias (byte*) print_line_cursor#114 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#57 (byte*) print_line_cursor#144 (byte*) print_line_cursor#130 (byte*) print_line_cursor#96 (byte*) print_line_cursor#79 +Alias (byte*) print_line_cursor#113 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#57 (byte*) print_line_cursor#143 (byte*) print_line_cursor#129 (byte*) print_line_cursor#96 (byte*) print_line_cursor#79 Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#196 (byte*) print_char_cursor#178 (byte*) print_char_cursor#160 +Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#195 (byte*) print_char_cursor#178 (byte*) print_char_cursor#160 Alias (byte*) printEntry::entryBAddrHi1_return#0 = (byte*~) printEntry::entryBAddrHi1_$1 (byte*~) printEntry::entryBAddrHi1_$0 (byte*) printEntry::entryBAddrHi1_return#2 (byte*) printEntry::entryBAddrHi1_return#1 (byte*) printEntry::entryBAddrHi1_return#3 (byte*~) printEntry::$44 Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#62 -Alias (byte*) print_line_cursor#115 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#58 (byte*) print_line_cursor#145 (byte*) print_line_cursor#131 (byte*) print_line_cursor#97 (byte*) print_line_cursor#80 +Alias (byte*) print_line_cursor#114 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#58 (byte*) print_line_cursor#144 (byte*) print_line_cursor#130 (byte*) print_line_cursor#97 (byte*) print_line_cursor#80 Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#63 -Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#197 (byte*) print_char_cursor#179 (byte*) print_char_cursor#161 +Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#196 (byte*) print_char_cursor#179 (byte*) print_char_cursor#161 Alias (byte*) printEntry::entryTHi1_return#0 = (byte*~) printEntry::entryTHi1_$1 (byte*~) printEntry::entryTHi1_$0 (byte*) printEntry::entryTHi1_return#2 (byte*) printEntry::entryTHi1_return#1 (byte*) printEntry::entryTHi1_return#3 (byte*~) printEntry::$48 Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#65 -Alias (byte*) print_line_cursor#116 = (byte*) print_line_cursor#28 (byte*) print_line_cursor#59 (byte*) print_line_cursor#146 (byte*) print_line_cursor#132 (byte*) print_line_cursor#98 (byte*) print_line_cursor#81 +Alias (byte*) print_line_cursor#115 = (byte*) print_line_cursor#28 (byte*) print_line_cursor#59 (byte*) print_line_cursor#145 (byte*) print_line_cursor#131 (byte*) print_line_cursor#98 (byte*) print_line_cursor#81 Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#66 -Alias (byte*) print_char_cursor#137 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#198 (byte*) print_char_cursor#180 (byte*) print_char_cursor#162 +Alias (byte*) print_char_cursor#137 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#197 (byte*) print_char_cursor#180 (byte*) print_char_cursor#162 Alias (byte*) printEntry::entryTLo1_return#0 = (byte*~) printEntry::entryTLo1_$1 (byte*~) printEntry::entryTLo1_$0 (byte*) printEntry::entryTLo1_return#2 (byte*) printEntry::entryTLo1_return#1 (byte*) printEntry::entryTLo1_return#3 (byte*~) printEntry::$52 Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#68 Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#30 @@ -3515,7 +3502,7 @@ Identical Phi Values (byte*) print_char_cursor#79 (byte*) print_char_cursor#11 Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#11 Identical Phi Values (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 Identical Phi Values (byte*) print_screen#12 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_line_cursor#100 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#36 (byte*) print_line_cursor#3 Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_line_cursor#3 @@ -3526,11 +3513,11 @@ Identical Phi Values (byte*) print_line_cursor#38 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#139 Identical Phi Values (byte*) print_line_cursor#39 (byte*) print_line_cursor#29 -Identical Phi Values (byte*) print_line_cursor#118 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#117 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_screen#10 (byte*) print_screen#12 -Identical Phi Values (byte*) print_line_cursor#102 (byte*) print_line_cursor#118 +Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#117 Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_char_cursor#21 Identical Phi Values (byte*) main::entry2#2 (byte*) main::entry2#0 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#3 @@ -3542,61 +3529,61 @@ Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#139 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#29 -Identical Phi Values (byte*) print_line_cursor#119 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#118 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_screen#11 (byte*) print_screen#10 -Identical Phi Values (byte*) print_line_cursor#103 (byte*) print_line_cursor#119 +Identical Phi Values (byte*) print_line_cursor#102 (byte*) print_line_cursor#118 Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#28 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#3 Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_line_cursor#3 Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#6 -Identical Phi Values (byte*) print_line_cursor#105 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#104 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#6 -Identical Phi Values (byte*) print_line_cursor#106 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#105 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#6 -Identical Phi Values (byte*) print_line_cursor#107 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#106 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#6 -Identical Phi Values (byte*) print_line_cursor#108 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#107 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#109 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#108 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#110 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#109 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#111 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#110 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#112 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#111 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#6 -Identical Phi Values (byte*) print_line_cursor#113 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#112 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#114 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#113 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#132 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#115 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#114 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_line_cursor#116 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#115 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#137 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#10 @@ -3609,7 +3596,7 @@ Identical Phi Values (void*) memset::return#0 (void*) memset::str#0 Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_char_cursor#142 Identical Phi Values (byte*) print_line_cursor#3 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_char_cursor#149 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_line_cursor#104 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_line_cursor#103 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) mul8u::$0 [5] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [10] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4 @@ -3617,20 +3604,15 @@ Simple Condition (bool~) memset::$1 [27] if((word) memset::num#0<=(byte) 0) goto Simple Condition (bool~) memset::$4 [37] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_str::$0 [50] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 Simple Condition (bool~) print_ln::$1 [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@1 -Simple Condition (bool~) main::$21 [227] if((byte~) main::$20==(byte) 0) goto main::@1 -Simple Condition (bool~) main::$23 [265] if((byte~) main::$22==(byte) 0) goto main::@7 +Simple Condition (bool~) main::$21 [224] if((byte~) main::$20==(byte) 0) goto main::@1 +Simple Condition (bool~) main::$23 [262] if((byte~) main::$22==(byte) 0) goto main::@7 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [147] (word~) $0 ← (word)(const byte) MAX_FILES +Constant right-side identified [144] (word~) $0 ← (word)(const byte) MAX_FILES Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const word) mul8u::res#0 = 0 Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const word) $0 = (word)MAX_FILES Constant (const byte) main::fileEntry1_idx#0 = 1 Constant (const byte) mul8u::b#0 = SIZEOF_ENTRY @@ -3669,37 +3651,37 @@ Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [27] if((const word) memset::num#0<=(byte) 0) goto memset::@1 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantStringConsolidation -Converting *(pointer+n) to pointer[n] [286] *((byte**) initEntry::entryBufDisk1_return#0) ← (byte*)(word~) initEntry::$1 -- *((byte**)initEntry::entry#10 + 0) -Converting *(pointer+n) to pointer[n] [297] *((byte**) initEntry::entryBufEdit1_return#0) ← (byte*)(word~) initEntry::$3 -- *((byte**)initEntry::entry#10 + 2) -Converting *(pointer+n) to pointer[n] [308] *((word*) initEntry::entryTsLen1_return#0) ← (word~) initEntry::$5 -- *((word*)initEntry::entry#10 + 4) -Converting *(pointer+n) to pointer[n] [319] *((word**) initEntry::entryTsOrder1_return#0) ← (word*)(word~) initEntry::$7 -- *((word**)initEntry::entry#10 + 6) -Converting *(pointer+n) to pointer[n] [330] *((byte*) initEntry::entryTLastLink1_return#0) ← (byte~) initEntry::$9 -- *(initEntry::entry#10 + 8) -Converting *(pointer+n) to pointer[n] [341] *((byte*) initEntry::entrySLastLink1_return#0) ← (byte~) initEntry::$11 -- *(initEntry::entry#10 + 9) -Converting *(pointer+n) to pointer[n] [352] *((byte*) initEntry::entryBFlag1_return#0) ← (byte~) initEntry::$13 -- *(initEntry::entry#10 + $a) -Converting *(pointer+n) to pointer[n] [362] *((byte*) initEntry::entryBError1_return#0) ← (byte~) initEntry::$15 -- *(initEntry::entry#10 + $b) -Converting *(pointer+n) to pointer[n] [373] *((word*) initEntry::entryUCross1_return#0) ← (word~) initEntry::$17 -- *((word*)initEntry::entry#10 + $c) -Converting *(pointer+n) to pointer[n] [384] *((byte*) initEntry::entryBAddrLo1_return#0) ← (byte~) initEntry::$19 -- *(initEntry::entry#10 + $e) -Converting *(pointer+n) to pointer[n] [395] *((byte*) initEntry::entryBAddrHi1_return#0) ← (byte~) initEntry::$21 -- *(initEntry::entry#10 + $f) -Converting *(pointer+n) to pointer[n] [406] *((byte*) initEntry::entryTHi1_return#0) ← (byte~) initEntry::$23 -- *(initEntry::entry#10 + $10) -Converting *(pointer+n) to pointer[n] [417] *((byte*) initEntry::entryTLo1_return#0) ← (byte~) initEntry::$25 -- *(initEntry::entry#10 + $11) -Converting *(pointer+n) to pointer[n] [433] (word) print_word::w#0 ← (word)*((byte**) printEntry::entryBufDisk1_return#0) -- *((byte**)printEntry::entry#10 + 0) -Converting *(pointer+n) to pointer[n] [455] (word) print_word::w#1 ← (word)*((byte**) printEntry::entryBufEdit1_return#0) -- *((byte**)printEntry::entry#10 + 2) -Converting *(pointer+n) to pointer[n] [477] (word) print_word::w#2 ← *((word*) printEntry::entryTsLen1_return#0) -- *((word*)printEntry::entry#10 + 4) -Converting *(pointer+n) to pointer[n] [498] (word) print_word::w#3 ← (word)*((word**) printEntry::entryTsOrder1_return#0) -- *((word**)printEntry::entry#10 + 6) -Converting *(pointer+n) to pointer[n] [520] (byte) print_byte::b#2 ← *((byte*) printEntry::entryTLastLink1_return#0) -- *(printEntry::entry#10 + 8) -Converting *(pointer+n) to pointer[n] [541] (byte) print_byte::b#3 ← *((byte*) printEntry::entrySLastLink1_return#0) -- *(printEntry::entry#10 + 9) -Converting *(pointer+n) to pointer[n] [562] (byte) print_byte::b#4 ← *((byte*) printEntry::entryBFlag1_return#0) -- *(printEntry::entry#10 + $a) -Converting *(pointer+n) to pointer[n] [582] (byte) print_byte::b#5 ← *((byte*) printEntry::entryBError1_return#0) -- *(printEntry::entry#10 + $b) -Converting *(pointer+n) to pointer[n] [603] (word) print_word::w#4 ← *((word*) printEntry::entryUCross1_return#0) -- *((word*)printEntry::entry#10 + $c) -Converting *(pointer+n) to pointer[n] [624] (byte) print_byte::b#6 ← *((byte*) printEntry::entryBAddrLo1_return#0) -- *(printEntry::entry#10 + $e) -Converting *(pointer+n) to pointer[n] [645] (byte) print_byte::b#7 ← *((byte*) printEntry::entryBAddrHi1_return#0) -- *(printEntry::entry#10 + $f) -Converting *(pointer+n) to pointer[n] [666] (byte) print_byte::b#8 ← *((byte*) printEntry::entryTHi1_return#0) -- *(printEntry::entry#10 + $10) -Converting *(pointer+n) to pointer[n] [687] (byte) print_byte::b#9 ← *((byte*) printEntry::entryTLo1_return#0) -- *(printEntry::entry#10 + $11) +Converting *(pointer+n) to pointer[n] [283] *((byte**) initEntry::entryBufDisk1_return#0) ← (byte*)(word~) initEntry::$1 -- *((byte**)initEntry::entry#10 + 0) +Converting *(pointer+n) to pointer[n] [294] *((byte**) initEntry::entryBufEdit1_return#0) ← (byte*)(word~) initEntry::$3 -- *((byte**)initEntry::entry#10 + 2) +Converting *(pointer+n) to pointer[n] [305] *((word*) initEntry::entryTsLen1_return#0) ← (word~) initEntry::$5 -- *((word*)initEntry::entry#10 + 4) +Converting *(pointer+n) to pointer[n] [316] *((word**) initEntry::entryTsOrder1_return#0) ← (word*)(word~) initEntry::$7 -- *((word**)initEntry::entry#10 + 6) +Converting *(pointer+n) to pointer[n] [327] *((byte*) initEntry::entryTLastLink1_return#0) ← (byte~) initEntry::$9 -- *(initEntry::entry#10 + 8) +Converting *(pointer+n) to pointer[n] [338] *((byte*) initEntry::entrySLastLink1_return#0) ← (byte~) initEntry::$11 -- *(initEntry::entry#10 + 9) +Converting *(pointer+n) to pointer[n] [349] *((byte*) initEntry::entryBFlag1_return#0) ← (byte~) initEntry::$13 -- *(initEntry::entry#10 + $a) +Converting *(pointer+n) to pointer[n] [359] *((byte*) initEntry::entryBError1_return#0) ← (byte~) initEntry::$15 -- *(initEntry::entry#10 + $b) +Converting *(pointer+n) to pointer[n] [370] *((word*) initEntry::entryUCross1_return#0) ← (word~) initEntry::$17 -- *((word*)initEntry::entry#10 + $c) +Converting *(pointer+n) to pointer[n] [381] *((byte*) initEntry::entryBAddrLo1_return#0) ← (byte~) initEntry::$19 -- *(initEntry::entry#10 + $e) +Converting *(pointer+n) to pointer[n] [392] *((byte*) initEntry::entryBAddrHi1_return#0) ← (byte~) initEntry::$21 -- *(initEntry::entry#10 + $f) +Converting *(pointer+n) to pointer[n] [403] *((byte*) initEntry::entryTHi1_return#0) ← (byte~) initEntry::$23 -- *(initEntry::entry#10 + $10) +Converting *(pointer+n) to pointer[n] [414] *((byte*) initEntry::entryTLo1_return#0) ← (byte~) initEntry::$25 -- *(initEntry::entry#10 + $11) +Converting *(pointer+n) to pointer[n] [430] (word) print_word::w#0 ← (word)*((byte**) printEntry::entryBufDisk1_return#0) -- *((byte**)printEntry::entry#10 + 0) +Converting *(pointer+n) to pointer[n] [452] (word) print_word::w#1 ← (word)*((byte**) printEntry::entryBufEdit1_return#0) -- *((byte**)printEntry::entry#10 + 2) +Converting *(pointer+n) to pointer[n] [474] (word) print_word::w#2 ← *((word*) printEntry::entryTsLen1_return#0) -- *((word*)printEntry::entry#10 + 4) +Converting *(pointer+n) to pointer[n] [495] (word) print_word::w#3 ← (word)*((word**) printEntry::entryTsOrder1_return#0) -- *((word**)printEntry::entry#10 + 6) +Converting *(pointer+n) to pointer[n] [517] (byte) print_byte::b#2 ← *((byte*) printEntry::entryTLastLink1_return#0) -- *(printEntry::entry#10 + 8) +Converting *(pointer+n) to pointer[n] [538] (byte) print_byte::b#3 ← *((byte*) printEntry::entrySLastLink1_return#0) -- *(printEntry::entry#10 + 9) +Converting *(pointer+n) to pointer[n] [559] (byte) print_byte::b#4 ← *((byte*) printEntry::entryBFlag1_return#0) -- *(printEntry::entry#10 + $a) +Converting *(pointer+n) to pointer[n] [579] (byte) print_byte::b#5 ← *((byte*) printEntry::entryBError1_return#0) -- *(printEntry::entry#10 + $b) +Converting *(pointer+n) to pointer[n] [600] (word) print_word::w#4 ← *((word*) printEntry::entryUCross1_return#0) -- *((word*)printEntry::entry#10 + $c) +Converting *(pointer+n) to pointer[n] [621] (byte) print_byte::b#6 ← *((byte*) printEntry::entryBAddrLo1_return#0) -- *(printEntry::entry#10 + $e) +Converting *(pointer+n) to pointer[n] [642] (byte) print_byte::b#7 ← *((byte*) printEntry::entryBAddrHi1_return#0) -- *(printEntry::entry#10 + $f) +Converting *(pointer+n) to pointer[n] [663] (byte) print_byte::b#8 ← *((byte*) printEntry::entryTHi1_return#0) -- *(printEntry::entry#10 + $10) +Converting *(pointer+n) to pointer[n] [684] (byte) print_byte::b#9 ← *((byte*) printEntry::entryTLo1_return#0) -- *(printEntry::entry#10 + $11) Successful SSA optimization Pass2InlineDerefIdx -Simplifying expression containing zero initEntry::entry#10 in [278] (byte*~) initEntry::entryBufDisk1_$0 ← (byte*) initEntry::entry#10 + (byte) 0 -Simplifying expression containing zero (byte**)initEntry::entry#10 in [286] *((byte**)(byte*) initEntry::entry#10 + (byte) 0) ← (byte*)(word~) initEntry::$1 -Simplifying expression containing zero printEntry::entry#10 in [426] (byte*~) printEntry::entryBufDisk1_$0 ← (byte*) printEntry::entry#10 + (byte) 0 -Simplifying expression containing zero (byte**)printEntry::entry#10 in [433] (word) print_word::w#0 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 0) +Simplifying expression containing zero initEntry::entry#10 in [275] (byte*~) initEntry::entryBufDisk1_$0 ← (byte*) initEntry::entry#10 + (byte) 0 +Simplifying expression containing zero (byte**)initEntry::entry#10 in [283] *((byte**)(byte*) initEntry::entry#10 + (byte) 0) ← (byte*)(word~) initEntry::$1 +Simplifying expression containing zero printEntry::entry#10 in [423] (byte*~) printEntry::entryBufDisk1_$0 ← (byte*) printEntry::entry#10 + (byte) 0 +Simplifying expression containing zero (byte**)printEntry::entry#10 in [430] (word) print_word::w#0 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 0) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte**) initEntry::entryBufDisk1_return#0 and assignment [106] (byte**) initEntry::entryBufDisk1_return#0 ← (byte**)(byte*~) initEntry::entryBufDisk1_$0 Eliminating unused variable (byte**) initEntry::entryBufEdit1_return#0 and assignment [110] (byte**) initEntry::entryBufEdit1_return#0 ← (byte**)(byte*~) initEntry::entryBufEdit1_$0 @@ -3831,7 +3813,6 @@ Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4) 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 @17 -Adding NOP phi() at start of @45 Adding NOP phi() at start of @52 Adding NOP phi() at start of @69 Adding NOP phi() at start of @70 @@ -3930,112 +3911,111 @@ Adding NOP phi() at start of initEntry::entryTLo1 Adding NOP phi() at start of initEntry::entryTLo1_@return Adding NOP phi() at start of mul8u::@3 CALL GRAPH -Calls in [] to main:5 -Calls in [main] to keyboard_init:9 mul8u:12 mul8u:19 initEntry:26 initEntry:29 print_cls:31 print_str:33 print_ln:35 print_ln:38 printEntry:41 print_ln:44 print_str:46 keyboard_key_pressed:49 print_cls:54 print_str:56 print_ln:58 print_ln:61 printEntry:64 print_ln:67 print_str:69 keyboard_key_pressed:72 print_cls:77 -Calls in [print_cls] to memset:81 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:94 -Calls in [printEntry] to print_str:123 print_word:128 print_ln:131 print_str:133 print_word:138 print_ln:141 print_str:143 print_word:149 print_ln:152 print_str:154 print_word:159 print_ln:162 print_str:164 print_byte:171 print_ln:174 print_str:176 print_byte:183 print_ln:186 print_str:188 print_byte:195 print_ln:198 print_str:200 print_byte:207 print_ln:210 print_str:212 print_word:218 print_ln:221 print_str:223 print_byte:230 print_ln:233 print_str:235 print_byte:242 print_ln:245 print_str:247 print_byte:254 print_ln:257 print_str:259 print_byte:266 print_ln:269 -Calls in [print_byte] to print_char:277 print_char:282 -Calls in [print_word] to print_byte:293 print_byte:297 +Calls in [] to main:4 +Calls in [main] to keyboard_init:8 mul8u:11 mul8u:18 initEntry:25 initEntry:28 print_cls:30 print_str:32 print_ln:34 print_ln:37 printEntry:40 print_ln:43 print_str:45 keyboard_key_pressed:48 print_cls:53 print_str:55 print_ln:57 print_ln:60 printEntry:63 print_ln:66 print_str:68 keyboard_key_pressed:71 print_cls:76 +Calls in [print_cls] to memset:80 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:93 +Calls in [printEntry] to print_str:122 print_word:127 print_ln:130 print_str:132 print_word:137 print_ln:140 print_str:142 print_word:148 print_ln:151 print_str:153 print_word:158 print_ln:161 print_str:163 print_byte:170 print_ln:173 print_str:175 print_byte:182 print_ln:185 print_str:187 print_byte:194 print_ln:197 print_str:199 print_byte:206 print_ln:209 print_str:211 print_word:217 print_ln:220 print_str:222 print_byte:229 print_ln:232 print_str:234 print_byte:241 print_ln:244 print_str:246 print_byte:253 print_ln:256 print_str:258 print_byte:265 print_ln:268 +Calls in [print_byte] to print_char:276 print_char:281 +Calls in [print_word] to print_byte:292 print_byte:296 Created 21 initial phi equivalence classes -Coalesced [25] initEntry::entry#39 ← initEntry::entry#0 -Coalesced [28] initEntry::entry#40 ← initEntry::entry#1 -Coalesced [34] print_char_cursor#225 ← print_char_cursor#142 -Not coalescing [36] print_line_cursor#155 ← print_line_cursor#1 -Not coalescing [37] print_char_cursor#226 ← print_line_cursor#1 -Coalesced [40] printEntry::entry#76 ← printEntry::entry#0 -Not coalescing [42] print_line_cursor#156 ← print_line_cursor#1 -Not coalescing [43] print_char_cursor#227 ← print_line_cursor#1 -Not coalescing [45] print_char_cursor#208 ← print_line_cursor#1 -Coalesced (already) [57] print_char_cursor#228 ← print_char_cursor#142 -Not coalescing [59] print_line_cursor#157 ← print_line_cursor#1 -Not coalescing [60] print_char_cursor#229 ← print_line_cursor#1 -Coalesced [63] printEntry::entry#77 ← printEntry::entry#1 -Not coalescing [65] print_line_cursor#158 ← print_line_cursor#1 -Not coalescing [66] print_char_cursor#230 ← print_line_cursor#1 -Not coalescing [68] print_char_cursor#209 ← print_line_cursor#1 -Coalesced [92] memset::dst#4 ← memset::dst#1 -Coalesced [103] print_str::str#21 ← print_str::str#20 -Coalesced [104] print_char_cursor#223 ← print_char_cursor#164 -Coalesced [111] print_str::str#22 ← print_str::str#0 -Coalesced [112] print_char_cursor#224 ← print_char_cursor#1 -Coalesced [114] print_line_cursor#172 ← print_line_cursor#63 -Not coalescing [120] print_line_cursor#173 ← print_line_cursor#1 -Not coalescing [122] print_char_cursor#210 ← print_line_cursor#1 -Not coalescing [129] print_line_cursor#159 ← print_line_cursor#1 -Coalesced [130] print_char_cursor#231 ← print_char_cursor#11 -Not coalescing [132] print_char_cursor#211 ← print_line_cursor#1 -Not coalescing [139] print_line_cursor#160 ← print_line_cursor#1 -Coalesced (already) [140] print_char_cursor#232 ← print_char_cursor#11 -Not coalescing [142] print_char_cursor#212 ← print_line_cursor#1 -Coalesced [148] print_word::w#9 ← print_word::w#2 -Not coalescing [150] print_line_cursor#161 ← print_line_cursor#1 -Coalesced (already) [151] print_char_cursor#233 ← print_char_cursor#11 -Not coalescing [153] print_char_cursor#213 ← print_line_cursor#1 -Not coalescing [160] print_line_cursor#162 ← print_line_cursor#1 -Coalesced (already) [161] print_char_cursor#234 ← print_char_cursor#11 -Not coalescing [163] print_char_cursor#214 ← print_line_cursor#1 -Coalesced [169] print_byte::b#16 ← print_byte::b#2 -Coalesced [170] print_char_cursor#248 ← print_char_cursor#142 -Not coalescing [172] print_line_cursor#163 ← print_line_cursor#1 -Coalesced (already) [173] print_char_cursor#235 ← print_char_cursor#11 -Not coalescing [175] print_char_cursor#215 ← print_line_cursor#1 -Coalesced [181] print_byte::b#17 ← print_byte::b#3 -Coalesced (already) [182] print_char_cursor#249 ← print_char_cursor#142 -Not coalescing [184] print_line_cursor#164 ← print_line_cursor#1 -Coalesced (already) [185] print_char_cursor#236 ← print_char_cursor#11 -Not coalescing [187] print_char_cursor#216 ← print_line_cursor#1 -Coalesced [193] print_byte::b#18 ← print_byte::b#4 -Coalesced (already) [194] print_char_cursor#250 ← print_char_cursor#142 -Not coalescing [196] print_line_cursor#165 ← print_line_cursor#1 -Coalesced (already) [197] print_char_cursor#237 ← print_char_cursor#11 -Not coalescing [199] print_char_cursor#217 ← print_line_cursor#1 -Coalesced [205] print_byte::b#19 ← print_byte::b#5 -Coalesced (already) [206] print_char_cursor#251 ← print_char_cursor#142 -Not coalescing [208] print_line_cursor#166 ← print_line_cursor#1 -Coalesced (already) [209] print_char_cursor#238 ← print_char_cursor#11 -Not coalescing [211] print_char_cursor#218 ← print_line_cursor#1 -Coalesced [217] print_word::w#11 ← print_word::w#4 -Not coalescing [219] print_line_cursor#167 ← print_line_cursor#1 -Coalesced (already) [220] print_char_cursor#239 ← print_char_cursor#11 -Not coalescing [222] print_char_cursor#219 ← print_line_cursor#1 -Coalesced [228] print_byte::b#12 ← print_byte::b#6 -Coalesced (already) [229] print_char_cursor#244 ← print_char_cursor#142 -Not coalescing [231] print_line_cursor#168 ← print_line_cursor#1 -Coalesced (already) [232] print_char_cursor#240 ← print_char_cursor#11 -Not coalescing [234] print_char_cursor#220 ← print_line_cursor#1 -Coalesced [240] print_byte::b#13 ← print_byte::b#7 -Coalesced (already) [241] print_char_cursor#245 ← print_char_cursor#142 -Not coalescing [243] print_line_cursor#169 ← print_line_cursor#1 -Coalesced (already) [244] print_char_cursor#241 ← print_char_cursor#11 -Not coalescing [246] print_char_cursor#221 ← print_line_cursor#1 -Coalesced [252] print_byte::b#14 ← print_byte::b#8 -Coalesced (already) [253] print_char_cursor#246 ← print_char_cursor#142 -Not coalescing [255] print_line_cursor#170 ← print_line_cursor#1 -Coalesced (already) [256] print_char_cursor#242 ← print_char_cursor#11 -Not coalescing [258] print_char_cursor#222 ← print_line_cursor#1 -Coalesced [264] print_byte::b#15 ← print_byte::b#9 -Coalesced (already) [265] print_char_cursor#247 ← print_char_cursor#142 -Not coalescing [267] print_line_cursor#171 ← print_line_cursor#1 -Coalesced (already) [268] print_char_cursor#243 ← print_char_cursor#11 -Coalesced [275] print_char::ch#3 ← print_char::ch#0 -Coalesced [276] print_char_cursor#254 ← print_char_cursor#145 -Coalesced [280] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [281] print_char_cursor#255 ← print_char_cursor#11 -Coalesced [291] print_byte::b#20 ← print_byte::b#0 -Coalesced (already) [292] print_char_cursor#252 ← print_char_cursor#142 -Coalesced [295] print_byte::b#21 ← print_byte::b#1 -Coalesced (already) [296] print_char_cursor#253 ← print_char_cursor#11 -Coalesced [355] mul8u::a#8 ← mul8u::a#6 -Coalesced [363] mul8u::res#9 ← mul8u::res#1 -Coalesced [367] mul8u::a#9 ← mul8u::a#0 -Coalesced [368] mul8u::res#7 ← mul8u::res#6 -Coalesced [369] mul8u::mb#6 ← mul8u::mb#1 -Coalesced (already) [370] mul8u::res#8 ← mul8u::res#2 +Coalesced [24] initEntry::entry#39 ← initEntry::entry#0 +Coalesced [27] initEntry::entry#40 ← initEntry::entry#1 +Coalesced [33] print_char_cursor#224 ← print_char_cursor#142 +Not coalescing [35] print_line_cursor#154 ← print_line_cursor#1 +Not coalescing [36] print_char_cursor#225 ← print_line_cursor#1 +Coalesced [39] printEntry::entry#76 ← printEntry::entry#0 +Not coalescing [41] print_line_cursor#155 ← print_line_cursor#1 +Not coalescing [42] print_char_cursor#226 ← print_line_cursor#1 +Not coalescing [44] print_char_cursor#207 ← print_line_cursor#1 +Coalesced (already) [56] print_char_cursor#227 ← print_char_cursor#142 +Not coalescing [58] print_line_cursor#156 ← print_line_cursor#1 +Not coalescing [59] print_char_cursor#228 ← print_line_cursor#1 +Coalesced [62] printEntry::entry#77 ← printEntry::entry#1 +Not coalescing [64] print_line_cursor#157 ← print_line_cursor#1 +Not coalescing [65] print_char_cursor#229 ← print_line_cursor#1 +Not coalescing [67] print_char_cursor#208 ← print_line_cursor#1 +Coalesced [91] memset::dst#4 ← memset::dst#1 +Coalesced [102] print_str::str#21 ← print_str::str#20 +Coalesced [103] print_char_cursor#222 ← print_char_cursor#164 +Coalesced [110] print_str::str#22 ← print_str::str#0 +Coalesced [111] print_char_cursor#223 ← print_char_cursor#1 +Coalesced [113] print_line_cursor#171 ← print_line_cursor#63 +Not coalescing [119] print_line_cursor#172 ← print_line_cursor#1 +Not coalescing [121] print_char_cursor#209 ← print_line_cursor#1 +Not coalescing [128] print_line_cursor#158 ← print_line_cursor#1 +Coalesced [129] print_char_cursor#230 ← print_char_cursor#11 +Not coalescing [131] print_char_cursor#210 ← print_line_cursor#1 +Not coalescing [138] print_line_cursor#159 ← print_line_cursor#1 +Coalesced (already) [139] print_char_cursor#231 ← print_char_cursor#11 +Not coalescing [141] print_char_cursor#211 ← print_line_cursor#1 +Coalesced [147] print_word::w#9 ← print_word::w#2 +Not coalescing [149] print_line_cursor#160 ← print_line_cursor#1 +Coalesced (already) [150] print_char_cursor#232 ← print_char_cursor#11 +Not coalescing [152] print_char_cursor#212 ← print_line_cursor#1 +Not coalescing [159] print_line_cursor#161 ← print_line_cursor#1 +Coalesced (already) [160] print_char_cursor#233 ← print_char_cursor#11 +Not coalescing [162] print_char_cursor#213 ← print_line_cursor#1 +Coalesced [168] print_byte::b#16 ← print_byte::b#2 +Coalesced [169] print_char_cursor#247 ← print_char_cursor#142 +Not coalescing [171] print_line_cursor#162 ← print_line_cursor#1 +Coalesced (already) [172] print_char_cursor#234 ← print_char_cursor#11 +Not coalescing [174] print_char_cursor#214 ← print_line_cursor#1 +Coalesced [180] print_byte::b#17 ← print_byte::b#3 +Coalesced (already) [181] print_char_cursor#248 ← print_char_cursor#142 +Not coalescing [183] print_line_cursor#163 ← print_line_cursor#1 +Coalesced (already) [184] print_char_cursor#235 ← print_char_cursor#11 +Not coalescing [186] print_char_cursor#215 ← print_line_cursor#1 +Coalesced [192] print_byte::b#18 ← print_byte::b#4 +Coalesced (already) [193] print_char_cursor#249 ← print_char_cursor#142 +Not coalescing [195] print_line_cursor#164 ← print_line_cursor#1 +Coalesced (already) [196] print_char_cursor#236 ← print_char_cursor#11 +Not coalescing [198] print_char_cursor#216 ← print_line_cursor#1 +Coalesced [204] print_byte::b#19 ← print_byte::b#5 +Coalesced (already) [205] print_char_cursor#250 ← print_char_cursor#142 +Not coalescing [207] print_line_cursor#165 ← print_line_cursor#1 +Coalesced (already) [208] print_char_cursor#237 ← print_char_cursor#11 +Not coalescing [210] print_char_cursor#217 ← print_line_cursor#1 +Coalesced [216] print_word::w#11 ← print_word::w#4 +Not coalescing [218] print_line_cursor#166 ← print_line_cursor#1 +Coalesced (already) [219] print_char_cursor#238 ← print_char_cursor#11 +Not coalescing [221] print_char_cursor#218 ← print_line_cursor#1 +Coalesced [227] print_byte::b#12 ← print_byte::b#6 +Coalesced (already) [228] print_char_cursor#243 ← print_char_cursor#142 +Not coalescing [230] print_line_cursor#167 ← print_line_cursor#1 +Coalesced (already) [231] print_char_cursor#239 ← print_char_cursor#11 +Not coalescing [233] print_char_cursor#219 ← print_line_cursor#1 +Coalesced [239] print_byte::b#13 ← print_byte::b#7 +Coalesced (already) [240] print_char_cursor#244 ← print_char_cursor#142 +Not coalescing [242] print_line_cursor#168 ← print_line_cursor#1 +Coalesced (already) [243] print_char_cursor#240 ← print_char_cursor#11 +Not coalescing [245] print_char_cursor#220 ← print_line_cursor#1 +Coalesced [251] print_byte::b#14 ← print_byte::b#8 +Coalesced (already) [252] print_char_cursor#245 ← print_char_cursor#142 +Not coalescing [254] print_line_cursor#169 ← print_line_cursor#1 +Coalesced (already) [255] print_char_cursor#241 ← print_char_cursor#11 +Not coalescing [257] print_char_cursor#221 ← print_line_cursor#1 +Coalesced [263] print_byte::b#15 ← print_byte::b#9 +Coalesced (already) [264] print_char_cursor#246 ← print_char_cursor#142 +Not coalescing [266] print_line_cursor#170 ← print_line_cursor#1 +Coalesced (already) [267] print_char_cursor#242 ← print_char_cursor#11 +Coalesced [274] print_char::ch#3 ← print_char::ch#0 +Coalesced [275] print_char_cursor#253 ← print_char_cursor#145 +Coalesced [279] print_char::ch#4 ← print_char::ch#1 +Coalesced (already) [280] print_char_cursor#254 ← print_char_cursor#11 +Coalesced [290] print_byte::b#20 ← print_byte::b#0 +Coalesced (already) [291] print_char_cursor#251 ← print_char_cursor#142 +Coalesced [294] print_byte::b#21 ← print_byte::b#1 +Coalesced (already) [295] print_char_cursor#252 ← print_char_cursor#11 +Coalesced [354] mul8u::a#8 ← mul8u::a#6 +Coalesced [362] mul8u::res#9 ← mul8u::res#1 +Coalesced [366] mul8u::a#9 ← mul8u::a#0 +Coalesced [367] mul8u::res#7 ← mul8u::res#6 +Coalesced [368] mul8u::mb#6 ← mul8u::mb#1 +Coalesced (already) [369] mul8u::res#8 ← mul8u::res#2 Coalesced down to 14 phi equivalence classes Culled Empty Block (label) @17 -Culled Empty Block (label) @45 Culled Empty Block (label) @52 Culled Empty Block (label) @70 Culled Empty Block (label) main::@15 @@ -4247,8 +4227,8 @@ main::@11: scope:[main] from main::@10 [25] call print_ln to:main::@12 main::@12: scope:[main] from main::@11 - [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 - [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 + [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 + [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [28] call print_ln to:main::@13 main::@13: scope:[main] from main::@12 @@ -4256,12 +4236,12 @@ main::@13: scope:[main] from main::@12 [30] call printEntry to:main::@14 main::@14: scope:[main] from main::@13 - [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 - [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 + [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 + [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 [33] call print_ln to:main::@15 main::@15: scope:[main] from main::@14 - [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 + [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 [35] call print_str to:main::@1 main::@1: scope:[main] from main::@15 main::@16 @@ -4286,8 +4266,8 @@ main::@18: scope:[main] from main::@17 [46] call print_ln to:main::@19 main::@19: scope:[main] from main::@18 - [47] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 - [48] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 + [47] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 + [48] (byte*~) print_char_cursor#228 ← (byte*) print_line_cursor#1 [49] call print_ln to:main::@20 main::@20: scope:[main] from main::@19 @@ -4295,12 +4275,12 @@ main::@20: scope:[main] from main::@19 [51] call printEntry to:main::@21 main::@21: scope:[main] from main::@20 - [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 - [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 + [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 + [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 [54] call print_ln to:main::@22 main::@22: scope:[main] from main::@21 - [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 + [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 [56] call print_str to:main::@3 main::@3: scope:[main] from main::@22 main::@23 @@ -4370,7 +4350,7 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from main::@10 main::@15 main::@17 main::@22 printEntry printEntry::@15 printEntry::@17 printEntry::@19 printEntry::@21 printEntry::@23 printEntry::@25 printEntry::@27 printEntry::@29 printEntry::@31 printEntry::@33 printEntry::@35 printEntry::@37 - [83] (byte*) print_char_cursor#164 ← phi( main::@10/(byte*) 1024 main::@15/(byte*~) print_char_cursor#208 main::@17/(byte*) 1024 main::@22/(byte*~) print_char_cursor#209 printEntry/(byte*~) print_char_cursor#210 printEntry::@15/(byte*~) print_char_cursor#211 printEntry::@17/(byte*~) print_char_cursor#212 printEntry::@19/(byte*~) print_char_cursor#213 printEntry::@21/(byte*~) print_char_cursor#214 printEntry::@23/(byte*~) print_char_cursor#215 printEntry::@25/(byte*~) print_char_cursor#216 printEntry::@27/(byte*~) print_char_cursor#217 printEntry::@29/(byte*~) print_char_cursor#218 printEntry::@31/(byte*~) print_char_cursor#219 printEntry::@33/(byte*~) print_char_cursor#220 printEntry::@35/(byte*~) print_char_cursor#221 printEntry::@37/(byte*~) print_char_cursor#222 ) + [83] (byte*) print_char_cursor#164 ← phi( main::@10/(byte*) 1024 main::@15/(byte*~) print_char_cursor#207 main::@17/(byte*) 1024 main::@22/(byte*~) print_char_cursor#208 printEntry/(byte*~) print_char_cursor#209 printEntry::@15/(byte*~) print_char_cursor#210 printEntry::@17/(byte*~) print_char_cursor#211 printEntry::@19/(byte*~) print_char_cursor#212 printEntry::@21/(byte*~) print_char_cursor#213 printEntry::@23/(byte*~) print_char_cursor#214 printEntry::@25/(byte*~) print_char_cursor#215 printEntry::@27/(byte*~) print_char_cursor#216 printEntry::@29/(byte*~) print_char_cursor#217 printEntry::@31/(byte*~) print_char_cursor#218 printEntry::@33/(byte*~) print_char_cursor#219 printEntry::@35/(byte*~) print_char_cursor#220 printEntry::@37/(byte*~) print_char_cursor#221 ) [83] (byte*) print_str::str#20 ← phi( main::@10/(const string) main::str main::@15/(const string) main::str1 main::@17/(const string) main::str2 main::@22/(const string) main::str1 printEntry/(const string) printEntry::str printEntry::@15/(const string) printEntry::str1 printEntry::@17/(const string) printEntry::str2 printEntry::@19/(const string) printEntry::str3 printEntry::@21/(const string) printEntry::str4 printEntry::@23/(const string) printEntry::str5 printEntry::@25/(const string) printEntry::str6 printEntry::@27/(const string) printEntry::str7 printEntry::@29/(const string) printEntry::str8 printEntry::@31/(const string) printEntry::str9 printEntry::@33/(const string) printEntry::str10 printEntry::@35/(const string) printEntry::str11 printEntry::@37/(const string) printEntry::str12 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -4389,11 +4369,11 @@ print_str::@2: scope:[print_str] from print_str::@1 (void()) print_ln() print_ln: scope:[print_ln] from main::@11 main::@12 main::@14 main::@18 main::@19 main::@21 printEntry::@14 printEntry::@16 printEntry::@18 printEntry::@20 printEntry::@22 printEntry::@24 printEntry::@26 printEntry::@28 printEntry::@30 printEntry::@32 printEntry::@34 printEntry::@36 printEntry::@38 - [90] (byte*) print_char_cursor#143 ← phi( main::@11/(byte*) print_char_cursor#142 main::@12/(byte*~) print_char_cursor#226 main::@14/(byte*~) print_char_cursor#227 main::@18/(byte*) print_char_cursor#142 main::@19/(byte*~) print_char_cursor#229 main::@21/(byte*~) print_char_cursor#230 printEntry::@14/(byte*) print_char_cursor#11 printEntry::@16/(byte*) print_char_cursor#11 printEntry::@18/(byte*) print_char_cursor#11 printEntry::@20/(byte*) print_char_cursor#11 printEntry::@22/(byte*) print_char_cursor#11 printEntry::@24/(byte*) print_char_cursor#11 printEntry::@26/(byte*) print_char_cursor#11 printEntry::@28/(byte*) print_char_cursor#11 printEntry::@30/(byte*) print_char_cursor#11 printEntry::@32/(byte*) print_char_cursor#11 printEntry::@34/(byte*) print_char_cursor#11 printEntry::@36/(byte*) print_char_cursor#11 printEntry::@38/(byte*) print_char_cursor#11 ) - [90] (byte*) print_line_cursor#63 ← phi( main::@11/(byte*) 1024 main::@12/(byte*~) print_line_cursor#155 main::@14/(byte*~) print_line_cursor#156 main::@18/(byte*) 1024 main::@19/(byte*~) print_line_cursor#157 main::@21/(byte*~) print_line_cursor#158 printEntry::@14/(byte*~) print_line_cursor#159 printEntry::@16/(byte*~) print_line_cursor#160 printEntry::@18/(byte*~) print_line_cursor#161 printEntry::@20/(byte*~) print_line_cursor#162 printEntry::@22/(byte*~) print_line_cursor#163 printEntry::@24/(byte*~) print_line_cursor#164 printEntry::@26/(byte*~) print_line_cursor#165 printEntry::@28/(byte*~) print_line_cursor#166 printEntry::@30/(byte*~) print_line_cursor#167 printEntry::@32/(byte*~) print_line_cursor#168 printEntry::@34/(byte*~) print_line_cursor#169 printEntry::@36/(byte*~) print_line_cursor#170 printEntry::@38/(byte*~) print_line_cursor#171 ) + [90] (byte*) print_char_cursor#143 ← phi( main::@11/(byte*) print_char_cursor#142 main::@12/(byte*~) print_char_cursor#225 main::@14/(byte*~) print_char_cursor#226 main::@18/(byte*) print_char_cursor#142 main::@19/(byte*~) print_char_cursor#228 main::@21/(byte*~) print_char_cursor#229 printEntry::@14/(byte*) print_char_cursor#11 printEntry::@16/(byte*) print_char_cursor#11 printEntry::@18/(byte*) print_char_cursor#11 printEntry::@20/(byte*) print_char_cursor#11 printEntry::@22/(byte*) print_char_cursor#11 printEntry::@24/(byte*) print_char_cursor#11 printEntry::@26/(byte*) print_char_cursor#11 printEntry::@28/(byte*) print_char_cursor#11 printEntry::@30/(byte*) print_char_cursor#11 printEntry::@32/(byte*) print_char_cursor#11 printEntry::@34/(byte*) print_char_cursor#11 printEntry::@36/(byte*) print_char_cursor#11 printEntry::@38/(byte*) print_char_cursor#11 ) + [90] (byte*) print_line_cursor#63 ← phi( main::@11/(byte*) 1024 main::@12/(byte*~) print_line_cursor#154 main::@14/(byte*~) print_line_cursor#155 main::@18/(byte*) 1024 main::@19/(byte*~) print_line_cursor#156 main::@21/(byte*~) print_line_cursor#157 printEntry::@14/(byte*~) print_line_cursor#158 printEntry::@16/(byte*~) print_line_cursor#159 printEntry::@18/(byte*~) print_line_cursor#160 printEntry::@20/(byte*~) print_line_cursor#161 printEntry::@22/(byte*~) print_line_cursor#162 printEntry::@24/(byte*~) print_line_cursor#163 printEntry::@26/(byte*~) print_line_cursor#164 printEntry::@28/(byte*~) print_line_cursor#165 printEntry::@30/(byte*~) print_line_cursor#166 printEntry::@32/(byte*~) print_line_cursor#167 printEntry::@34/(byte*~) print_line_cursor#168 printEntry::@36/(byte*~) print_line_cursor#169 printEntry::@38/(byte*~) print_line_cursor#170 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@2 - [91] (byte*) print_line_cursor#32 ← phi( print_ln/(byte*) print_line_cursor#63 print_ln::@2/(byte*~) print_line_cursor#173 ) + [91] (byte*) print_line_cursor#32 ← phi( print_ln/(byte*) print_line_cursor#63 print_ln::@2/(byte*~) print_line_cursor#172 ) [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 to:print_ln::@return @@ -4401,13 +4381,13 @@ print_ln::@return: scope:[print_ln] from print_ln::@1 [94] return to:@return print_ln::@2: scope:[print_ln] from print_ln::@1 - [95] (byte*~) print_line_cursor#173 ← (byte*) print_line_cursor#1 + [95] (byte*~) print_line_cursor#172 ← (byte*) print_line_cursor#1 to:print_ln::@1 (void()) printEntry((byte*) printEntry::entry) printEntry: scope:[printEntry] from main::@13 main::@20 [96] (byte*) printEntry::entry#10 ← phi( main::@13/(byte*) printEntry::entry#0 main::@20/(byte*) printEntry::entry#1 ) - [97] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 + [97] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 [98] call print_str to:printEntry::entryBufDisk1 printEntry::entryBufDisk1: scope:[printEntry] from printEntry @@ -4418,11 +4398,11 @@ printEntry::@1: scope:[printEntry] from printEntry::entryBufDisk1 [101] call print_word to:printEntry::@14 printEntry::@14: scope:[printEntry] from printEntry::@1 - [102] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 + [102] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 [103] call print_ln to:printEntry::@15 printEntry::@15: scope:[printEntry] from printEntry::@14 - [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 + [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 [105] call print_str to:printEntry::entryBufEdit1 printEntry::entryBufEdit1: scope:[printEntry] from printEntry::@15 @@ -4433,11 +4413,11 @@ printEntry::@2: scope:[printEntry] from printEntry::entryBufEdit1 [108] call print_word to:printEntry::@16 printEntry::@16: scope:[printEntry] from printEntry::@2 - [109] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 + [109] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 [110] call print_ln to:printEntry::@17 printEntry::@17: scope:[printEntry] from printEntry::@16 - [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 + [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 [112] call print_str to:printEntry::entryTsLen1 printEntry::entryTsLen1: scope:[printEntry] from printEntry::@17 @@ -4448,11 +4428,11 @@ printEntry::@3: scope:[printEntry] from printEntry::entryTsLen1 [115] call print_word to:printEntry::@18 printEntry::@18: scope:[printEntry] from printEntry::@3 - [116] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 + [116] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 [117] call print_ln to:printEntry::@19 printEntry::@19: scope:[printEntry] from printEntry::@18 - [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 + [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 [119] call print_str to:printEntry::entryTsOrder1 printEntry::entryTsOrder1: scope:[printEntry] from printEntry::@19 @@ -4463,11 +4443,11 @@ printEntry::@4: scope:[printEntry] from printEntry::entryTsOrder1 [122] call print_word to:printEntry::@20 printEntry::@20: scope:[printEntry] from printEntry::@4 - [123] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 + [123] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 [124] call print_ln to:printEntry::@21 printEntry::@21: scope:[printEntry] from printEntry::@20 - [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 + [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [126] call print_str to:printEntry::entryTLastLink1 printEntry::entryTLastLink1: scope:[printEntry] from printEntry::@21 @@ -4478,11 +4458,11 @@ printEntry::@5: scope:[printEntry] from printEntry::entryTLastLink1 [129] call print_byte to:printEntry::@22 printEntry::@22: scope:[printEntry] from printEntry::@5 - [130] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 + [130] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 [131] call print_ln to:printEntry::@23 printEntry::@23: scope:[printEntry] from printEntry::@22 - [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 + [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 [133] call print_str to:printEntry::entrySLastLink1 printEntry::entrySLastLink1: scope:[printEntry] from printEntry::@23 @@ -4493,11 +4473,11 @@ printEntry::@6: scope:[printEntry] from printEntry::entrySLastLink1 [136] call print_byte to:printEntry::@24 printEntry::@24: scope:[printEntry] from printEntry::@6 - [137] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 + [137] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 [138] call print_ln to:printEntry::@25 printEntry::@25: scope:[printEntry] from printEntry::@24 - [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 + [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 [140] call print_str to:printEntry::entryBFlag1 printEntry::entryBFlag1: scope:[printEntry] from printEntry::@25 @@ -4508,11 +4488,11 @@ printEntry::@7: scope:[printEntry] from printEntry::entryBFlag1 [143] call print_byte to:printEntry::@26 printEntry::@26: scope:[printEntry] from printEntry::@7 - [144] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 + [144] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 [145] call print_ln to:printEntry::@27 printEntry::@27: scope:[printEntry] from printEntry::@26 - [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 + [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 [147] call print_str to:printEntry::entryBError1 printEntry::entryBError1: scope:[printEntry] from printEntry::@27 @@ -4523,11 +4503,11 @@ printEntry::@8: scope:[printEntry] from printEntry::entryBError1 [150] call print_byte to:printEntry::@28 printEntry::@28: scope:[printEntry] from printEntry::@8 - [151] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 + [151] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 [152] call print_ln to:printEntry::@29 printEntry::@29: scope:[printEntry] from printEntry::@28 - [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 + [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 [154] call print_str to:printEntry::entryUCross1 printEntry::entryUCross1: scope:[printEntry] from printEntry::@29 @@ -4538,11 +4518,11 @@ printEntry::@9: scope:[printEntry] from printEntry::entryUCross1 [157] call print_word to:printEntry::@30 printEntry::@30: scope:[printEntry] from printEntry::@9 - [158] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 + [158] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 [159] call print_ln to:printEntry::@31 printEntry::@31: scope:[printEntry] from printEntry::@30 - [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 + [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [161] call print_str to:printEntry::entryBAddrLo1 printEntry::entryBAddrLo1: scope:[printEntry] from printEntry::@31 @@ -4553,11 +4533,11 @@ printEntry::@10: scope:[printEntry] from printEntry::entryBAddrLo1 [164] call print_byte to:printEntry::@32 printEntry::@32: scope:[printEntry] from printEntry::@10 - [165] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 + [165] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 [166] call print_ln to:printEntry::@33 printEntry::@33: scope:[printEntry] from printEntry::@32 - [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 + [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 [168] call print_str to:printEntry::entryBAddrHi1 printEntry::entryBAddrHi1: scope:[printEntry] from printEntry::@33 @@ -4568,11 +4548,11 @@ printEntry::@11: scope:[printEntry] from printEntry::entryBAddrHi1 [171] call print_byte to:printEntry::@34 printEntry::@34: scope:[printEntry] from printEntry::@11 - [172] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 + [172] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 [173] call print_ln to:printEntry::@35 printEntry::@35: scope:[printEntry] from printEntry::@34 - [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 + [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [175] call print_str to:printEntry::entryTHi1 printEntry::entryTHi1: scope:[printEntry] from printEntry::@35 @@ -4583,11 +4563,11 @@ printEntry::@12: scope:[printEntry] from printEntry::entryTHi1 [178] call print_byte to:printEntry::@36 printEntry::@36: scope:[printEntry] from printEntry::@12 - [179] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 + [179] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 [180] call print_ln to:printEntry::@37 printEntry::@37: scope:[printEntry] from printEntry::@36 - [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 + [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 [182] call print_str to:printEntry::entryTLo1 printEntry::entryTLo1: scope:[printEntry] from printEntry::@37 @@ -4598,7 +4578,7 @@ printEntry::@13: scope:[printEntry] from printEntry::entryTLo1 [185] call print_byte to:printEntry::@38 printEntry::@38: scope:[printEntry] from printEntry::@13 - [186] (byte*~) print_line_cursor#171 ← (byte*) print_line_cursor#1 + [186] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 [187] call print_ln to:printEntry::@return printEntry::@return: scope:[printEntry] from printEntry::@38 @@ -4943,6 +4923,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#143 9.800000000000002 (byte*) print_char_cursor#145 7.333333333333334 (byte*) print_char_cursor#164 32.0 +(byte*~) print_char_cursor#207 4.0 (byte*~) print_char_cursor#208 4.0 (byte*~) print_char_cursor#209 4.0 (byte*~) print_char_cursor#210 4.0 @@ -4957,19 +4938,19 @@ VARIABLE REGISTER WEIGHTS (byte*~) print_char_cursor#219 4.0 (byte*~) print_char_cursor#220 4.0 (byte*~) print_char_cursor#221 4.0 -(byte*~) print_char_cursor#222 4.0 +(byte*~) print_char_cursor#225 4.0 (byte*~) print_char_cursor#226 4.0 -(byte*~) print_char_cursor#227 4.0 +(byte*~) print_char_cursor#228 4.0 (byte*~) print_char_cursor#229 4.0 -(byte*~) print_char_cursor#230 4.0 (byte*) print_char_cursor#82 4.0 (void()) print_cls() (byte*) print_line_cursor (byte*) print_line_cursor#1 1.0824742268041243 +(byte*~) print_line_cursor#154 2.0 (byte*~) print_line_cursor#155 2.0 (byte*~) print_line_cursor#156 2.0 (byte*~) print_line_cursor#157 2.0 -(byte*~) print_line_cursor#158 2.0 +(byte*~) print_line_cursor#158 4.0 (byte*~) print_line_cursor#159 4.0 (byte*~) print_line_cursor#160 4.0 (byte*~) print_line_cursor#161 4.0 @@ -4982,8 +4963,7 @@ VARIABLE REGISTER WEIGHTS (byte*~) print_line_cursor#168 4.0 (byte*~) print_line_cursor#169 4.0 (byte*~) print_line_cursor#170 4.0 -(byte*~) print_line_cursor#171 4.0 -(byte*~) print_line_cursor#173 22.0 +(byte*~) print_line_cursor#172 22.0 (byte*) print_line_cursor#32 24.0 (byte*) print_line_cursor#63 36.0 (void()) print_ln() @@ -5005,11 +4985,11 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ memset::dst#2 memset::dst#1 ] [ print_str::str#18 print_str::str#20 print_str::str#0 ] -[ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] +[ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] +[ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] [ initEntry::n#10 ] @@ -5050,11 +5030,11 @@ Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] Complete equivalence classes [ memset::dst#2 memset::dst#1 ] [ print_str::str#18 print_str::str#20 print_str::str#0 ] -[ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] +[ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] +[ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] [ initEntry::n#10 ] @@ -5094,11 +5074,11 @@ Complete equivalence classes [ mul8u::$1 ] Allocated zp[2]:2 [ memset::dst#2 memset::dst#1 ] Allocated zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] -Allocated zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] +Allocated zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] Allocated zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] Allocated zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] Allocated zp[1]:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Allocated zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] +Allocated zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] Allocated zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] Allocated zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] Allocated zp[1]:18 [ initEntry::n#10 ] @@ -5353,12 +5333,12 @@ main: { jmp __b12 // main::@12 __b12: - // [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5366,8 +5346,8 @@ main: { // [28] call print_ln // [90] phi from main::@12 to print_ln [phi:main::@12->print_ln] print_ln_from___b12: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#226 [phi:main::@12->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#155 [phi:main::@12->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#225 [phi:main::@12->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#154 [phi:main::@12->print_ln#1] -- register_copy jsr print_ln jmp __b13 // main::@13 @@ -5385,12 +5365,12 @@ main: { jmp __b14 // main::@14 __b14: - // [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5398,13 +5378,13 @@ main: { // [33] call print_ln // [90] phi from main::@14 to print_ln [phi:main::@14->print_ln] print_ln_from___b14: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#227 [phi:main::@14->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#156 [phi:main::@14->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#226 [phi:main::@14->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#155 [phi:main::@14->print_ln#1] -- register_copy jsr print_ln jmp __b15 // main::@15 __b15: - // [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5412,7 +5392,7 @@ main: { // [35] call print_str // [83] phi from main::@15 to print_str [phi:main::@15->print_str] print_str_from___b15: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#208 [phi:main::@15->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#207 [phi:main::@15->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) main::str1 [phi:main::@15->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b19: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#229 [phi:main::@19->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#157 [phi:main::@19->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#228 [phi:main::@19->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#156 [phi:main::@19->print_ln#1] -- register_copy jsr print_ln jmp __b20 // main::@20 @@ -5520,12 +5500,12 @@ main: { jmp __b21 // main::@21 __b21: - // [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5533,13 +5513,13 @@ main: { // [54] call print_ln // [90] phi from main::@21 to print_ln [phi:main::@21->print_ln] print_ln_from___b21: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#230 [phi:main::@21->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#158 [phi:main::@21->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#229 [phi:main::@21->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#157 [phi:main::@21->print_ln#1] -- register_copy jsr print_ln jmp __b22 // main::@22 __b22: - // [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5547,7 +5527,7 @@ main: { // [56] call print_str // [83] phi from main::@22 to print_str [phi:main::@22->print_str] print_str_from___b22: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#209 [phi:main::@22->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#208 [phi:main::@22->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) main::str1 [phi:main::@22->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_printEntry: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#210 [phi:printEntry->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#209 [phi:printEntry->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str [phi:printEntry->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b14: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@14->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#159 [phi:printEntry::@14->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#158 [phi:printEntry::@14->print_ln#1] -- register_copy jsr print_ln jmp __b15 // printEntry::@15 __b15: - // [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5860,7 +5840,7 @@ printEntry: { // [105] call print_str // [83] phi from printEntry::@15 to print_str [phi:printEntry::@15->print_str] print_str_from___b15: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#211 [phi:printEntry::@15->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#210 [phi:printEntry::@15->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str1 [phi:printEntry::@15->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b16: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@16->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#160 [phi:printEntry::@16->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#159 [phi:printEntry::@16->print_ln#1] -- register_copy jsr print_ln jmp __b17 // printEntry::@17 __b17: - // [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5912,7 +5892,7 @@ printEntry: { // [112] call print_str // [83] phi from printEntry::@17 to print_str [phi:printEntry::@17->print_str] print_str_from___b17: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#212 [phi:printEntry::@17->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#211 [phi:printEntry::@17->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str2 [phi:printEntry::@17->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b18: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@18->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#161 [phi:printEntry::@18->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#160 [phi:printEntry::@18->print_ln#1] -- register_copy jsr print_ln jmp __b19 // printEntry::@19 __b19: - // [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -5964,7 +5944,7 @@ printEntry: { // [119] call print_str // [83] phi from printEntry::@19 to print_str [phi:printEntry::@19->print_str] print_str_from___b19: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#213 [phi:printEntry::@19->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#212 [phi:printEntry::@19->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str3 [phi:printEntry::@19->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b20: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@20->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#162 [phi:printEntry::@20->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#161 [phi:printEntry::@20->print_ln#1] -- register_copy jsr print_ln jmp __b21 // printEntry::@21 __b21: - // [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6016,7 +5996,7 @@ printEntry: { // [126] call print_str // [83] phi from printEntry::@21 to print_str [phi:printEntry::@21->print_str] print_str_from___b21: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#214 [phi:printEntry::@21->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#213 [phi:printEntry::@21->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str4 [phi:printEntry::@21->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b22: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@22->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#163 [phi:printEntry::@22->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#162 [phi:printEntry::@22->print_ln#1] -- register_copy jsr print_ln jmp __b23 // printEntry::@23 __b23: - // [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6066,7 +6046,7 @@ printEntry: { // [133] call print_str // [83] phi from printEntry::@23 to print_str [phi:printEntry::@23->print_str] print_str_from___b23: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#215 [phi:printEntry::@23->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#214 [phi:printEntry::@23->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str5 [phi:printEntry::@23->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b24: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@24->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#164 [phi:printEntry::@24->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#163 [phi:printEntry::@24->print_ln#1] -- register_copy jsr print_ln jmp __b25 // printEntry::@25 __b25: - // [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6116,7 +6096,7 @@ printEntry: { // [140] call print_str // [83] phi from printEntry::@25 to print_str [phi:printEntry::@25->print_str] print_str_from___b25: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#216 [phi:printEntry::@25->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#215 [phi:printEntry::@25->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str6 [phi:printEntry::@25->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b26: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@26->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#165 [phi:printEntry::@26->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#164 [phi:printEntry::@26->print_ln#1] -- register_copy jsr print_ln jmp __b27 // printEntry::@27 __b27: - // [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6166,7 +6146,7 @@ printEntry: { // [147] call print_str // [83] phi from printEntry::@27 to print_str [phi:printEntry::@27->print_str] print_str_from___b27: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#217 [phi:printEntry::@27->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#216 [phi:printEntry::@27->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str7 [phi:printEntry::@27->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b28: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@28->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#166 [phi:printEntry::@28->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#165 [phi:printEntry::@28->print_ln#1] -- register_copy jsr print_ln jmp __b29 // printEntry::@29 __b29: - // [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6216,7 +6196,7 @@ printEntry: { // [154] call print_str // [83] phi from printEntry::@29 to print_str [phi:printEntry::@29->print_str] print_str_from___b29: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#218 [phi:printEntry::@29->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#217 [phi:printEntry::@29->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str8 [phi:printEntry::@29->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b30: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@30->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#167 [phi:printEntry::@30->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#166 [phi:printEntry::@30->print_ln#1] -- register_copy jsr print_ln jmp __b31 // printEntry::@31 __b31: - // [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6268,7 +6248,7 @@ printEntry: { // [161] call print_str // [83] phi from printEntry::@31 to print_str [phi:printEntry::@31->print_str] print_str_from___b31: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#219 [phi:printEntry::@31->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#218 [phi:printEntry::@31->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str9 [phi:printEntry::@31->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b32: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@32->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#168 [phi:printEntry::@32->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#167 [phi:printEntry::@32->print_ln#1] -- register_copy jsr print_ln jmp __b33 // printEntry::@33 __b33: - // [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6318,7 +6298,7 @@ printEntry: { // [168] call print_str // [83] phi from printEntry::@33 to print_str [phi:printEntry::@33->print_str] print_str_from___b33: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#220 [phi:printEntry::@33->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#219 [phi:printEntry::@33->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str10 [phi:printEntry::@33->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b34: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@34->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#169 [phi:printEntry::@34->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#168 [phi:printEntry::@34->print_ln#1] -- register_copy jsr print_ln jmp __b35 // printEntry::@35 __b35: - // [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6368,7 +6348,7 @@ printEntry: { // [175] call print_str // [83] phi from printEntry::@35 to print_str [phi:printEntry::@35->print_str] print_str_from___b35: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#221 [phi:printEntry::@35->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#220 [phi:printEntry::@35->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str11 [phi:printEntry::@35->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b36: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@36->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#170 [phi:printEntry::@36->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#169 [phi:printEntry::@36->print_ln#1] -- register_copy jsr print_ln jmp __b37 // printEntry::@37 __b37: - // [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -6418,7 +6398,7 @@ printEntry: { // [182] call print_str // [83] phi from printEntry::@37 to print_str [phi:printEntry::@37->print_str] print_str_from___b37: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#222 [phi:printEntry::@37->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#221 [phi:printEntry::@37->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str12 [phi:printEntry::@37->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b38: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@38->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#171 [phi:printEntry::@38->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#170 [phi:printEntry::@38->print_ln#1] -- register_copy jsr print_ln jmp __breturn // printEntry::@return @@ -6967,18 +6947,18 @@ Statement [14] (word~) main::fileEntry2_$0 ← (word) mul8u::return#3 [ main::en Statement [15] (byte*) main::entry2#0 ← (const byte[(word)MAX_FILES*SIZEOF_ENTRY]) files + (word~) main::fileEntry2_$0 [ main::entry1#0 main::entry2#0 ] ( main:2 [ main::entry1#0 main::entry2#0 ] ) always clobbers reg byte a Statement [16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ) always clobbers reg byte a Statement [18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ) always clobbers reg byte a +Statement [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ) always clobbers reg byte a Statement [29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ( main:2 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ) always clobbers reg byte a -Statement [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ) always clobbers reg byte a -Statement [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#156 print_char_cursor#227 ] ( main:2 [ main::entry2#0 print_line_cursor#156 print_char_cursor#227 ] ) always clobbers reg byte a -Statement [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#208 ] ( main:2 [ main::entry2#0 print_char_cursor#208 ] ) always clobbers reg byte a -Statement [47] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#157 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#157 ] ) always clobbers reg byte a -Statement [48] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#157 print_char_cursor#229 ] ( main:2 [ main::entry2#0 print_line_cursor#157 print_char_cursor#229 ] ) always clobbers reg byte a +Statement [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ) always clobbers reg byte a +Statement [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ( main:2 [ main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ) always clobbers reg byte a +Statement [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#207 ] ( main:2 [ main::entry2#0 print_char_cursor#207 ] ) always clobbers reg byte a +Statement [47] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ) always clobbers reg byte a +Statement [48] (byte*~) print_char_cursor#228 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#156 print_char_cursor#228 ] ( main:2 [ main::entry2#0 print_line_cursor#156 print_char_cursor#228 ] ) always clobbers reg byte a Statement [50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0 [ print_line_cursor#1 printEntry::entry#1 ] ( main:2 [ print_line_cursor#1 printEntry::entry#1 ] ) always clobbers reg byte a -Statement [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#158 ] ( main:2 [ print_line_cursor#1 print_line_cursor#158 ] ) always clobbers reg byte a -Statement [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 [ print_line_cursor#158 print_char_cursor#230 ] ( main:2 [ print_line_cursor#158 print_char_cursor#230 ] ) always clobbers reg byte a -Statement [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_char_cursor#209 ] ( main:2 [ print_char_cursor#209 ] ) always clobbers reg byte a +Statement [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#157 ] ( main:2 [ print_line_cursor#1 print_line_cursor#157 ] ) always clobbers reg byte a +Statement [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 [ print_line_cursor#157 print_char_cursor#229 ] ( main:2 [ print_line_cursor#157 print_char_cursor#229 ] ) always clobbers reg byte a +Statement [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ print_char_cursor#208 ] ( main:2 [ print_char_cursor#208 ] ) always clobbers reg byte a Statement [70] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a Statement [72] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y Statement [80] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ ] ) always clobbers reg byte a @@ -6987,46 +6967,46 @@ Statement [85] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 [ p Statement [87] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18) [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] ) always clobbers reg byte a reg byte y Statement [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a Statement [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a -Statement [95] (byte*~) print_line_cursor#173 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#173 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#173 ] ) always clobbers reg byte a -Statement [97] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [95] (byte*~) print_line_cursor#172 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#172 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#172 ] ) always clobbers reg byte a +Statement [97] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ) always clobbers reg byte a Statement [100] (word~) print_word::w#7 ← (word)*((byte**)(byte*) printEntry::entry#10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ) always clobbers reg byte a reg byte y -Statement [102] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_line_cursor#159 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#159 print_char_cursor#11 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#159 print_char_cursor#11 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [102] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#158 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#158 print_char_cursor#11 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#158 print_char_cursor#11 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ) always clobbers reg byte a Statement [107] (word~) print_word::w#8 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 2) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ) always clobbers reg byte a reg byte y -Statement [109] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [109] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ) always clobbers reg byte a Statement [114] (word) print_word::w#2 ← *((word*)(byte*) printEntry::entry#10 + (byte) 4) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ) always clobbers reg byte a reg byte y -Statement [116] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [116] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ) always clobbers reg byte a Statement [121] (word~) print_word::w#10 ← (word)*((word**)(byte*) printEntry::entry#10 + (byte) 6) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [123] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ) always clobbers reg byte a Statement [128] (byte) print_byte::b#2 ← *((byte*) printEntry::entry#10 + (byte) 8) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ) always clobbers reg byte a reg byte y -Statement [130] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [130] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ) always clobbers reg byte a Statement [135] (byte) print_byte::b#3 ← *((byte*) printEntry::entry#10 + (byte) 9) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ) always clobbers reg byte a reg byte y -Statement [137] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [137] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ) always clobbers reg byte a Statement [142] (byte) print_byte::b#4 ← *((byte*) printEntry::entry#10 + (byte) $a) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ) always clobbers reg byte a reg byte y -Statement [144] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [144] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ) always clobbers reg byte a Statement [149] (byte) print_byte::b#5 ← *((byte*) printEntry::entry#10 + (byte) $b) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ) always clobbers reg byte a reg byte y -Statement [151] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [151] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ) always clobbers reg byte a Statement [156] (word) print_word::w#4 ← *((word*)(byte*) printEntry::entry#10 + (byte) $c) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ) always clobbers reg byte a reg byte y -Statement [158] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [158] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ) always clobbers reg byte a Statement [163] (byte) print_byte::b#6 ← *((byte*) printEntry::entry#10 + (byte) $e) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ) always clobbers reg byte a reg byte y -Statement [165] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [165] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ) always clobbers reg byte a Statement [170] (byte) print_byte::b#7 ← *((byte*) printEntry::entry#10 + (byte) $f) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ) always clobbers reg byte a reg byte y -Statement [172] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [172] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ) always clobbers reg byte a Statement [177] (byte) print_byte::b#8 ← *((byte*) printEntry::entry#10 + (byte) $10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ) always clobbers reg byte a reg byte y -Statement [179] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#170 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#170 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#170 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#222 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#222 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#222 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [179] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ) always clobbers reg byte a Statement [184] (byte) print_byte::b#9 ← *((byte*) printEntry::entry#10 + (byte) $11) [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ) always clobbers reg byte a reg byte y -Statement [186] (byte*~) print_line_cursor#171 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#171 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#171 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#171 ] ) always clobbers reg byte a +Statement [186] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#170 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#170 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#170 ] ) always clobbers reg byte a Statement [190] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte) 4 [ print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] Statement [193] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a @@ -7074,18 +7054,18 @@ Statement [14] (word~) main::fileEntry2_$0 ← (word) mul8u::return#3 [ main::en Statement [15] (byte*) main::entry2#0 ← (const byte[(word)MAX_FILES*SIZEOF_ENTRY]) files + (word~) main::fileEntry2_$0 [ main::entry1#0 main::entry2#0 ] ( main:2 [ main::entry1#0 main::entry2#0 ] ) always clobbers reg byte a Statement [16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#0 ] ) always clobbers reg byte a Statement [18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ( main:2 [ main::entry1#0 main::entry2#0 initEntry::entry#1 ] ) always clobbers reg byte a -Statement [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ) always clobbers reg byte a +Statement [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_line_cursor#1 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ( main:2 [ main::entry1#0 main::entry2#0 print_line_cursor#154 print_char_cursor#225 ] ) always clobbers reg byte a Statement [29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ( main:2 [ main::entry2#0 print_line_cursor#1 printEntry::entry#0 ] ) always clobbers reg byte a -Statement [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ) always clobbers reg byte a -Statement [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#156 print_char_cursor#227 ] ( main:2 [ main::entry2#0 print_line_cursor#156 print_char_cursor#227 ] ) always clobbers reg byte a -Statement [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#208 ] ( main:2 [ main::entry2#0 print_char_cursor#208 ] ) always clobbers reg byte a -Statement [47] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#157 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#157 ] ) always clobbers reg byte a -Statement [48] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#157 print_char_cursor#229 ] ( main:2 [ main::entry2#0 print_line_cursor#157 print_char_cursor#229 ] ) always clobbers reg byte a +Statement [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#155 ] ) always clobbers reg byte a +Statement [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ( main:2 [ main::entry2#0 print_line_cursor#155 print_char_cursor#226 ] ) always clobbers reg byte a +Statement [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_char_cursor#207 ] ( main:2 [ main::entry2#0 print_char_cursor#207 ] ) always clobbers reg byte a +Statement [47] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ( main:2 [ main::entry2#0 print_line_cursor#1 print_line_cursor#156 ] ) always clobbers reg byte a +Statement [48] (byte*~) print_char_cursor#228 ← (byte*) print_line_cursor#1 [ main::entry2#0 print_line_cursor#156 print_char_cursor#228 ] ( main:2 [ main::entry2#0 print_line_cursor#156 print_char_cursor#228 ] ) always clobbers reg byte a Statement [50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0 [ print_line_cursor#1 printEntry::entry#1 ] ( main:2 [ print_line_cursor#1 printEntry::entry#1 ] ) always clobbers reg byte a -Statement [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#158 ] ( main:2 [ print_line_cursor#1 print_line_cursor#158 ] ) always clobbers reg byte a -Statement [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 [ print_line_cursor#158 print_char_cursor#230 ] ( main:2 [ print_line_cursor#158 print_char_cursor#230 ] ) always clobbers reg byte a -Statement [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_char_cursor#209 ] ( main:2 [ print_char_cursor#209 ] ) always clobbers reg byte a +Statement [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_line_cursor#157 ] ( main:2 [ print_line_cursor#1 print_line_cursor#157 ] ) always clobbers reg byte a +Statement [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 [ print_line_cursor#157 print_char_cursor#229 ] ( main:2 [ print_line_cursor#157 print_char_cursor#229 ] ) always clobbers reg byte a +Statement [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 [ print_char_cursor#208 ] ( main:2 [ print_char_cursor#208 ] ) always clobbers reg byte a Statement [70] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a Statement [72] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:21::memset:66 [ main::entry1#0 main::entry2#0 memset::dst#2 ] main:2::print_cls:42::memset:66 [ main::entry2#0 memset::dst#2 ] main:2::print_cls:63::memset:66 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y Statement [80] *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:37::keyboard_matrix_read:75 [ main::entry2#0 ] main:2::keyboard_key_pressed:58::keyboard_matrix_read:75 [ ] ) always clobbers reg byte a @@ -7094,46 +7074,46 @@ Statement [85] if((byte) 0!=*((byte*) print_str::str#18)) goto print_str::@2 [ p Statement [87] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18) [ print_str::str#18 print_char_cursor#142 ] ( main:2::print_str:23 [ main::entry1#0 main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:35 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:44 [ main::entry2#0 print_str::str#18 print_char_cursor#142 ] main:2::print_str:56 [ print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:98 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:98 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:105 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:105 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:112 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:112 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:119 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:119 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:126 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:126 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:133 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:133 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:140 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:140 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:147 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:147 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:154 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:154 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:161 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:161 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:168 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:168 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:175 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:175 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:30::print_str:182 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] main:2::printEntry:51::print_str:182 [ print_line_cursor#1 printEntry::entry#10 print_str::str#18 print_char_cursor#142 ] ) always clobbers reg byte a reg byte y Statement [92] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte) $28 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a Statement [93] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2 [ print_line_cursor#1 print_char_cursor#143 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:33 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:46 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:49 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::print_ln:54 [ print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_line_cursor#1 print_char_cursor#143 ] main:2::printEntry:51::print_ln:187 [ print_line_cursor#1 print_char_cursor#143 ] ) always clobbers reg byte a -Statement [95] (byte*~) print_line_cursor#173 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#173 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#173 ] main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#173 ] ) always clobbers reg byte a -Statement [97] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [95] (byte*~) print_line_cursor#172 ← (byte*) print_line_cursor#1 [ print_char_cursor#143 print_line_cursor#172 ] ( main:2::print_ln:25 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:28 [ main::entry1#0 main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:33 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:46 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:49 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::print_ln:54 [ print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:103 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:103 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:110 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:110 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:117 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:117 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:124 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:124 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:131 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:131 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:138 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:138 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:145 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:145 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:152 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:152 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:159 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:159 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:166 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:166 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:173 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:173 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:180 [ main::entry2#0 printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:180 [ printEntry::entry#10 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:30::print_ln:187 [ main::entry2#0 print_char_cursor#143 print_line_cursor#172 ] main:2::printEntry:51::print_ln:187 [ print_char_cursor#143 print_line_cursor#172 ] ) always clobbers reg byte a +Statement [97] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#209 printEntry::entry#10 ] ) always clobbers reg byte a Statement [100] (word~) print_word::w#7 ← (word)*((byte**)(byte*) printEntry::entry#10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#7 ] ) always clobbers reg byte a reg byte y -Statement [102] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_line_cursor#159 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#159 print_char_cursor#11 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#159 print_char_cursor#11 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [102] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#158 print_char_cursor#11 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#158 print_char_cursor#11 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#158 print_char_cursor#11 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#210 printEntry::entry#10 ] ) always clobbers reg byte a Statement [107] (word~) print_word::w#8 ← (word)*((byte**)(byte*) printEntry::entry#10 + (byte) 2) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#8 ] ) always clobbers reg byte a reg byte y -Statement [109] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [109] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#159 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#211 printEntry::entry#10 ] ) always clobbers reg byte a Statement [114] (word) print_word::w#2 ← *((word*)(byte*) printEntry::entry#10 + (byte) 4) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#2 ] ) always clobbers reg byte a reg byte y -Statement [116] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [116] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#160 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#212 printEntry::entry#10 ] ) always clobbers reg byte a Statement [121] (word~) print_word::w#10 ← (word)*((word**)(byte*) printEntry::entry#10 + (byte) 6) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#10 ] ) always clobbers reg byte a reg byte y -Statement [123] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [123] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#161 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#213 printEntry::entry#10 ] ) always clobbers reg byte a Statement [128] (byte) print_byte::b#2 ← *((byte*) printEntry::entry#10 + (byte) 8) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#2 ] ) always clobbers reg byte a reg byte y -Statement [130] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [130] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#162 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#214 printEntry::entry#10 ] ) always clobbers reg byte a Statement [135] (byte) print_byte::b#3 ← *((byte*) printEntry::entry#10 + (byte) 9) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#3 ] ) always clobbers reg byte a reg byte y -Statement [137] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [137] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#163 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#215 printEntry::entry#10 ] ) always clobbers reg byte a Statement [142] (byte) print_byte::b#4 ← *((byte*) printEntry::entry#10 + (byte) $a) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#4 ] ) always clobbers reg byte a reg byte y -Statement [144] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [144] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#164 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#216 printEntry::entry#10 ] ) always clobbers reg byte a Statement [149] (byte) print_byte::b#5 ← *((byte*) printEntry::entry#10 + (byte) $b) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#5 ] ) always clobbers reg byte a reg byte y -Statement [151] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [151] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#165 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#217 printEntry::entry#10 ] ) always clobbers reg byte a Statement [156] (word) print_word::w#4 ← *((word*)(byte*) printEntry::entry#10 + (byte) $c) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_word::w#4 ] ) always clobbers reg byte a reg byte y -Statement [158] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [158] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#166 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#218 printEntry::entry#10 ] ) always clobbers reg byte a Statement [163] (byte) print_byte::b#6 ← *((byte*) printEntry::entry#10 + (byte) $e) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#6 ] ) always clobbers reg byte a reg byte y -Statement [165] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [165] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#167 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#219 printEntry::entry#10 ] ) always clobbers reg byte a Statement [170] (byte) print_byte::b#7 ← *((byte*) printEntry::entry#10 + (byte) $f) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#7 ] ) always clobbers reg byte a reg byte y -Statement [172] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [172] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#168 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#220 printEntry::entry#10 ] ) always clobbers reg byte a Statement [177] (byte) print_byte::b#8 ← *((byte*) printEntry::entry#10 + (byte) $10) [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 printEntry::entry#10 print_byte::b#8 ] ) always clobbers reg byte a reg byte y -Statement [179] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#170 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#170 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#170 printEntry::entry#10 ] ) always clobbers reg byte a -Statement [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#222 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#222 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#222 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [179] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#169 printEntry::entry#10 ] ) always clobbers reg byte a +Statement [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#221 printEntry::entry#10 ] ) always clobbers reg byte a Statement [184] (byte) print_byte::b#9 ← *((byte*) printEntry::entry#10 + (byte) $11) [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ( main:2::printEntry:30 [ main::entry2#0 print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] main:2::printEntry:51 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#9 ] ) always clobbers reg byte a reg byte y -Statement [186] (byte*~) print_line_cursor#171 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#171 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#171 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#171 ] ) always clobbers reg byte a +Statement [186] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 [ print_char_cursor#11 print_line_cursor#170 ] ( main:2::printEntry:30 [ main::entry2#0 print_char_cursor#11 print_line_cursor#170 ] main:2::printEntry:51 [ print_char_cursor#11 print_line_cursor#170 ] ) always clobbers reg byte a Statement [190] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte) 4 [ print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#145 print_byte::$0 ] ) always clobbers reg byte a Statement [193] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte) $f [ print_char_cursor#11 print_byte::$2 ] ( main:2::printEntry:30::print_byte:129 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:129 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:136 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:136 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:143 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:143 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:150 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:150 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:164 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:164 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:171 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:171 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:178 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:178 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_byte:185 [ main::entry2#0 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_byte:185 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:203 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:203 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:101::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:101::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:108::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:108::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:115::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:115::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:122::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:122::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:30::print_word:157::print_byte:205 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] main:2::printEntry:51::print_word:157::print_byte:205 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a Statement [198] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#2 [ print_char_cursor#82 ] ( main:2::printEntry:30::print_byte:129::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:129::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:136::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:136::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:143::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:143::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:150::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:150::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:164::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:164::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:171::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:171::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:178::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:178::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:185::print_char:192 [ main::entry2#0 print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:185::print_char:192 [ print_line_cursor#1 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:203::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:203::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:205::print_char:192 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:205::print_char:192 [ print_line_cursor#1 printEntry::entry#10 print_byte::b#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:129::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:129::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:136::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:136::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:143::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:143::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:150::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:150::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:164::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:164::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:171::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:171::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:178::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_byte:178::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_byte:185::print_char:195 [ main::entry2#0 print_line_cursor#1 print_char_cursor#82 ] main:2::printEntry:51::print_byte:185::print_char:195 [ print_line_cursor#1 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:203::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:203::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_word::w#5 print_char_cursor#82 ] main:2::printEntry:30::print_word:101::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:101::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:108::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:108::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:115::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:115::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:122::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:122::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:30::print_word:157::print_byte:205::print_char:195 [ main::entry2#0 print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] main:2::printEntry:51::print_word:157::print_byte:205::print_char:195 [ print_line_cursor#1 printEntry::entry#10 print_char_cursor#82 ] ) always clobbers reg byte y @@ -7171,11 +7151,11 @@ Statement [258] *((const byte*) CIA1_PORT_A_DDR) ← (byte) $ff [ ] ( main:2::ke Statement [259] *((const byte*) CIA1_PORT_B_DDR) ← (byte) 0 [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a Potential registers zp[2]:2 [ memset::dst#2 memset::dst#1 ] : zp[2]:2 , Potential registers zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] : zp[2]:4 , -Potential registers zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] : zp[2]:6 , +Potential registers zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] : zp[2]:6 , Potential registers zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 ] : zp[2]:8 , Potential registers zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] : zp[1]:10 , reg byte x , Potential registers zp[1]:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] : zp[2]:12 , +Potential registers zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] : zp[2]:12 , Potential registers zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] : zp[2]:14 , Potential registers zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] : zp[2]:16 , Potential registers zp[1]:18 [ initEntry::n#10 ] : zp[1]:18 , reg byte x , @@ -7215,7 +7195,7 @@ Potential registers zp[1]:65 [ initEntry::$25 ] : zp[1]:65 , reg byte a , reg by Potential registers zp[1]:66 [ mul8u::$1 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 142.16: zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] 142: zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] 1.08: zp[2]:44 [ print_line_cursor#1 ] +Uplift Scope [] 142.16: zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] 142: zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] 1.08: zp[2]:44 [ print_line_cursor#1 ] Uplift Scope [mul8u] 38.29: zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 26.71: zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] 22: zp[1]:66 [ mul8u::$1 ] 20.67: zp[1]:19 [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] 4: zp[2]:24 [ mul8u::return#2 ] 4: zp[2]:30 [ mul8u::return#3 ] Uplift Scope [initEntry] 8.51: zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] 4: zp[2]:52 [ initEntry::$5 ] 4: zp[1]:56 [ initEntry::$9 ] 4: zp[1]:57 [ initEntry::$11 ] 4: zp[1]:58 [ initEntry::$13 ] 4: zp[1]:59 [ initEntry::$15 ] 4: zp[2]:60 [ initEntry::$17 ] 4: zp[1]:62 [ initEntry::$19 ] 4: zp[1]:63 [ initEntry::$21 ] 4: zp[1]:64 [ initEntry::$23 ] 4: zp[1]:65 [ initEntry::$25 ] 2: zp[2]:48 [ initEntry::$1 ] 2: zp[2]:50 [ initEntry::$3 ] 2: zp[2]:54 [ initEntry::$7 ] 0.68: zp[1]:18 [ initEntry::n#10 ] Uplift Scope [print_byte] 46: zp[1]:10 [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:46 [ print_byte::$0 ] 4: zp[1]:47 [ print_byte::$2 ] @@ -7232,7 +7212,7 @@ Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [keyboard_init] -Uplifting [] best 6192 combination zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] zp[2]:44 [ print_line_cursor#1 ] +Uplifting [] best 6192 combination zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] zp[2]:44 [ print_line_cursor#1 ] Uplifting [mul8u] best 6096 combination zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] zp[2]:24 [ mul8u::return#2 ] zp[2]:30 [ mul8u::return#3 ] Uplifting [initEntry] best 6080 combination zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] zp[2]:52 [ initEntry::$5 ] reg byte a [ initEntry::$9 ] reg byte a [ initEntry::$11 ] reg byte a [ initEntry::$13 ] reg byte a [ initEntry::$15 ] zp[2]:60 [ initEntry::$17 ] zp[1]:62 [ initEntry::$19 ] zp[1]:63 [ initEntry::$21 ] zp[1]:64 [ initEntry::$23 ] zp[1]:65 [ initEntry::$25 ] zp[2]:48 [ initEntry::$1 ] zp[2]:50 [ initEntry::$3 ] zp[2]:54 [ initEntry::$7 ] zp[1]:18 [ initEntry::n#10 ] Limited combination testing to 100 combinations of 131072 possible. @@ -7267,17 +7247,17 @@ Coalescing zero page register [ zp[2]:32 [ main::fileEntry2_$0 ] ] with [ zp[2]: Coalescing zero page register [ zp[2]:8 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 main::entry1#0 ] ] with [ zp[2]:26 [ main::fileEntry1_$0 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp[2]:32 [ main::fileEntry2_$0 main::entry2#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 ] ] with [ zp[2]:2 [ memset::dst#2 memset::dst#1 ] ] -Coalescing zero page register [ zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] ] with [ zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] ] -Coalescing zero page register [ zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] ] with [ zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] ] +Coalescing zero page register [ zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 ] ] with [ zp[2]:6 [ print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] ] +Coalescing zero page register [ zp[2]:16 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 ] ] with [ zp[2]:12 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] ] Coalescing zero page register [ zp[2]:44 [ print_line_cursor#1 ] ] with [ zp[2]:22 [ mul8u::mb#2 mul8u::mb#1 ] ] -Coalescing zero page register [ zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 ] ] with [ zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] ] +Coalescing zero page register [ zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 ] ] with [ zp[2]:4 [ print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] ] Coalescing zero page register [ zp[2]:48 [ initEntry::$1 ] ] with [ zp[2]:44 [ print_line_cursor#1 mul8u::mb#2 mul8u::mb#1 ] ] -Coalescing zero page register [ zp[2]:50 [ initEntry::$3 ] ] with [ zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] ] +Coalescing zero page register [ zp[2]:50 [ initEntry::$3 ] ] with [ zp[2]:14 [ print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] ] Allocated (was zp[2]:8) zp[2]:2 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 main::entry1#0 main::fileEntry1_$0 ] -Allocated (was zp[2]:16) zp[2]:4 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] +Allocated (was zp[2]:16) zp[2]:4 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] Allocated (was zp[2]:20) zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 main::fileEntry2_$0 main::entry2#0 ] Allocated (was zp[2]:48) zp[2]:8 [ initEntry::$1 print_line_cursor#1 mul8u::mb#2 mul8u::mb#1 ] -Allocated (was zp[2]:50) zp[2]:10 [ initEntry::$3 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] +Allocated (was zp[2]:50) zp[2]:10 [ initEntry::$3 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] Allocated (was zp[2]:52) zp[2]:12 [ initEntry::$5 ] Allocated (was zp[2]:54) zp[2]:14 [ initEntry::$7 ] Allocated (was zp[2]:60) zp[2]:16 [ initEntry::$17 ] @@ -7479,12 +7459,12 @@ main: { jmp __b12 // main::@12 __b12: - // [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -7492,8 +7472,8 @@ main: { // [28] call print_ln // [90] phi from main::@12 to print_ln [phi:main::@12->print_ln] print_ln_from___b12: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#226 [phi:main::@12->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#155 [phi:main::@12->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#225 [phi:main::@12->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#154 [phi:main::@12->print_ln#1] -- register_copy jsr print_ln jmp __b13 // main::@13 @@ -7507,12 +7487,12 @@ main: { jmp __b14 // main::@14 __b14: - // [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -7520,13 +7500,13 @@ main: { // [33] call print_ln // [90] phi from main::@14 to print_ln [phi:main::@14->print_ln] print_ln_from___b14: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#227 [phi:main::@14->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#156 [phi:main::@14->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#226 [phi:main::@14->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#155 [phi:main::@14->print_ln#1] -- register_copy jsr print_ln jmp __b15 // main::@15 __b15: - // [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -7534,7 +7514,7 @@ main: { // [35] call print_str // [83] phi from main::@15 to print_str [phi:main::@15->print_str] print_str_from___b15: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#208 [phi:main::@15->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#207 [phi:main::@15->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) main::str1 [phi:main::@15->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b19: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#229 [phi:main::@19->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#157 [phi:main::@19->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#228 [phi:main::@19->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#156 [phi:main::@19->print_ln#1] -- register_copy jsr print_ln jmp __b20 // main::@20 @@ -7637,12 +7617,12 @@ main: { jmp __b21 // main::@21 __b21: - // [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -7650,13 +7630,13 @@ main: { // [54] call print_ln // [90] phi from main::@21 to print_ln [phi:main::@21->print_ln] print_ln_from___b21: - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#230 [phi:main::@21->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#158 [phi:main::@21->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#229 [phi:main::@21->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#157 [phi:main::@21->print_ln#1] -- register_copy jsr print_ln jmp __b22 // main::@22 __b22: - // [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -7664,7 +7644,7 @@ main: { // [56] call print_str // [83] phi from main::@22 to print_str [phi:main::@22->print_str] print_str_from___b22: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#209 [phi:main::@22->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#208 [phi:main::@22->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) main::str1 [phi:main::@22->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_printEntry: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#210 [phi:printEntry->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#209 [phi:printEntry->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str [phi:printEntry->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b14: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@14->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#159 [phi:printEntry::@14->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#158 [phi:printEntry::@14->print_ln#1] -- register_copy jsr print_ln jmp __b15 // printEntry::@15 __b15: - // [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -7959,7 +7939,7 @@ printEntry: { // [105] call print_str // [83] phi from printEntry::@15 to print_str [phi:printEntry::@15->print_str] print_str_from___b15: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#211 [phi:printEntry::@15->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#210 [phi:printEntry::@15->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str1 [phi:printEntry::@15->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b16: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@16->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#160 [phi:printEntry::@16->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#159 [phi:printEntry::@16->print_ln#1] -- register_copy jsr print_ln jmp __b17 // printEntry::@17 __b17: - // [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8011,7 +7991,7 @@ printEntry: { // [112] call print_str // [83] phi from printEntry::@17 to print_str [phi:printEntry::@17->print_str] print_str_from___b17: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#212 [phi:printEntry::@17->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#211 [phi:printEntry::@17->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str2 [phi:printEntry::@17->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b18: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@18->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#161 [phi:printEntry::@18->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#160 [phi:printEntry::@18->print_ln#1] -- register_copy jsr print_ln jmp __b19 // printEntry::@19 __b19: - // [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8063,7 +8043,7 @@ printEntry: { // [119] call print_str // [83] phi from printEntry::@19 to print_str [phi:printEntry::@19->print_str] print_str_from___b19: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#213 [phi:printEntry::@19->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#212 [phi:printEntry::@19->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str3 [phi:printEntry::@19->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b20: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@20->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#162 [phi:printEntry::@20->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#161 [phi:printEntry::@20->print_ln#1] -- register_copy jsr print_ln jmp __b21 // printEntry::@21 __b21: - // [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8115,7 +8095,7 @@ printEntry: { // [126] call print_str // [83] phi from printEntry::@21 to print_str [phi:printEntry::@21->print_str] print_str_from___b21: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#214 [phi:printEntry::@21->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#213 [phi:printEntry::@21->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str4 [phi:printEntry::@21->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b22: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@22->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#163 [phi:printEntry::@22->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#162 [phi:printEntry::@22->print_ln#1] -- register_copy jsr print_ln jmp __b23 // printEntry::@23 __b23: - // [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8165,7 +8145,7 @@ printEntry: { // [133] call print_str // [83] phi from printEntry::@23 to print_str [phi:printEntry::@23->print_str] print_str_from___b23: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#215 [phi:printEntry::@23->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#214 [phi:printEntry::@23->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str5 [phi:printEntry::@23->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b24: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@24->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#164 [phi:printEntry::@24->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#163 [phi:printEntry::@24->print_ln#1] -- register_copy jsr print_ln jmp __b25 // printEntry::@25 __b25: - // [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8215,7 +8195,7 @@ printEntry: { // [140] call print_str // [83] phi from printEntry::@25 to print_str [phi:printEntry::@25->print_str] print_str_from___b25: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#216 [phi:printEntry::@25->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#215 [phi:printEntry::@25->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str6 [phi:printEntry::@25->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b26: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@26->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#165 [phi:printEntry::@26->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#164 [phi:printEntry::@26->print_ln#1] -- register_copy jsr print_ln jmp __b27 // printEntry::@27 __b27: - // [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8265,7 +8245,7 @@ printEntry: { // [147] call print_str // [83] phi from printEntry::@27 to print_str [phi:printEntry::@27->print_str] print_str_from___b27: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#217 [phi:printEntry::@27->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#216 [phi:printEntry::@27->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str7 [phi:printEntry::@27->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b28: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@28->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#166 [phi:printEntry::@28->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#165 [phi:printEntry::@28->print_ln#1] -- register_copy jsr print_ln jmp __b29 // printEntry::@29 __b29: - // [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8315,7 +8295,7 @@ printEntry: { // [154] call print_str // [83] phi from printEntry::@29 to print_str [phi:printEntry::@29->print_str] print_str_from___b29: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#218 [phi:printEntry::@29->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#217 [phi:printEntry::@29->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str8 [phi:printEntry::@29->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b30: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@30->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#167 [phi:printEntry::@30->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#166 [phi:printEntry::@30->print_ln#1] -- register_copy jsr print_ln jmp __b31 // printEntry::@31 __b31: - // [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8367,7 +8347,7 @@ printEntry: { // [161] call print_str // [83] phi from printEntry::@31 to print_str [phi:printEntry::@31->print_str] print_str_from___b31: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#219 [phi:printEntry::@31->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#218 [phi:printEntry::@31->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str9 [phi:printEntry::@31->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b32: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@32->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#168 [phi:printEntry::@32->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#167 [phi:printEntry::@32->print_ln#1] -- register_copy jsr print_ln jmp __b33 // printEntry::@33 __b33: - // [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8417,7 +8397,7 @@ printEntry: { // [168] call print_str // [83] phi from printEntry::@33 to print_str [phi:printEntry::@33->print_str] print_str_from___b33: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#220 [phi:printEntry::@33->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#219 [phi:printEntry::@33->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str10 [phi:printEntry::@33->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b34: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@34->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#169 [phi:printEntry::@34->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#168 [phi:printEntry::@34->print_ln#1] -- register_copy jsr print_ln jmp __b35 // printEntry::@35 __b35: - // [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8467,7 +8447,7 @@ printEntry: { // [175] call print_str // [83] phi from printEntry::@35 to print_str [phi:printEntry::@35->print_str] print_str_from___b35: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#221 [phi:printEntry::@35->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#220 [phi:printEntry::@35->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str11 [phi:printEntry::@35->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b36: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@36->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#170 [phi:printEntry::@36->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#169 [phi:printEntry::@36->print_ln#1] -- register_copy jsr print_ln jmp __b37 // printEntry::@37 __b37: - // [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -8517,7 +8497,7 @@ printEntry: { // [182] call print_str // [83] phi from printEntry::@37 to print_str [phi:printEntry::@37->print_str] print_str_from___b37: - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#222 [phi:printEntry::@37->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#221 [phi:printEntry::@37->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str12 [phi:printEntry::@37->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from___b38: // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@38->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#171 [phi:printEntry::@38->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#170 [phi:printEntry::@38->print_ln#1] -- register_copy jsr print_ln jmp __breturn // printEntry::@return @@ -9731,6 +9711,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#143 print_char_cursor zp[2]:4 9.800000000000002 (byte*) print_char_cursor#145 print_char_cursor zp[2]:4 7.333333333333334 (byte*) print_char_cursor#164 print_char_cursor zp[2]:4 32.0 +(byte*~) print_char_cursor#207 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#208 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#209 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#210 print_char_cursor zp[2]:4 4.0 @@ -9745,21 +9726,21 @@ FINAL SYMBOL TABLE (byte*~) print_char_cursor#219 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#220 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#221 print_char_cursor zp[2]:4 4.0 -(byte*~) print_char_cursor#222 print_char_cursor zp[2]:4 4.0 +(byte*~) print_char_cursor#225 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#226 print_char_cursor zp[2]:4 4.0 -(byte*~) print_char_cursor#227 print_char_cursor zp[2]:4 4.0 +(byte*~) print_char_cursor#228 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#229 print_char_cursor zp[2]:4 4.0 -(byte*~) print_char_cursor#230 print_char_cursor zp[2]:4 4.0 (byte*) print_char_cursor#82 print_char_cursor zp[2]:4 4.0 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp[2]:8 1.0824742268041243 +(byte*~) print_line_cursor#154 print_line_cursor_1 zp[2]:10 2.0 (byte*~) print_line_cursor#155 print_line_cursor_1 zp[2]:10 2.0 (byte*~) print_line_cursor#156 print_line_cursor_1 zp[2]:10 2.0 (byte*~) print_line_cursor#157 print_line_cursor_1 zp[2]:10 2.0 -(byte*~) print_line_cursor#158 print_line_cursor_1 zp[2]:10 2.0 +(byte*~) print_line_cursor#158 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#159 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#160 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#161 print_line_cursor_1 zp[2]:10 4.0 @@ -9772,8 +9753,7 @@ FINAL SYMBOL TABLE (byte*~) print_line_cursor#168 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#169 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#170 print_line_cursor_1 zp[2]:10 4.0 -(byte*~) print_line_cursor#171 print_line_cursor_1 zp[2]:10 4.0 -(byte*~) print_line_cursor#173 print_line_cursor_1 zp[2]:10 22.0 +(byte*~) print_line_cursor#172 print_line_cursor_1 zp[2]:10 22.0 (byte*) print_line_cursor#32 print_line_cursor_1 zp[2]:10 24.0 (byte*) print_line_cursor#63 print_line_cursor_1 zp[2]:10 36.0 (void()) print_ln() @@ -9803,7 +9783,7 @@ FINAL SYMBOL TABLE zp[2]:2 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 main::entry1#0 main::fileEntry1_$0 ] reg byte x [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp[2]:4 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] +zp[2]:4 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] reg byte x [ initEntry::n#10 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 main::fileEntry2_$0 main::entry2#0 ] @@ -9818,7 +9798,7 @@ reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] zp[2]:8 [ initEntry::$1 print_line_cursor#1 mul8u::mb#2 mul8u::mb#1 ] -zp[2]:10 [ initEntry::$3 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] +zp[2]:10 [ initEntry::$3 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] zp[2]:12 [ initEntry::$5 ] zp[2]:14 [ initEntry::$7 ] reg byte a [ initEntry::$9 ] @@ -10003,12 +9983,12 @@ main: { sta.z print_line_cursor_1+1 jsr print_ln // main::@12 - // [26] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [26] (byte*~) print_line_cursor#154 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [27] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [27] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10016,8 +9996,8 @@ main: { // print_ln() // [28] call print_ln // [90] phi from main::@12 to print_ln [phi:main::@12->print_ln] - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#226 [phi:main::@12->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#155 [phi:main::@12->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#225 [phi:main::@12->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#154 [phi:main::@12->print_ln#1] -- register_copy jsr print_ln // main::@13 // printEntry(entry1) @@ -10027,12 +10007,12 @@ main: { // [96] phi (byte*) printEntry::entry#10 = (byte*) printEntry::entry#0 [phi:main::@13->printEntry#0] -- register_copy jsr printEntry // main::@14 - // [31] (byte*~) print_line_cursor#156 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [31] (byte*~) print_line_cursor#155 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [32] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [32] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10040,11 +10020,11 @@ main: { // print_ln() // [33] call print_ln // [90] phi from main::@14 to print_ln [phi:main::@14->print_ln] - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#227 [phi:main::@14->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#156 [phi:main::@14->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#226 [phi:main::@14->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#155 [phi:main::@14->print_ln#1] -- register_copy jsr print_ln // main::@15 - // [34] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [34] (byte*~) print_char_cursor#207 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10052,7 +10032,7 @@ main: { // print_str("- press space -") // [35] call print_str // [83] phi from main::@15 to print_str [phi:main::@15->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#208 [phi:main::@15->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#207 [phi:main::@15->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) main::str1 [phi:main::@15->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#229 [phi:main::@19->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#157 [phi:main::@19->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#228 [phi:main::@19->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#156 [phi:main::@19->print_ln#1] -- register_copy jsr print_ln // main::@20 // printEntry(entry2) @@ -10137,12 +10117,12 @@ main: { // [96] phi (byte*) printEntry::entry#10 = (byte*) printEntry::entry#1 [phi:main::@20->printEntry#0] -- register_copy jsr printEntry // main::@21 - // [52] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [52] (byte*~) print_line_cursor#157 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 sta.z print_line_cursor_1+1 - // [53] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [53] (byte*~) print_char_cursor#229 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10150,11 +10130,11 @@ main: { // print_ln() // [54] call print_ln // [90] phi from main::@21 to print_ln [phi:main::@21->print_ln] - // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#230 [phi:main::@21->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#158 [phi:main::@21->print_ln#1] -- register_copy + // [90] phi (byte*) print_char_cursor#143 = (byte*~) print_char_cursor#229 [phi:main::@21->print_ln#0] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#157 [phi:main::@21->print_ln#1] -- register_copy jsr print_ln // main::@22 - // [55] (byte*~) print_char_cursor#209 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [55] (byte*~) print_char_cursor#208 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10162,7 +10142,7 @@ main: { // print_str("- press space -") // [56] call print_str // [83] phi from main::@22 to print_str [phi:main::@22->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#209 [phi:main::@22->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#208 [phi:main::@22->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) main::str1 [phi:main::@22->print_str#1] -- pbuz1=pbuc1 lda #print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#210 [phi:printEntry->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#209 [phi:printEntry->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str [phi:printEntry->print_str#1] -- pbuz1=pbuc1 lda #print_word#0] -- register_copy jsr print_word // printEntry::@14 - // [102] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [102] (byte*~) print_line_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10423,10 +10403,10 @@ printEntry: { // [103] call print_ln // [90] phi from printEntry::@14 to print_ln [phi:printEntry::@14->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@14->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#159 [phi:printEntry::@14->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#158 [phi:printEntry::@14->print_ln#1] -- register_copy jsr print_ln // printEntry::@15 - // [104] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [104] (byte*~) print_char_cursor#210 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10434,7 +10414,7 @@ printEntry: { // print_str("bufedit ") // [105] call print_str // [83] phi from printEntry::@15 to print_str [phi:printEntry::@15->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#211 [phi:printEntry::@15->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#210 [phi:printEntry::@15->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str1 [phi:printEntry::@15->print_str#1] -- pbuz1=pbuc1 lda #print_word#0] -- register_copy jsr print_word // printEntry::@16 - // [109] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [109] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10466,10 +10446,10 @@ printEntry: { // [110] call print_ln // [90] phi from printEntry::@16 to print_ln [phi:printEntry::@16->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@16->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#160 [phi:printEntry::@16->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#159 [phi:printEntry::@16->print_ln#1] -- register_copy jsr print_ln // printEntry::@17 - // [111] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [111] (byte*~) print_char_cursor#211 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10477,7 +10457,7 @@ printEntry: { // print_str("tslen ") // [112] call print_str // [83] phi from printEntry::@17 to print_str [phi:printEntry::@17->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#212 [phi:printEntry::@17->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#211 [phi:printEntry::@17->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str2 [phi:printEntry::@17->print_str#1] -- pbuz1=pbuc1 lda #print_word#0] -- register_copy jsr print_word // printEntry::@18 - // [116] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [116] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10509,10 +10489,10 @@ printEntry: { // [117] call print_ln // [90] phi from printEntry::@18 to print_ln [phi:printEntry::@18->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@18->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#161 [phi:printEntry::@18->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#160 [phi:printEntry::@18->print_ln#1] -- register_copy jsr print_ln // printEntry::@19 - // [118] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [118] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10520,7 +10500,7 @@ printEntry: { // print_str("tsorder ") // [119] call print_str // [83] phi from printEntry::@19 to print_str [phi:printEntry::@19->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#213 [phi:printEntry::@19->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#212 [phi:printEntry::@19->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str3 [phi:printEntry::@19->print_str#1] -- pbuz1=pbuc1 lda #print_word#0] -- register_copy jsr print_word // printEntry::@20 - // [123] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [123] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10552,10 +10532,10 @@ printEntry: { // [124] call print_ln // [90] phi from printEntry::@20 to print_ln [phi:printEntry::@20->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@20->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#162 [phi:printEntry::@20->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#161 [phi:printEntry::@20->print_ln#1] -- register_copy jsr print_ln // printEntry::@21 - // [125] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [125] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10563,7 +10543,7 @@ printEntry: { // print_str("tlastlink ") // [126] call print_str // [83] phi from printEntry::@21 to print_str [phi:printEntry::@21->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#214 [phi:printEntry::@21->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#213 [phi:printEntry::@21->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str4 [phi:printEntry::@21->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@22 - // [130] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [130] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10593,10 +10573,10 @@ printEntry: { // [131] call print_ln // [90] phi from printEntry::@22 to print_ln [phi:printEntry::@22->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@22->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#163 [phi:printEntry::@22->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#162 [phi:printEntry::@22->print_ln#1] -- register_copy jsr print_ln // printEntry::@23 - // [132] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [132] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10604,7 +10584,7 @@ printEntry: { // print_str("slastlink ") // [133] call print_str // [83] phi from printEntry::@23 to print_str [phi:printEntry::@23->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#215 [phi:printEntry::@23->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#214 [phi:printEntry::@23->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str5 [phi:printEntry::@23->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@24 - // [137] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [137] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10634,10 +10614,10 @@ printEntry: { // [138] call print_ln // [90] phi from printEntry::@24 to print_ln [phi:printEntry::@24->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@24->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#164 [phi:printEntry::@24->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#163 [phi:printEntry::@24->print_ln#1] -- register_copy jsr print_ln // printEntry::@25 - // [139] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [139] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10645,7 +10625,7 @@ printEntry: { // print_str("bflag ") // [140] call print_str // [83] phi from printEntry::@25 to print_str [phi:printEntry::@25->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#216 [phi:printEntry::@25->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#215 [phi:printEntry::@25->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str6 [phi:printEntry::@25->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@26 - // [144] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [144] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10675,10 +10655,10 @@ printEntry: { // [145] call print_ln // [90] phi from printEntry::@26 to print_ln [phi:printEntry::@26->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@26->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#165 [phi:printEntry::@26->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#164 [phi:printEntry::@26->print_ln#1] -- register_copy jsr print_ln // printEntry::@27 - // [146] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [146] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10686,7 +10666,7 @@ printEntry: { // print_str("berror ") // [147] call print_str // [83] phi from printEntry::@27 to print_str [phi:printEntry::@27->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#217 [phi:printEntry::@27->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#216 [phi:printEntry::@27->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str7 [phi:printEntry::@27->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@28 - // [151] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [151] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10716,10 +10696,10 @@ printEntry: { // [152] call print_ln // [90] phi from printEntry::@28 to print_ln [phi:printEntry::@28->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@28->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#166 [phi:printEntry::@28->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#165 [phi:printEntry::@28->print_ln#1] -- register_copy jsr print_ln // printEntry::@29 - // [153] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [153] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10727,7 +10707,7 @@ printEntry: { // print_str("ucross ") // [154] call print_str // [83] phi from printEntry::@29 to print_str [phi:printEntry::@29->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#218 [phi:printEntry::@29->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#217 [phi:printEntry::@29->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str8 [phi:printEntry::@29->print_str#1] -- pbuz1=pbuc1 lda #print_word#0] -- register_copy jsr print_word // printEntry::@30 - // [158] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [158] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10759,10 +10739,10 @@ printEntry: { // [159] call print_ln // [90] phi from printEntry::@30 to print_ln [phi:printEntry::@30->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@30->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#167 [phi:printEntry::@30->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#166 [phi:printEntry::@30->print_ln#1] -- register_copy jsr print_ln // printEntry::@31 - // [160] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [160] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10770,7 +10750,7 @@ printEntry: { // print_str("baddrlo ") // [161] call print_str // [83] phi from printEntry::@31 to print_str [phi:printEntry::@31->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#219 [phi:printEntry::@31->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#218 [phi:printEntry::@31->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str9 [phi:printEntry::@31->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@32 - // [165] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [165] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10800,10 +10780,10 @@ printEntry: { // [166] call print_ln // [90] phi from printEntry::@32 to print_ln [phi:printEntry::@32->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@32->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#168 [phi:printEntry::@32->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#167 [phi:printEntry::@32->print_ln#1] -- register_copy jsr print_ln // printEntry::@33 - // [167] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [167] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10811,7 +10791,7 @@ printEntry: { // print_str("baddrhi ") // [168] call print_str // [83] phi from printEntry::@33 to print_str [phi:printEntry::@33->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#220 [phi:printEntry::@33->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#219 [phi:printEntry::@33->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str10 [phi:printEntry::@33->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@34 - // [172] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [172] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10841,10 +10821,10 @@ printEntry: { // [173] call print_ln // [90] phi from printEntry::@34 to print_ln [phi:printEntry::@34->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@34->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#169 [phi:printEntry::@34->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#168 [phi:printEntry::@34->print_ln#1] -- register_copy jsr print_ln // printEntry::@35 - // [174] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [174] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10852,7 +10832,7 @@ printEntry: { // print_str("thi ") // [175] call print_str // [83] phi from printEntry::@35 to print_str [phi:printEntry::@35->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#221 [phi:printEntry::@35->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#220 [phi:printEntry::@35->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str11 [phi:printEntry::@35->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@36 - // [179] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [179] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10882,10 +10862,10 @@ printEntry: { // [180] call print_ln // [90] phi from printEntry::@36 to print_ln [phi:printEntry::@36->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@36->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#170 [phi:printEntry::@36->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#169 [phi:printEntry::@36->print_ln#1] -- register_copy jsr print_ln // printEntry::@37 - // [181] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [181] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -10893,7 +10873,7 @@ printEntry: { // print_str("tlo ") // [182] call print_str // [83] phi from printEntry::@37 to print_str [phi:printEntry::@37->print_str] - // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#222 [phi:printEntry::@37->print_str#0] -- register_copy + // [83] phi (byte*) print_char_cursor#164 = (byte*~) print_char_cursor#221 [phi:printEntry::@37->print_str#0] -- register_copy // [83] phi (byte*) print_str::str#20 = (const string) printEntry::str12 [phi:printEntry::@37->print_str#1] -- pbuz1=pbuc1 lda #print_byte#1] -- register_copy jsr print_byte // printEntry::@38 - // [186] (byte*~) print_line_cursor#171 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [186] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_line_cursor_1 lda.z print_line_cursor+1 @@ -10923,7 +10903,7 @@ printEntry: { // [187] call print_ln // [90] phi from printEntry::@38 to print_ln [phi:printEntry::@38->print_ln] // [90] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#11 [phi:printEntry::@38->print_ln#0] -- register_copy - // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#171 [phi:printEntry::@38->print_ln#1] -- register_copy + // [90] phi (byte*) print_line_cursor#63 = (byte*~) print_line_cursor#170 [phi:printEntry::@38->print_ln#1] -- register_copy jsr print_ln // printEntry::@return // } diff --git a/src/test/ref/semi-struct-2.sym b/src/test/ref/semi-struct-2.sym index c21efb93f..ce9fd2770 100644 --- a/src/test/ref/semi-struct-2.sym +++ b/src/test/ref/semi-struct-2.sym @@ -318,6 +318,7 @@ (byte*) print_char_cursor#143 print_char_cursor zp[2]:4 9.800000000000002 (byte*) print_char_cursor#145 print_char_cursor zp[2]:4 7.333333333333334 (byte*) print_char_cursor#164 print_char_cursor zp[2]:4 32.0 +(byte*~) print_char_cursor#207 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#208 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#209 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#210 print_char_cursor zp[2]:4 4.0 @@ -332,21 +333,21 @@ (byte*~) print_char_cursor#219 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#220 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#221 print_char_cursor zp[2]:4 4.0 -(byte*~) print_char_cursor#222 print_char_cursor zp[2]:4 4.0 +(byte*~) print_char_cursor#225 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#226 print_char_cursor zp[2]:4 4.0 -(byte*~) print_char_cursor#227 print_char_cursor zp[2]:4 4.0 +(byte*~) print_char_cursor#228 print_char_cursor zp[2]:4 4.0 (byte*~) print_char_cursor#229 print_char_cursor zp[2]:4 4.0 -(byte*~) print_char_cursor#230 print_char_cursor zp[2]:4 4.0 (byte*) print_char_cursor#82 print_char_cursor zp[2]:4 4.0 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp[2]:8 1.0824742268041243 +(byte*~) print_line_cursor#154 print_line_cursor_1 zp[2]:10 2.0 (byte*~) print_line_cursor#155 print_line_cursor_1 zp[2]:10 2.0 (byte*~) print_line_cursor#156 print_line_cursor_1 zp[2]:10 2.0 (byte*~) print_line_cursor#157 print_line_cursor_1 zp[2]:10 2.0 -(byte*~) print_line_cursor#158 print_line_cursor_1 zp[2]:10 2.0 +(byte*~) print_line_cursor#158 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#159 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#160 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#161 print_line_cursor_1 zp[2]:10 4.0 @@ -359,8 +360,7 @@ (byte*~) print_line_cursor#168 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#169 print_line_cursor_1 zp[2]:10 4.0 (byte*~) print_line_cursor#170 print_line_cursor_1 zp[2]:10 4.0 -(byte*~) print_line_cursor#171 print_line_cursor_1 zp[2]:10 4.0 -(byte*~) print_line_cursor#173 print_line_cursor_1 zp[2]:10 22.0 +(byte*~) print_line_cursor#172 print_line_cursor_1 zp[2]:10 22.0 (byte*) print_line_cursor#32 print_line_cursor_1 zp[2]:10 24.0 (byte*) print_line_cursor#63 print_line_cursor_1 zp[2]:10 36.0 (void()) print_ln() @@ -390,7 +390,7 @@ zp[2]:2 [ printEntry::entry#10 printEntry::entry#0 printEntry::entry#1 main::entry1#0 main::fileEntry1_$0 ] reg byte x [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp[2]:4 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#1 print_char_cursor#226 print_char_cursor#227 print_char_cursor#229 print_char_cursor#230 print_char_cursor#11 ] +zp[2]:4 [ initEntry::entry#10 initEntry::entry#0 initEntry::entry#1 print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#207 print_char_cursor#208 print_char_cursor#209 print_char_cursor#210 print_char_cursor#211 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#1 print_char_cursor#225 print_char_cursor#226 print_char_cursor#228 print_char_cursor#229 print_char_cursor#11 ] reg byte x [ initEntry::n#10 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ] zp[2]:6 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 main::fileEntry2_$0 main::entry2#0 ] @@ -405,7 +405,7 @@ reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] zp[2]:8 [ initEntry::$1 print_line_cursor#1 mul8u::mb#2 mul8u::mb#1 ] -zp[2]:10 [ initEntry::$3 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#173 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] +zp[2]:10 [ initEntry::$3 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 print_line_cursor#32 print_line_cursor#63 print_line_cursor#154 print_line_cursor#155 print_line_cursor#156 print_line_cursor#157 print_line_cursor#158 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#172 print_str::str#18 print_str::str#20 print_str::str#0 memset::dst#2 memset::dst#1 ] zp[2]:12 [ initEntry::$5 ] zp[2]:14 [ initEntry::$7 ] reg byte a [ initEntry::$9 ] diff --git a/src/test/ref/sieve.log b/src/test/ref/sieve.log index 6d2dd2525..02a5d5093 100644 --- a/src/test/ref/sieve.log +++ b/src/test/ref/sieve.log @@ -43,6 +43,7 @@ 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) utoa::@13 Culled Empty Block (label) utoa::@5 Culled Empty Block (label) utoa::@14 @@ -59,6 +60,7 @@ Culled Empty Block (label) utoa_append::@4 Culled Empty Block (label) utoa_append::@5 Culled Empty Block (label) utoa_append::@6 Culled Empty Block (label) utoa_append::@7 +Culled Empty Block (label) @24 Culled Empty Block (label) ultoa::@13 Culled Empty Block (label) ultoa::@5 Culled Empty Block (label) ultoa::@14 @@ -189,7 +191,7 @@ clock_start::@return: scope:[clock_start] from clock_start to:@return @12: scope:[] from @begin (word) rem16u#0 ← (number) 0 - to:@22 + to:@26 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) divr16u: scope:[divr16u] from div32u16u div32u16u::@2 @@ -314,13 +316,6 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#5 ← (word) rem16u#12 return to:@return -@22: scope:[] from @12 - (word) rem16u#37 ← phi( @12/(word) rem16u#0 ) - (word[]) RADIX_BINARY_VALUES ← { (number) $8000, (number) $4000, (number) $2000, (number) $1000, (number) $800, (number) $400, (number) $200, (number) $100, (number) $80, (number) $40, (number) $20, (number) $10, (number) 8, (number) 4, (number) 2 } - (word[]) RADIX_OCTAL_VALUES ← { (number) $8000, (number) $1000, (number) $200, (number) $40, (number) 8 } - (word[]) RADIX_DECIMAL_VALUES ← { (number) $2710, (number) $3e8, (number) $64, (number) $a } - (word[]) RADIX_HEXADECIMAL_VALUES ← { (number) $1000, (number) $100, (number) $10 } - to:@24 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) utoa: scope:[utoa] from print_word_decimal @@ -336,7 +331,7 @@ utoa::@1: scope:[utoa] from utoa (byte*) utoa::buffer#17 ← phi( utoa/(byte*) utoa::buffer#21 ) (word) utoa::value#8 ← phi( utoa/(word) utoa::value#12 ) (byte) utoa::max_digits#1 ← (number) 5 - (word*) utoa::digit_values#1 ← (word[]) RADIX_DECIMAL_VALUES + (word*) utoa::digit_values#1 ← (const word[]) RADIX_DECIMAL_VALUES to:utoa::@8 utoa::@9: scope:[utoa] from utoa (word) utoa::value#13 ← phi( utoa/(word) utoa::value#12 ) @@ -349,7 +344,7 @@ utoa::@2: scope:[utoa] from utoa::@9 (byte*) utoa::buffer#18 ← phi( utoa::@9/(byte*) utoa::buffer#16 ) (word) utoa::value#9 ← phi( utoa::@9/(word) utoa::value#13 ) (byte) utoa::max_digits#2 ← (number) 4 - (word*) utoa::digit_values#2 ← (word[]) RADIX_HEXADECIMAL_VALUES + (word*) utoa::digit_values#2 ← (const word[]) RADIX_HEXADECIMAL_VALUES to:utoa::@8 utoa::@10: scope:[utoa] from utoa::@9 (word) utoa::value#14 ← phi( utoa::@9/(word) utoa::value#13 ) @@ -362,7 +357,7 @@ utoa::@3: scope:[utoa] from utoa::@10 (byte*) utoa::buffer#19 ← phi( utoa::@10/(byte*) utoa::buffer#13 ) (word) utoa::value#10 ← phi( utoa::@10/(word) utoa::value#14 ) (byte) utoa::max_digits#3 ← (number) 6 - (word*) utoa::digit_values#3 ← (word[]) RADIX_OCTAL_VALUES + (word*) utoa::digit_values#3 ← (const word[]) RADIX_OCTAL_VALUES to:utoa::@8 utoa::@11: scope:[utoa] from utoa::@10 (word) utoa::value#15 ← phi( utoa::@10/(word) utoa::value#14 ) @@ -375,7 +370,7 @@ utoa::@4: scope:[utoa] from utoa::@11 (byte*) utoa::buffer#20 ← phi( utoa::@11/(byte*) utoa::buffer#10 ) (word) utoa::value#11 ← phi( utoa::@11/(word) utoa::value#15 ) (byte) utoa::max_digits#4 ← (number) $10 - (word*) utoa::digit_values#4 ← (word[]) RADIX_BINARY_VALUES + (word*) utoa::digit_values#4 ← (const word[]) RADIX_BINARY_VALUES to:utoa::@8 utoa::@12: scope:[utoa] from utoa::@11 (byte*) utoa::buffer#6 ← phi( utoa::@11/(byte*) utoa::buffer#10 ) @@ -500,13 +495,6 @@ utoa_append::@return: scope:[utoa_append] from utoa_append::@3 (word) utoa_append::return#2 ← (word) utoa_append::return#4 return to:@return -@24: scope:[] from @22 - (word) rem16u#31 ← phi( @22/(word) rem16u#37 ) - (dword[]) RADIX_BINARY_VALUES_LONG ← { (number) $80000000, (number) $40000000, (number) $20000000, (number) $10000000, (number) $8000000, (number) $4000000, (number) $2000000, (number) $1000000, (number) $800000, (number) $400000, (number) $200000, (number) $100000, (number) $80000, (number) $40000, (number) $20000, (number) $10000, (number) $8000, (number) $4000, (number) $2000, (number) $1000, (number) $800, (number) $400, (number) $200, (number) $100, (number) $80, (number) $40, (number) $20, (number) $10, (number) 8, (number) 4, (number) 2 } - (dword[]) RADIX_OCTAL_VALUES_LONG ← { (number) $40000000, (number) $8000000, (number) $1000000, (number) $200000, (number) $40000, (number) $8000, (number) $1000, (number) $200, (number) $40, (number) 8 } - (dword[]) RADIX_DECIMAL_VALUES_LONG ← { (number) $3b9aca00, (number) $5f5e100, (number) $989680, (number) $f4240, (number) $186a0, (number) $2710, (number) $3e8, (number) $64, (number) $a } - (dword[]) RADIX_HEXADECIMAL_VALUES_LONG ← { (number) $10000000, (number) $1000000, (number) $100000, (number) $10000, (number) $1000, (number) $100, (number) $10 } - to:@26 (void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) ultoa: scope:[ultoa] from print_dword_decimal @@ -522,7 +510,7 @@ ultoa::@1: scope:[ultoa] from ultoa (byte*) ultoa::buffer#17 ← phi( ultoa/(byte*) ultoa::buffer#21 ) (dword) ultoa::value#8 ← phi( ultoa/(dword) ultoa::value#12 ) (byte) ultoa::max_digits#1 ← (number) $a - (dword*) ultoa::digit_values#1 ← (dword[]) RADIX_DECIMAL_VALUES_LONG + (dword*) ultoa::digit_values#1 ← (const dword[]) RADIX_DECIMAL_VALUES_LONG to:ultoa::@8 ultoa::@9: scope:[ultoa] from ultoa (dword) ultoa::value#13 ← phi( ultoa/(dword) ultoa::value#12 ) @@ -535,7 +523,7 @@ ultoa::@2: scope:[ultoa] from ultoa::@9 (byte*) ultoa::buffer#18 ← phi( ultoa::@9/(byte*) ultoa::buffer#16 ) (dword) ultoa::value#9 ← phi( ultoa::@9/(dword) ultoa::value#13 ) (byte) ultoa::max_digits#2 ← (number) 8 - (dword*) ultoa::digit_values#2 ← (dword[]) RADIX_HEXADECIMAL_VALUES_LONG + (dword*) ultoa::digit_values#2 ← (const dword[]) RADIX_HEXADECIMAL_VALUES_LONG to:ultoa::@8 ultoa::@10: scope:[ultoa] from ultoa::@9 (dword) ultoa::value#14 ← phi( ultoa::@9/(dword) ultoa::value#13 ) @@ -548,7 +536,7 @@ ultoa::@3: scope:[ultoa] from ultoa::@10 (byte*) ultoa::buffer#19 ← phi( ultoa::@10/(byte*) ultoa::buffer#13 ) (dword) ultoa::value#10 ← phi( ultoa::@10/(dword) ultoa::value#14 ) (byte) ultoa::max_digits#3 ← (number) $b - (dword*) ultoa::digit_values#3 ← (dword[]) RADIX_OCTAL_VALUES_LONG + (dword*) ultoa::digit_values#3 ← (const dword[]) RADIX_OCTAL_VALUES_LONG to:ultoa::@8 ultoa::@11: scope:[ultoa] from ultoa::@10 (dword) ultoa::value#15 ← phi( ultoa::@10/(dword) ultoa::value#14 ) @@ -561,7 +549,7 @@ ultoa::@4: scope:[ultoa] from ultoa::@11 (byte*) ultoa::buffer#20 ← phi( ultoa::@11/(byte*) ultoa::buffer#10 ) (dword) ultoa::value#11 ← phi( ultoa::@11/(dword) ultoa::value#15 ) (byte) ultoa::max_digits#4 ← (number) $20 - (dword*) ultoa::digit_values#4 ← (dword[]) RADIX_BINARY_VALUES_LONG + (dword*) ultoa::digit_values#4 ← (const dword[]) RADIX_BINARY_VALUES_LONG to:ultoa::@8 ultoa::@12: scope:[ultoa] from ultoa::@11 (byte*) ultoa::buffer#6 ← phi( ultoa::@11/(byte*) ultoa::buffer#10 ) @@ -686,8 +674,8 @@ ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3 (dword) ultoa_append::return#2 ← (dword) ultoa_append::return#4 return to:@return -@26: scope:[] from @24 - (word) rem16u#27 ← phi( @24/(word) rem16u#31 ) +@26: scope:[] from @12 + (word) rem16u#27 ← phi( @12/(word) rem16u#0 ) (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 @@ -841,7 +829,7 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (void()) main() main: scope:[main] from @51 - (word) rem16u#57 ← phi( @51/(word) rem16u#19 ) + (word) rem16u#55 ← phi( @51/(word) rem16u#19 ) (byte*) print_char_cursor#79 ← phi( @51/(byte*) print_char_cursor#65 ) (byte*) print_line_cursor#38 ← phi( @51/(byte*) print_line_cursor#27 ) (byte*) print_screen#6 ← phi( @51/(byte*) print_screen#7 ) @@ -849,7 +837,7 @@ main: scope:[main] from @51 (byte*) main::toD0181_gfx#0 ← (byte*)(number) $1800 to:main::toD0181 main::toD0181: scope:[main] from main - (word) rem16u#56 ← phi( main/(word) rem16u#57 ) + (word) rem16u#54 ← phi( main/(word) rem16u#55 ) (byte*) print_char_cursor#76 ← phi( main/(byte*) print_char_cursor#79 ) (byte*) print_line_cursor#35 ← phi( main/(byte*) print_line_cursor#38 ) (byte*) print_screen#5 ← phi( main/(byte*) print_screen#6 ) @@ -867,7 +855,7 @@ main::toD0181: scope:[main] from main (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8 to:main::toD0181_@return main::toD0181_@return: scope:[main] from main::toD0181 - (word) rem16u#55 ← phi( main::toD0181/(word) rem16u#56 ) + (word) rem16u#53 ← phi( main::toD0181/(word) rem16u#54 ) (byte*) print_char_cursor#69 ← phi( main::toD0181/(byte*) print_char_cursor#76 ) (byte*) print_line_cursor#28 ← phi( main::toD0181/(byte*) print_line_cursor#35 ) (byte*) print_screen#4 ← phi( main::toD0181/(byte*) print_screen#5 ) @@ -875,7 +863,7 @@ main::toD0181_@return: scope:[main] from main::toD0181 (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 to:main::@29 main::@29: scope:[main] from main::toD0181_@return - (word) rem16u#54 ← phi( main::toD0181_@return/(word) rem16u#55 ) + (word) rem16u#52 ← phi( main::toD0181_@return/(word) rem16u#53 ) (byte*) print_char_cursor#60 ← phi( main::toD0181_@return/(byte*) print_char_cursor#69 ) (byte*) print_line_cursor#22 ← phi( main::toD0181_@return/(byte*) print_line_cursor#28 ) (byte*) print_screen#3 ← phi( main::toD0181_@return/(byte*) print_screen#4 ) @@ -885,7 +873,7 @@ main::@29: scope:[main] from main::toD0181_@return call print_cls to:main::@30 main::@30: scope:[main] from main::@29 - (word) rem16u#53 ← phi( main::@29/(word) rem16u#54 ) + (word) rem16u#51 ← phi( main::@29/(word) rem16u#52 ) (byte*) print_char_cursor#40 ← phi( main::@29/(byte*) print_char_cursor#12 ) (byte*) print_line_cursor#15 ← phi( main::@29/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#15 @@ -894,14 +882,14 @@ main::@30: scope:[main] from main::@29 call print_str to:main::@31 main::@31: scope:[main] from main::@30 - (word) rem16u#52 ← phi( main::@30/(word) rem16u#53 ) + (word) rem16u#50 ← phi( main::@30/(word) rem16u#51 ) (byte*) print_line_cursor#23 ← phi( main::@30/(byte*) print_line_cursor#5 ) (byte*) print_char_cursor#41 ← phi( main::@30/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#41 call print_ln to:main::@32 main::@32: scope:[main] from main::@31 - (word) rem16u#50 ← phi( main::@31/(word) rem16u#52 ) + (word) rem16u#48 ← phi( main::@31/(word) rem16u#50 ) (byte*) print_char_cursor#42 ← phi( main::@31/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#16 ← phi( main::@31/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#16 @@ -910,7 +898,7 @@ main::@32: scope:[main] from main::@31 call print_str to:main::@33 main::@33: scope:[main] from main::@32 - (word) rem16u#47 ← phi( main::@32/(word) rem16u#50 ) + (word) rem16u#45 ← phi( main::@32/(word) rem16u#48 ) (byte*) print_line_cursor#29 ← phi( main::@32/(byte*) print_line_cursor#6 ) (byte*) print_char_cursor#43 ← phi( main::@32/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#43 @@ -918,14 +906,14 @@ main::@33: scope:[main] from main::@32 call print_word_decimal to:main::@34 main::@34: scope:[main] from main::@33 - (word) rem16u#44 ← phi( main::@33/(word) rem16u#47 ) + (word) rem16u#42 ← phi( main::@33/(word) rem16u#45 ) (byte*) print_line_cursor#24 ← phi( main::@33/(byte*) print_line_cursor#29 ) (byte*) print_char_cursor#44 ← phi( main::@33/(byte*) print_char_cursor#6 ) (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#44 call print_ln to:main::@35 main::@35: scope:[main] from main::@34 - (word) rem16u#38 ← phi( main::@34/(word) rem16u#44 ) + (word) rem16u#36 ← phi( main::@34/(word) rem16u#42 ) (byte*) print_char_cursor#45 ← phi( main::@34/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#17 ← phi( main::@34/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#17 @@ -939,13 +927,13 @@ main::@35: scope:[main] from main::@34 main::@36: scope:[main] from main::@35 (byte*) print_line_cursor#52 ← phi( main::@35/(byte*) print_line_cursor#7 ) (byte*) print_char_cursor#83 ← phi( main::@35/(byte*) print_char_cursor#18 ) - (word) rem16u#32 ← phi( main::@35/(word) rem16u#38 ) + (word) rem16u#31 ← phi( main::@35/(word) rem16u#36 ) call clock_start to:main::@37 main::@37: scope:[main] from main::@36 (byte*) print_line_cursor#50 ← phi( main::@36/(byte*) print_line_cursor#52 ) (byte*) print_char_cursor#81 ← phi( main::@36/(byte*) print_char_cursor#83 ) - (word) rem16u#28 ← phi( main::@36/(word) rem16u#32 ) + (word) rem16u#28 ← phi( main::@36/(word) rem16u#31 ) (word) main::i#0 ← (number) 2 (byte*~) main::$9 ← & *((const byte*) sieve + (word) main::i#0) (byte*) main::sieve_i#0 ← (byte*~) main::$9 @@ -962,7 +950,7 @@ main::@1: scope:[main] from main::@37 main::@4 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#53 ← phi( main::@1/(byte*) print_line_cursor#48 ) (byte*) print_char_cursor#84 ← phi( main::@1/(byte*) print_char_cursor#80 ) - (word) rem16u#33 ← phi( main::@1/(word) rem16u#25 ) + (word) rem16u#32 ← phi( main::@1/(word) rem16u#25 ) (word) main::i#12 ← phi( main::@1/(word) main::i#4 ) (byte*) main::sieve_i#2 ← phi( main::@1/(byte*) main::sieve_i#4 ) (bool~) main::$33 ← (number) 0 != *((byte*) main::sieve_i#2) @@ -1005,7 +993,7 @@ main::@39: scope:[main] from main::@38 call print_str to:main::@40 main::@40: scope:[main] from main::@39 - (word) rem16u#51 ← phi( main::@39/(word) rem16u#6 ) + (word) rem16u#49 ← phi( main::@39/(word) rem16u#6 ) (byte*) print_line_cursor#39 ← phi( main::@39/(byte*) print_line_cursor#41 ) (dword) main::cyclecount#3 ← phi( main::@39/(dword) main::cyclecount#4 ) (word) main::sec100s#1 ← phi( main::@39/(word) main::sec100s#0 ) @@ -1015,7 +1003,7 @@ main::@40: scope:[main] from main::@39 call print_word_decimal to:main::@41 main::@41: scope:[main] from main::@40 - (word) rem16u#48 ← phi( main::@40/(word) rem16u#51 ) + (word) rem16u#46 ← phi( main::@40/(word) rem16u#49 ) (byte*) print_line_cursor#36 ← phi( main::@40/(byte*) print_line_cursor#39 ) (dword) main::cyclecount#2 ← phi( main::@40/(dword) main::cyclecount#3 ) (byte*) print_char_cursor#47 ← phi( main::@40/(byte*) print_char_cursor#6 ) @@ -1024,7 +1012,7 @@ main::@41: scope:[main] from main::@40 call print_str to:main::@42 main::@42: scope:[main] from main::@41 - (word) rem16u#45 ← phi( main::@41/(word) rem16u#48 ) + (word) rem16u#43 ← phi( main::@41/(word) rem16u#46 ) (byte*) print_line_cursor#30 ← phi( main::@41/(byte*) print_line_cursor#36 ) (dword) main::cyclecount#1 ← phi( main::@41/(dword) main::cyclecount#2 ) (byte*) print_char_cursor#48 ← phi( main::@41/(byte*) print_char_cursor#2 ) @@ -1033,14 +1021,14 @@ main::@42: scope:[main] from main::@41 call print_dword_decimal to:main::@43 main::@43: scope:[main] from main::@42 - (word) rem16u#39 ← phi( main::@42/(word) rem16u#45 ) + (word) rem16u#37 ← phi( main::@42/(word) rem16u#43 ) (byte*) print_line_cursor#25 ← phi( main::@42/(byte*) print_line_cursor#30 ) (byte*) print_char_cursor#49 ← phi( main::@42/(byte*) print_char_cursor#8 ) (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#49 call print_ln to:main::@44 main::@44: scope:[main] from main::@43 - (word) rem16u#36 ← phi( main::@43/(word) rem16u#39 ) + (word) rem16u#35 ← phi( main::@43/(word) rem16u#37 ) (byte*) print_char_cursor#50 ← phi( main::@43/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#18 ← phi( main::@43/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#18 @@ -1050,7 +1038,7 @@ main::@44: scope:[main] from main::@43 main::@4: scope:[main] from main::@2 main::@5 (byte*) print_line_cursor#51 ← phi( main::@2/(byte*) print_line_cursor#53 main::@5/(byte*) print_line_cursor#54 ) (byte*) print_char_cursor#82 ← phi( main::@2/(byte*) print_char_cursor#84 main::@5/(byte*) print_char_cursor#85 ) - (word) rem16u#29 ← phi( main::@2/(word) rem16u#33 main::@5/(word) rem16u#34 ) + (word) rem16u#29 ← phi( main::@2/(word) rem16u#32 main::@5/(word) rem16u#33 ) (byte*) main::sieve_i#3 ← phi( main::@2/(byte*) main::sieve_i#2 main::@5/(byte*) main::sieve_i#5 ) (word) main::i#5 ← phi( main::@2/(word) main::i#12 main::@5/(word) main::i#13 ) (word) main::i#2 ← ++ (word) main::i#5 @@ -1059,7 +1047,7 @@ main::@4: scope:[main] from main::@2 main::@5 main::@13: scope:[main] from main::@2 (byte*) print_line_cursor#55 ← phi( main::@2/(byte*) print_line_cursor#53 ) (byte*) print_char_cursor#86 ← phi( main::@2/(byte*) print_char_cursor#84 ) - (word) rem16u#40 ← phi( main::@2/(word) rem16u#33 ) + (word) rem16u#38 ← phi( main::@2/(word) rem16u#32 ) (byte*) main::sieve_i#6 ← phi( main::@2/(byte*) main::sieve_i#2 ) (word) main::i#6 ← phi( main::@2/(word) main::i#12 ) (number~) main::$24 ← (word) main::i#6 * (number) 2 @@ -1070,7 +1058,7 @@ main::@13: scope:[main] from main::@2 main::@5: scope:[main] from main::@13 main::@6 (byte*) print_line_cursor#54 ← phi( main::@13/(byte*) print_line_cursor#55 main::@6/(byte*) print_line_cursor#56 ) (byte*) print_char_cursor#85 ← phi( main::@13/(byte*) print_char_cursor#86 main::@6/(byte*) print_char_cursor#87 ) - (word) rem16u#34 ← phi( main::@13/(word) rem16u#40 main::@6/(word) rem16u#41 ) + (word) rem16u#33 ← phi( main::@13/(word) rem16u#38 main::@6/(word) rem16u#39 ) (byte*) main::s#3 ← phi( main::@13/(byte*) main::s#0 main::@6/(byte*) main::s#1 ) (byte*) main::sieve_i#5 ← phi( main::@13/(byte*) main::sieve_i#6 main::@6/(byte*) main::sieve_i#7 ) (word) main::i#13 ← phi( main::@13/(word) main::i#6 main::@6/(word) main::i#7 ) @@ -1081,7 +1069,7 @@ main::@5: scope:[main] from main::@13 main::@6 main::@6: scope:[main] from main::@5 (byte*) print_line_cursor#56 ← phi( main::@5/(byte*) print_line_cursor#54 ) (byte*) print_char_cursor#87 ← phi( main::@5/(byte*) print_char_cursor#85 ) - (word) rem16u#41 ← phi( main::@5/(word) rem16u#34 ) + (word) rem16u#39 ← phi( main::@5/(word) rem16u#33 ) (byte*) main::sieve_i#7 ← phi( main::@5/(byte*) main::sieve_i#5 ) (word) main::j#3 ← phi( main::@5/(word) main::j#2 ) (word) main::i#7 ← phi( main::@5/(word) main::i#13 ) @@ -1091,7 +1079,7 @@ main::@6: scope:[main] from main::@5 (word) main::j#1 ← (word) main::j#3 + (word) main::i#7 to:main::@5 main::@15: scope:[main] from main::@18 main::@44 - (word) rem16u#30 ← phi( main::@18/(word) rem16u#35 main::@44/(word) rem16u#36 ) + (word) rem16u#30 ← phi( main::@18/(word) rem16u#34 main::@44/(word) rem16u#35 ) (byte*) print_line_cursor#40 ← phi( main::@18/(byte*) print_line_cursor#42 main::@44/(byte*) print_line_cursor#8 ) (byte*) print_char_cursor#71 ← phi( main::@18/(byte*) print_char_cursor#78 main::@44/(byte*) print_char_cursor#23 ) (word) main::i#8 ← phi( main::@18/(word) main::i#3 main::@44/(word) main::i#1 ) @@ -1099,7 +1087,7 @@ main::@15: scope:[main] from main::@18 main::@44 if((bool~) main::$27) goto main::@16 to:main::@17 main::@16: scope:[main] from main::@15 - (word) rem16u#42 ← phi( main::@15/(word) rem16u#30 ) + (word) rem16u#40 ← phi( main::@15/(word) rem16u#30 ) (byte*) print_line_cursor#44 ← phi( main::@15/(byte*) print_line_cursor#40 ) (byte*) print_char_cursor#72 ← phi( main::@15/(byte*) print_char_cursor#71 ) (word) main::i#9 ← phi( main::@15/(word) main::i#8 ) @@ -1122,14 +1110,14 @@ main::@45: scope:[main] from main::@17 (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#51 to:main::@23 main::@18: scope:[main] from main::@16 main::@47 - (word) rem16u#35 ← phi( main::@16/(word) rem16u#42 main::@47/(word) rem16u#43 ) + (word) rem16u#34 ← phi( main::@16/(word) rem16u#40 main::@47/(word) rem16u#41 ) (byte*) print_line_cursor#42 ← phi( main::@16/(byte*) print_line_cursor#44 main::@47/(byte*) print_line_cursor#45 ) (byte*) print_char_cursor#78 ← phi( main::@16/(byte*) print_char_cursor#72 main::@47/(byte*) print_char_cursor#26 ) (word) main::i#10 ← phi( main::@16/(word) main::i#9 main::@47/(word) main::i#14 ) (word) main::i#3 ← ++ (word) main::i#10 to:main::@15 main::@21: scope:[main] from main::@16 - (word) rem16u#49 ← phi( main::@16/(word) rem16u#42 ) + (word) rem16u#47 ← phi( main::@16/(word) rem16u#40 ) (byte*) print_line_cursor#49 ← phi( main::@16/(byte*) print_line_cursor#44 ) (byte*) print_char_cursor#63 ← phi( main::@16/(byte*) print_char_cursor#72 ) (word) main::i#11 ← phi( main::@16/(word) main::i#9 ) @@ -1137,7 +1125,7 @@ main::@21: scope:[main] from main::@16 call print_word_decimal to:main::@46 main::@46: scope:[main] from main::@21 - (word) rem16u#46 ← phi( main::@21/(word) rem16u#49 ) + (word) rem16u#44 ← phi( main::@21/(word) rem16u#47 ) (byte*) print_line_cursor#47 ← phi( main::@21/(byte*) print_line_cursor#49 ) (word) main::i#15 ← phi( main::@21/(word) main::i#11 ) (byte*) print_char_cursor#52 ← phi( main::@21/(byte*) print_char_cursor#6 ) @@ -1146,7 +1134,7 @@ main::@46: scope:[main] from main::@21 call print_char to:main::@47 main::@47: scope:[main] from main::@46 - (word) rem16u#43 ← phi( main::@46/(word) rem16u#46 ) + (word) rem16u#41 ← phi( main::@46/(word) rem16u#44 ) (byte*) print_line_cursor#45 ← phi( main::@46/(byte*) print_line_cursor#47 ) (word) main::i#14 ← phi( main::@46/(word) main::i#15 ) (byte*) print_char_cursor#53 ← phi( main::@46/(byte*) print_char_cursor#10 ) @@ -1192,8 +1180,6 @@ main::@return: scope:[main] from main::@23 SYMBOL TABLE SSA (label) @12 -(label) @22 -(label) @24 (label) @26 (label) @36 (label) @40 @@ -1224,14 +1210,14 @@ SYMBOL TABLE SSA (const byte) RADIX::DECIMAL = (number) $a (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 -(word[]) RADIX_BINARY_VALUES -(dword[]) RADIX_BINARY_VALUES_LONG -(word[]) RADIX_DECIMAL_VALUES -(dword[]) RADIX_DECIMAL_VALUES_LONG -(word[]) RADIX_HEXADECIMAL_VALUES -(dword[]) RADIX_HEXADECIMAL_VALUES_LONG -(word[]) RADIX_OCTAL_VALUES -(dword[]) RADIX_OCTAL_VALUES_LONG +(const word[]) RADIX_BINARY_VALUES = { (word)(number) $8000, (word)(number) $4000, (word)(number) $2000, (word)(number) $1000, (word)(number) $800, (word)(number) $400, (word)(number) $200, (word)(number) $100, (word)(number) $80, (word)(number) $40, (word)(number) $20, (word)(number) $10, (word)(number) 8, (word)(number) 4, (word)(number) 2 } +(const dword[]) RADIX_BINARY_VALUES_LONG = { (dword)(number) $80000000, (dword)(number) $40000000, (dword)(number) $20000000, (dword)(number) $10000000, (dword)(number) $8000000, (dword)(number) $4000000, (dword)(number) $2000000, (dword)(number) $1000000, (dword)(number) $800000, (dword)(number) $400000, (dword)(number) $200000, (dword)(number) $100000, (dword)(number) $80000, (dword)(number) $40000, (dword)(number) $20000, (dword)(number) $10000, (dword)(number) $8000, (dword)(number) $4000, (dword)(number) $2000, (dword)(number) $1000, (dword)(number) $800, (dword)(number) $400, (dword)(number) $200, (dword)(number) $100, (dword)(number) $80, (dword)(number) $40, (dword)(number) $20, (dword)(number) $10, (dword)(number) 8, (dword)(number) 4, (dword)(number) 2 } +(const word[]) RADIX_DECIMAL_VALUES = { (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a } +(const dword[]) RADIX_DECIMAL_VALUES_LONG = { (dword)(number) $3b9aca00, (dword)(number) $5f5e100, (dword)(number) $989680, (dword)(number) $f4240, (dword)(number) $186a0, (dword)(number) $2710, (dword)(number) $3e8, (dword)(number) $64, (dword)(number) $a } +(const word[]) RADIX_HEXADECIMAL_VALUES = { (word)(number) $1000, (word)(number) $100, (word)(number) $10 } +(const dword[]) RADIX_HEXADECIMAL_VALUES_LONG = { (dword)(number) $10000000, (dword)(number) $1000000, (dword)(number) $100000, (dword)(number) $10000, (dword)(number) $1000, (dword)(number) $100, (dword)(number) $10 } +(const word[]) RADIX_OCTAL_VALUES = { (word)(number) $8000, (word)(number) $1000, (word)(number) $200, (word)(number) $40, (word)(number) 8 } +(const dword[]) RADIX_OCTAL_VALUES_LONG = { (dword)(number) $40000000, (dword)(number) $8000000, (dword)(number) $1000000, (dword)(number) $200000, (dword)(number) $40000, (dword)(number) $8000, (dword)(number) $1000, (dword)(number) $200, (dword)(number) $40, (dword)(number) 8 } (const byte*) SCREEN = (byte*)(number) $400 (const byte) SIZEOF_DWORD = (byte) 4 (const byte) SIZEOF_WORD = (byte) 2 @@ -1785,8 +1771,6 @@ SYMBOL TABLE SSA (word) rem16u#53 (word) rem16u#54 (word) rem16u#55 -(word) rem16u#56 -(word) rem16u#57 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 @@ -2163,15 +2147,6 @@ Adding number conversion cast (unumber) $514 in (bool~) main::$27 ← (word) mai Adding number conversion cast (unumber) 0 in (bool~) main::$34 ← (number) 0 != *((const byte*) sieve + (word) main::i#9) Adding number conversion cast (unumber) $3e7 in *((const byte*) SCREEN+(number) $3e7) ← ++ *((const byte*) SCREEN+(number) $3e7) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) RADIX_BINARY_VALUES ← (word[]){ (word)(number) $8000, (word)(number) $4000, (word)(number) $2000, (word)(number) $1000, (word)(number) $800, (word)(number) $400, (word)(number) $200, (word)(number) $100, (word)(number) $80, (word)(number) $40, (word)(number) $20, (word)(number) $10, (word)(number) 8, (word)(number) 4, (word)(number) 2 } -Added casts to value list in (word[]) RADIX_OCTAL_VALUES ← (word[]){ (word)(number) $8000, (word)(number) $1000, (word)(number) $200, (word)(number) $40, (word)(number) 8 } -Added casts to value list in (word[]) RADIX_DECIMAL_VALUES ← (word[]){ (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a } -Added casts to value list in (word[]) RADIX_HEXADECIMAL_VALUES ← (word[]){ (word)(number) $1000, (word)(number) $100, (word)(number) $10 } -Added casts to value list in (dword[]) RADIX_BINARY_VALUES_LONG ← (dword[]){ (dword)(number) $80000000, (dword)(number) $40000000, (dword)(number) $20000000, (dword)(number) $10000000, (dword)(number) $8000000, (dword)(number) $4000000, (dword)(number) $2000000, (dword)(number) $1000000, (dword)(number) $800000, (dword)(number) $400000, (dword)(number) $200000, (dword)(number) $100000, (dword)(number) $80000, (dword)(number) $40000, (dword)(number) $20000, (dword)(number) $10000, (dword)(number) $8000, (dword)(number) $4000, (dword)(number) $2000, (dword)(number) $1000, (dword)(number) $800, (dword)(number) $400, (dword)(number) $200, (dword)(number) $100, (dword)(number) $80, (dword)(number) $40, (dword)(number) $20, (dword)(number) $10, (dword)(number) 8, (dword)(number) 4, (dword)(number) 2 } -Added casts to value list in (dword[]) RADIX_OCTAL_VALUES_LONG ← (dword[]){ (dword)(number) $40000000, (dword)(number) $8000000, (dword)(number) $1000000, (dword)(number) $200000, (dword)(number) $40000, (dword)(number) $8000, (dword)(number) $1000, (dword)(number) $200, (dword)(number) $40, (dword)(number) 8 } -Added casts to value list in (dword[]) RADIX_DECIMAL_VALUES_LONG ← (dword[]){ (dword)(number) $3b9aca00, (dword)(number) $5f5e100, (dword)(number) $989680, (dword)(number) $f4240, (dword)(number) $186a0, (dword)(number) $2710, (dword)(number) $3e8, (dword)(number) $64, (dword)(number) $a } -Added casts to value list in (dword[]) RADIX_HEXADECIMAL_VALUES_LONG ← (dword[]){ (dword)(number) $10000000, (dword)(number) $1000000, (dword)(number) $100000, (dword)(number) $10000, (dword)(number) $1000, (dword)(number) $100, (dword)(number) $10 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 Inlining cast *((const dword*) CIA2_TIMER_AB) ← (unumber)(number) $ffffffff @@ -2215,22 +2190,6 @@ Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (dword*) 56580 Simplifying constant pointer cast (byte*) 56590 Simplifying constant pointer cast (byte*) 56591 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 4096 -Simplifying constant integer cast 0 -Simplifying constant integer cast $ffffffff -Simplifying constant integer cast $ffffffff -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast (word) div32u16u::quotient_hi#1 -Simplifying constant integer cast (word) div32u16u::quotient_lo#0 Simplifying constant integer cast $8000 Simplifying constant integer cast $4000 Simplifying constant integer cast $2000 @@ -2258,17 +2217,6 @@ Simplifying constant integer cast $a Simplifying constant integer cast $1000 Simplifying constant integer cast $100 Simplifying constant integer cast $10 -Simplifying constant integer cast 5 -Simplifying constant integer cast 4 -Simplifying constant integer cast 6 -Simplifying constant integer cast $10 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 Simplifying constant integer cast $80000000 Simplifying constant integer cast $40000000 Simplifying constant integer cast $20000000 @@ -2326,6 +2274,33 @@ Simplifying constant integer cast $10000 Simplifying constant integer cast $1000 Simplifying constant integer cast $100 Simplifying constant integer cast $10 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 4096 +Simplifying constant integer cast 0 +Simplifying constant integer cast $ffffffff +Simplifying constant integer cast $ffffffff +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast (word) div32u16u::quotient_hi#1 +Simplifying constant integer cast (word) div32u16u::quotient_lo#0 +Simplifying constant integer cast 5 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast $10 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 Simplifying constant integer cast $a Simplifying constant integer cast 8 Simplifying constant integer cast $b @@ -2424,10 +2399,10 @@ Inferred type updated to word in (unumber~) main::$24 ← (word) main::i#6 * (by Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 Inversing boolean not [41] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) 0 from [40] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte) 0 Inversing boolean not [49] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [48] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 -Inversing boolean not [404] (bool~) main::$22 ← (byte) 0 == *((byte*) main::sieve_i#2) from [403] (bool~) main::$33 ← (byte) 0 != *((byte*) main::sieve_i#2) -Inversing boolean not [405] (bool~) main::$23 ← (byte) 0 != *((byte*) main::sieve_i#2) from [404] (bool~) main::$22 ← (byte) 0 == *((byte*) main::sieve_i#2) -Inversing boolean not [465] (bool~) main::$28 ← (byte) 0 == *((const byte*) sieve + (word) main::i#9) from [464] (bool~) main::$34 ← (byte) 0 != *((const byte*) sieve + (word) main::i#9) -Inversing boolean not [466] (bool~) main::$29 ← (byte) 0 != *((const byte*) sieve + (word) main::i#9) from [465] (bool~) main::$28 ← (byte) 0 == *((const byte*) sieve + (word) main::i#9) +Inversing boolean not [394] (bool~) main::$22 ← (byte) 0 == *((byte*) main::sieve_i#2) from [393] (bool~) main::$33 ← (byte) 0 != *((byte*) main::sieve_i#2) +Inversing boolean not [395] (bool~) main::$23 ← (byte) 0 != *((byte*) main::sieve_i#2) from [394] (bool~) main::$22 ← (byte) 0 == *((byte*) main::sieve_i#2) +Inversing boolean not [455] (bool~) main::$28 ← (byte) 0 == *((const byte*) sieve + (word) main::i#9) from [454] (bool~) main::$34 ← (byte) 0 != *((const byte*) sieve + (word) main::i#9) +Inversing boolean not [456] (bool~) main::$29 ← (byte) 0 != *((const byte*) sieve + (word) main::i#9) from [455] (bool~) main::$28 ← (byte) 0 == *((const byte*) sieve + (word) main::i#9) Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 Alias (void*) memset::str#3 = (void*) memset::str#4 @@ -2465,7 +2440,6 @@ Alias (word) divr16u::return#3 = (word) divr16u::return#6 Alias (word) rem16u#11 = (word) rem16u#4 (word) rem16u#12 (word) rem16u#5 Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword~) div32u16u::$4 (dword) div32u16u::return#3 (dword) div32u16u::return#1 -Alias (word) rem16u#0 = (word) rem16u#37 (word) rem16u#31 (word) rem16u#27 (word) rem16u#24 (word) rem16u#23 (word) rem16u#19 Alias (word) utoa::value#10 = (word) utoa::value#8 (word) utoa::value#12 (word) utoa::value#13 (word) utoa::value#9 (word) utoa::value#14 (word) utoa::value#15 (word) utoa::value#11 Alias (byte*) utoa::buffer#10 = (byte*) utoa::buffer#17 (byte*) utoa::buffer#21 (byte*) utoa::buffer#16 (byte*) utoa::buffer#18 (byte*) utoa::buffer#13 (byte*) utoa::buffer#19 (byte*) utoa::buffer#20 (byte*) utoa::buffer#6 Alias (byte) utoa::radix#1 = (byte) utoa::radix#2 (byte) utoa::radix#3 (byte) utoa::radix#4 @@ -2498,6 +2472,7 @@ Alias (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#4 (byte) ultoa_a Alias (dword) ultoa_append::value#2 = (dword) ultoa_append::value#3 (dword) ultoa_append::value#4 (dword) ultoa_append::return#1 (dword) ultoa_append::return#4 (dword) ultoa_append::return#2 Alias (dword) ultoa_append::sub#1 = (dword) ultoa_append::sub#2 Alias (byte*) ultoa_append::buffer#1 = (byte*) ultoa_append::buffer#4 (byte*) ultoa_append::buffer#2 +Alias (word) rem16u#0 = (word) rem16u#27 (word) rem16u#24 (word) rem16u#23 (word) rem16u#19 Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#34 (byte*) print_char_cursor#75 (byte*) print_screen#9 (byte*) print_line_cursor#33 (byte*) print_char_cursor#74 (byte*) print_screen#8 (byte*) print_line_cursor#27 (byte*) print_char_cursor#65 (byte*) print_screen#7 Alias (byte*) print_str::str#8 = (byte*) print_str::str#9 Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#56 (byte*) print_char_cursor#30 @@ -2513,7 +2488,7 @@ Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte*) print_screen#3 = (byte*) print_screen#5 (byte*) print_screen#6 (byte*) print_screen#4 Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#35 (byte*) print_line_cursor#38 (byte*) print_line_cursor#28 Alias (byte*) print_char_cursor#60 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#79 (byte*) print_char_cursor#69 -Alias (word) rem16u#28 = (word) rem16u#56 (word) rem16u#57 (word) rem16u#55 (word) rem16u#54 (word) rem16u#53 (word) rem16u#52 (word) rem16u#50 (word) rem16u#47 (word) rem16u#44 (word) rem16u#38 (word) rem16u#32 +Alias (word) rem16u#28 = (word) rem16u#54 (word) rem16u#55 (word) rem16u#53 (word) rem16u#52 (word) rem16u#51 (word) rem16u#50 (word) rem16u#48 (word) rem16u#45 (word) rem16u#42 (word) rem16u#36 (word) rem16u#31 Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#23 Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#40 @@ -2527,14 +2502,14 @@ Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 (byte*) print_ Alias (byte*) main::sieve_i#0 = (byte*~) main::$9 Alias (byte*) main::sieve_i#2 = (byte*) main::sieve_i#4 (byte*) main::sieve_i#6 Alias (word) main::i#12 = (word) main::i#4 (word) main::i#6 -Alias (word) rem16u#17 = (word) rem16u#33 (word) rem16u#25 (word) rem16u#20 (word) rem16u#40 +Alias (word) rem16u#17 = (word) rem16u#32 (word) rem16u#25 (word) rem16u#20 (word) rem16u#38 Alias (byte*) print_char_cursor#61 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#80 (byte*) print_char_cursor#77 (byte*) print_char_cursor#70 (byte*) print_char_cursor#86 Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#53 (byte*) print_line_cursor#48 (byte*) print_line_cursor#46 (byte*) print_line_cursor#43 (byte*) print_line_cursor#41 (byte*) print_line_cursor#39 (byte*) print_line_cursor#36 (byte*) print_line_cursor#30 (byte*) print_line_cursor#55 Alias (dword) clock::return#2 = (dword) clock::return#4 Alias (dword) main::cyclecount#0 = (dword~) main::$11 (dword) main::cyclecount#4 (dword) main::cyclecount#3 (dword) main::cyclecount#2 (dword) main::cyclecount#1 Alias (word) div32u16u::divisor#0 = (word~) main::$12 Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (word) rem16u#13 = (word) rem16u#6 (word) rem16u#51 (word) rem16u#48 (word) rem16u#45 (word) rem16u#39 (word) rem16u#36 +Alias (word) rem16u#13 = (word) rem16u#6 (word) rem16u#49 (word) rem16u#46 (word) rem16u#43 (word) rem16u#37 (word) rem16u#35 Alias (word) main::sec100s#0 = (word~) main::$14 (word) main::sec100s#1 Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#46 Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#47 @@ -2548,13 +2523,13 @@ Alias (byte*) main::s#2 = (byte*) main::s#3 Alias (word) main::i#13 = (word) main::i#7 Alias (word) main::j#2 = (word) main::j#3 Alias (byte*) main::sieve_i#5 = (byte*) main::sieve_i#7 -Alias (word) rem16u#34 = (word) rem16u#41 +Alias (word) rem16u#33 = (word) rem16u#39 Alias (byte*) print_char_cursor#85 = (byte*) print_char_cursor#87 Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#56 Alias (word) main::i#11 = (word) main::i#9 (word) main::i#8 (word) main::i#15 (word) main::i#14 Alias (byte*) print_char_cursor#62 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#71 (byte*) print_char_cursor#63 Alias (byte*) print_line_cursor#32 = (byte*) print_line_cursor#44 (byte*) print_line_cursor#40 (byte*) print_line_cursor#37 (byte*) print_line_cursor#49 (byte*) print_line_cursor#47 (byte*) print_line_cursor#45 -Alias (word) rem16u#22 = (word) rem16u#42 (word) rem16u#30 (word) rem16u#26 (word) rem16u#49 (word) rem16u#46 (word) rem16u#43 +Alias (word) rem16u#22 = (word) rem16u#40 (word) rem16u#30 (word) rem16u#26 (word) rem16u#47 (word) rem16u#44 (word) rem16u#41 Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#51 Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#52 Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#53 @@ -2582,7 +2557,7 @@ Alias (byte) ultoa::max_digits#10 = (byte) ultoa::max_digits#6 Alias (dword*) ultoa::digit_values#10 = (dword*) ultoa::digit_values#7 Alias (word) main::i#10 = (word) main::i#11 Alias (byte*) print_line_cursor#32 = (byte*) print_line_cursor#42 -Alias (word) rem16u#22 = (word) rem16u#35 +Alias (word) rem16u#22 = (word) rem16u#34 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 @@ -2643,7 +2618,7 @@ Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_line_cursor#1 Identical Phi Values (word) main::i#13 (word) main::i#12 Identical Phi Values (byte*) main::sieve_i#5 (byte*) main::sieve_i#2 -Identical Phi Values (word) rem16u#34 (word) rem16u#17 +Identical Phi Values (word) rem16u#33 (word) rem16u#17 Identical Phi Values (byte*) print_char_cursor#85 (byte*) print_char_cursor#61 Identical Phi Values (byte*) print_line_cursor#54 (byte*) print_line_cursor#25 Identical Phi Values (byte*) print_line_cursor#32 (byte*) print_line_cursor#18 @@ -2675,78 +2650,69 @@ Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memse Simple Condition (bool~) divr16u::$4 [42] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 Simple Condition (bool~) divr16u::$9 [50] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 Simple Condition (bool~) divr16u::$11 [57] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 -Simple Condition (bool~) utoa::$0 [106] if((byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 -Simple Condition (bool~) utoa::$1 [112] if((byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 -Simple Condition (bool~) utoa::$2 [118] if((byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 -Simple Condition (bool~) utoa::$3 [124] if((byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 -Simple Condition (bool~) utoa::$6 [143] if((byte) utoa::digit#2<(byte~) utoa::$5) goto utoa::@19 -Simple Condition (bool~) utoa_append::$0 [173] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -Simple Condition (bool~) ultoa::$0 [192] if((byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 -Simple Condition (bool~) ultoa::$1 [198] if((byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 -Simple Condition (bool~) ultoa::$2 [204] if((byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 -Simple Condition (bool~) ultoa::$3 [210] if((byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 -Simple Condition (bool~) ultoa::$6 [229] if((byte) ultoa::digit#2<(byte~) ultoa::$5) goto ultoa::@19 -Simple Condition (bool~) ultoa_append::$0 [259] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -Simple Condition (bool~) print_str::$0 [276] if((byte) 0!=*((byte*) print_str::str#8)) goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [289] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 -Simple Condition (bool~) main::$21 [401] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 -Simple Condition (bool~) main::$23 [406] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@4 -Simple Condition (bool~) main::$26 [455] if((word) main::j#2<(const word) COUNT) goto main::@6 -Simple Condition (bool~) main::$27 [462] if((word) main::i#10<(word) $514) goto main::@16 -Simple Condition (bool~) main::$29 [467] if((byte) 0!=*((const byte*) sieve + (word) main::i#10)) goto main::@18 +Simple Condition (bool~) utoa::$0 [101] if((byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 +Simple Condition (bool~) utoa::$1 [107] if((byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 +Simple Condition (bool~) utoa::$2 [113] if((byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 +Simple Condition (bool~) utoa::$3 [119] if((byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 +Simple Condition (bool~) utoa::$6 [138] if((byte) utoa::digit#2<(byte~) utoa::$5) goto utoa::@19 +Simple Condition (bool~) utoa_append::$0 [168] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 +Simple Condition (bool~) ultoa::$0 [182] if((byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +Simple Condition (bool~) ultoa::$1 [188] if((byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +Simple Condition (bool~) ultoa::$2 [194] if((byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +Simple Condition (bool~) ultoa::$3 [200] if((byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +Simple Condition (bool~) ultoa::$6 [219] if((byte) ultoa::digit#2<(byte~) ultoa::$5) goto ultoa::@19 +Simple Condition (bool~) ultoa_append::$0 [249] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 +Simple Condition (bool~) print_str::$0 [266] if((byte) 0!=*((byte*) print_str::str#8)) goto print_str::@2 +Simple Condition (bool~) print_ln::$1 [279] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 +Simple Condition (bool~) main::$21 [391] if((word) main::i#12<(const byte) SQRT_COUNT) goto main::@2 +Simple Condition (bool~) main::$23 [396] if((byte) 0!=*((byte*) main::sieve_i#2)) goto main::@4 +Simple Condition (bool~) main::$26 [445] if((word) main::j#2<(const word) COUNT) goto main::@6 +Simple Condition (bool~) main::$27 [452] if((word) main::i#10<(word) $514) goto main::@16 +Simple Condition (bool~) main::$29 [457] if((byte) 0!=*((const byte*) sieve + (word) main::i#10)) goto main::@18 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting ! if()-condition to reversed if() [149] (bool~) utoa::$9 ← ! (bool~) utoa::$8 -Rewriting || if()-condition to two if()s [148] (bool~) utoa::$8 ← (byte) utoa::started#2 || (bool~) utoa::$7 -Rewriting ! if()-condition to reversed if() [235] (bool~) ultoa::$9 ← ! (bool~) ultoa::$8 -Rewriting || if()-condition to two if()s [234] (bool~) ultoa::$8 ← (byte) ultoa::started#2 || (bool~) ultoa::$7 +Rewriting ! if()-condition to reversed if() [144] (bool~) utoa::$9 ← ! (bool~) utoa::$8 +Rewriting || if()-condition to two if()s [143] (bool~) utoa::$8 ← (byte) utoa::started#2 || (bool~) utoa::$7 +Rewriting ! if()-condition to reversed if() [225] (bool~) ultoa::$9 ← ! (bool~) ultoa::$8 +Rewriting || if()-condition to two if()s [224] (bool~) ultoa::$8 ← (byte) ultoa::started#2 || (bool~) ultoa::$7 Successful SSA optimization Pass2ConditionalAndOrRewriting Warning! Adding boolean cast to non-boolean condition (byte) utoa::started#2 Warning! Adding boolean cast to non-boolean condition (byte) ultoa::started#2 -Rewriting array member address-of to pointer addition [397] (byte*) main::sieve_i#0 ← (const byte*) sieve + (word) main::i#0 -Rewriting array member address-of to pointer addition [451] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 +Rewriting array member address-of to pointer addition [387] (byte*) main::sieve_i#0 ← (const byte*) sieve + (word) main::i#0 +Rewriting array member address-of to pointer addition [441] (byte*) main::s#0 ← (const byte*) sieve + (word) main::j#0 Successful SSA optimization PassNArrayElementAddressOfRewriting -Constant right-side identified [297] (byte[6]) decimal_digits ← { fill( 6, 0) } -Constant right-side identified [312] (byte[$b]) decimal_digits_long ← { fill( $b, 0) } -Constant right-side identified [388] (void*) memset::str#1 ← (void*)(const byte*) sieve -Constant right-side identified [414] (word) div32u16u::divisor#0 ← (word)(const dword) CLOCKS_PER_SEC/(byte) $64 +Constant right-side identified [287] (byte[6]) decimal_digits ← { fill( 6, 0) } +Constant right-side identified [302] (byte[$b]) decimal_digits_long ← { fill( $b, 0) } +Constant right-side identified [378] (void*) memset::str#1 ← (void*)(const byte*) sieve +Constant right-side identified [404] (word) div32u16u::divisor#0 ← (word)(const dword) CLOCKS_PER_SEC/(byte) $64 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) $8000, (word) $4000, (word) $2000, (word) $1000, (word) $800, (word) $400, (word) $200, (word) $100, (word) $80, (word) $40, (word) $20, (word) $10, (word) 8, (word) 4, (word) 2 } -Identified constant from value list (word[]) { (word) $8000, (word) $1000, (word) $200, (word) $40, (word) 8 } -Identified constant from value list (word[]) { (word) $2710, (word) $3e8, (word) $64, (word) $a } -Identified constant from value list (word[]) { (word) $1000, (word) $100, (word) $10 } -Identified constant from value list (dword[]) { (dword) $80000000, (dword) $40000000, (dword) $20000000, (dword) $10000000, (dword) $8000000, (dword) $4000000, (dword) $2000000, (dword) $1000000, (dword) $800000, (dword) $400000, (dword) $200000, (dword) $100000, (dword) $80000, (dword) $40000, (dword) $20000, (dword) $10000, (dword) $8000, (dword) $4000, (dword) $2000, (dword) $1000, (dword) $800, (dword) $400, (dword) $200, (dword) $100, (dword) $80, (dword) $40, (dword) $20, (dword) $10, (dword) 8, (dword) 4, (dword) 2 } -Identified constant from value list (dword[]) { (dword) $40000000, (dword) $8000000, (dword) $1000000, (dword) $200000, (dword) $40000, (dword) $8000, (dword) $1000, (dword) $200, (dword) $40, (dword) 8 } -Identified constant from value list (dword[]) { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a } -Identified constant from value list (dword[]) { (dword) $10000000, (dword) $1000000, (dword) $100000, (dword) $10000, (dword) $1000, (dword) $100, (dword) $10 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 -Constant (const word[]) RADIX_BINARY_VALUES = { $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2 } -Constant (const word[]) RADIX_OCTAL_VALUES = { $8000, $1000, $200, $40, 8 } -Constant (const word[]) RADIX_DECIMAL_VALUES = { $2710, $3e8, $64, $a } -Constant (const word[]) RADIX_HEXADECIMAL_VALUES = { $1000, $100, $10 } Constant (const byte) utoa::max_digits#0 = 0 Constant (const word*) utoa::digit_values#0 = (word*) 0 Constant (const byte) utoa::max_digits#1 = 5 +Constant (const word*) utoa::digit_values#1 = RADIX_DECIMAL_VALUES Constant (const byte) utoa::max_digits#2 = 4 +Constant (const word*) utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES Constant (const byte) utoa::max_digits#3 = 6 +Constant (const word*) utoa::digit_values#3 = RADIX_OCTAL_VALUES Constant (const byte) utoa::max_digits#4 = $10 +Constant (const word*) utoa::digit_values#4 = RADIX_BINARY_VALUES Constant (const byte) utoa::started#0 = 0 Constant (const byte) utoa::digit#0 = 0 Constant (const byte) utoa::started#1 = 1 Constant (const byte) utoa_append::digit#0 = 0 -Constant (const dword[]) RADIX_BINARY_VALUES_LONG = { $80000000, $40000000, $20000000, $10000000, $8000000, $4000000, $2000000, $1000000, $800000, $400000, $200000, $100000, $80000, $40000, $20000, $10000, $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2 } -Constant (const dword[]) RADIX_OCTAL_VALUES_LONG = { $40000000, $8000000, $1000000, $200000, $40000, $8000, $1000, $200, $40, 8 } -Constant (const dword[]) RADIX_DECIMAL_VALUES_LONG = { $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a } -Constant (const dword[]) RADIX_HEXADECIMAL_VALUES_LONG = { $10000000, $1000000, $100000, $10000, $1000, $100, $10 } Constant (const byte) ultoa::max_digits#0 = 0 Constant (const dword*) ultoa::digit_values#0 = (dword*) 0 Constant (const byte) ultoa::max_digits#1 = $a +Constant (const dword*) ultoa::digit_values#1 = RADIX_DECIMAL_VALUES_LONG Constant (const byte) ultoa::max_digits#2 = 8 +Constant (const dword*) ultoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_LONG Constant (const byte) ultoa::max_digits#3 = $b +Constant (const dword*) ultoa::digit_values#3 = RADIX_OCTAL_VALUES_LONG Constant (const byte) ultoa::max_digits#4 = $20 +Constant (const dword*) ultoa::digit_values#4 = RADIX_BINARY_VALUES_LONG Constant (const byte) ultoa::started#0 = 0 Constant (const byte) ultoa::digit#0 = 0 Constant (const byte) ultoa::started#1 = 1 @@ -2776,14 +2742,6 @@ Constant (const byte) print_char::ch#0 = ' ' Successful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::divisor#0 = div32u16u::divisor#0 Constant (const word) divr16u::divisor#1 = div32u16u::divisor#0 -Constant (const word*) utoa::digit_values#1 = RADIX_DECIMAL_VALUES -Constant (const word*) utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES -Constant (const word*) utoa::digit_values#3 = RADIX_OCTAL_VALUES -Constant (const word*) utoa::digit_values#4 = RADIX_BINARY_VALUES -Constant (const dword*) ultoa::digit_values#1 = RADIX_DECIMAL_VALUES_LONG -Constant (const dword*) ultoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_LONG -Constant (const dword*) ultoa::digit_values#3 = RADIX_OCTAL_VALUES_LONG -Constant (const dword*) ultoa::digit_values#4 = RADIX_BINARY_VALUES_LONG Constant (const byte*) utoa::buffer#5 = decimal_digits Constant (const byte*) print_str::str#1 = decimal_digits Constant (const byte*) ultoa::buffer#5 = decimal_digits_long @@ -2792,19 +2750,19 @@ Constant (const void*) memset::str#0 = (void*)print_line_cursor#0 Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0 Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [106] if((const byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 -if() condition always false - eliminating [112] if((const byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 -if() condition always false - eliminating [118] if((const byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 -if() condition always false - eliminating [124] if((const byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 -if() condition always true - replacing block destination [192] if((const byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 -if() condition always false - eliminating [198] if((const byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 -if() condition always false - eliminating [204] if((const byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 -if() condition always false - eliminating [210] if((const byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 -if() condition always true - replacing block destination [485] if(true) goto main::@24 +if() condition always true - replacing block destination [101] if((const byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 +if() condition always false - eliminating [107] if((const byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 +if() condition always false - eliminating [113] if((const byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 +if() condition always false - eliminating [119] if((const byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 +if() condition always true - replacing block destination [182] if((const byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +if() condition always false - eliminating [188] if((const byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +if() condition always false - eliminating [194] if((const byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +if() condition always false - eliminating [200] if((const byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +if() condition always true - replacing block destination [475] if(true) goto main::@24 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [55] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [57] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 -De-inlining pointer[w] to *(pointer+w) [467] if((byte) 0!=*((const byte*) sieve + (word) main::i#10)) goto main::@18 +De-inlining pointer[w] to *(pointer+w) [457] if((byte) 0!=*((const byte*) sieve + (word) main::i#10)) goto main::@18 Successful SSA optimization Pass2DeInlineWordDerefIdx Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES in [25] *((const byte*) CIA2_TIMER_A_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES Simplifying constant evaluating to zero (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS in [26] *((const byte*) CIA2_TIMER_B_CONTROL) ← (const byte) CIA_TIMER_CONTROL_STOP|(const byte) CIA_TIMER_CONTROL_CONTINUOUS|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A @@ -2902,16 +2860,16 @@ Constant (const byte) main::toD0181_$5 = >main::toD0181_$4 Constant (const byte*) main::sieve_i#0 = sieve+main::i#0 Successful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const byte) utoa::max_digits#2 -Eliminating unused constant (const byte) utoa::max_digits#3 -Eliminating unused constant (const byte) utoa::max_digits#4 Eliminating unused constant (const word*) utoa::digit_values#2 +Eliminating unused constant (const byte) utoa::max_digits#3 Eliminating unused constant (const word*) utoa::digit_values#3 +Eliminating unused constant (const byte) utoa::max_digits#4 Eliminating unused constant (const word*) utoa::digit_values#4 Eliminating unused constant (const byte) ultoa::max_digits#2 -Eliminating unused constant (const byte) ultoa::max_digits#3 -Eliminating unused constant (const byte) ultoa::max_digits#4 Eliminating unused constant (const dword*) ultoa::digit_values#2 +Eliminating unused constant (const byte) ultoa::max_digits#3 Eliminating unused constant (const dword*) ultoa::digit_values#3 +Eliminating unused constant (const byte) ultoa::max_digits#4 Eliminating unused constant (const dword*) ultoa::digit_values#4 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const word[]) RADIX_BINARY_VALUES @@ -3038,8 +2996,6 @@ Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_l Added new block during phi lifting main::@48(between main::@16 and main::@18) Adding NOP phi() at start of @begin Adding NOP phi() at start of @12 -Adding NOP phi() at start of @22 -Adding NOP phi() at start of @24 Adding NOP phi() at start of @26 Adding NOP phi() at start of @36 Adding NOP phi() at start of @40 @@ -3069,92 +3025,90 @@ Adding NOP phi() at start of memset::@1 Adding NOP phi() at start of print_cls Adding NOP phi() at start of print_cls::@1 CALL GRAPH -Calls in [] to main:8 -Calls in [main] to print_cls:15 print_str:17 print_ln:19 print_str:21 print_word_decimal:23 print_ln:25 memset:27 clock_start:29 clock:34 div32u16u:39 print_str:44 print_word_decimal:48 print_str:50 print_dword_decimal:52 print_ln:54 print_str:59 print_word_decimal:68 print_char:70 -Calls in [print_word_decimal] to utoa:98 print_str:100 -Calls in [utoa] to utoa_append:140 -Calls in [print_dword_decimal] to ultoa:164 print_str:166 -Calls in [ultoa] to ultoa_append:195 -Calls in [div32u16u] to divr16u:212 divr16u:219 -Calls in [print_cls] to memset:274 +Calls in [] to main:6 +Calls in [main] to print_cls:13 print_str:15 print_ln:17 print_str:19 print_word_decimal:21 print_ln:23 memset:25 clock_start:27 clock:32 div32u16u:37 print_str:42 print_word_decimal:46 print_str:48 print_dword_decimal:50 print_ln:52 print_str:57 print_word_decimal:66 print_char:68 +Calls in [print_word_decimal] to utoa:96 print_str:98 +Calls in [utoa] to utoa_append:138 +Calls in [print_dword_decimal] to ultoa:162 print_str:164 +Calls in [ultoa] to ultoa_append:193 +Calls in [div32u16u] to divr16u:210 divr16u:217 +Calls in [print_cls] to memset:272 Created 46 initial phi equivalence classes -Not coalescing [20] print_char_cursor#89 ← print_line_cursor#1 -Coalesced [22] print_char_cursor#97 ← print_char_cursor#2 -Coalesced [24] print_line_cursor#57 ← print_line_cursor#1 -Not coalescing [43] print_char_cursor#90 ← print_line_cursor#1 -Coalesced [46] print_word_decimal::w#5 ← print_word_decimal::w#1 -Coalesced (already) [47] print_char_cursor#98 ← print_char_cursor#2 -Coalesced [49] print_char_cursor#91 ← print_char_cursor#2 -Coalesced (already) [53] print_line_cursor#58 ← print_line_cursor#1 -Coalesced [55] print_char_cursor#100 ← print_line_cursor#1 -Not coalescing [58] print_char_cursor#88 ← print_char_cursor#62 -Coalesced [66] print_word_decimal::w#4 ← print_word_decimal::w#2 -Not coalescing [67] print_char_cursor#96 ← print_char_cursor#62 -Coalesced [71] print_char_cursor#102 ← print_char_cursor#10 -Coalesced [74] main::i#17 ← main::i#3 -Coalesced [75] print_char_cursor#99 ← print_char_cursor#78 -Coalesced (already) [76] print_char_cursor#101 ← print_char_cursor#62 -Coalesced [80] main::j#4 ← main::j#0 -Coalesced [81] main::s#4 ← main::s#0 -Coalesced [86] main::i#16 ← main::i#2 -Coalesced [87] main::sieve_i#8 ← main::sieve_i#1 -Coalesced [91] main::j#5 ← main::j#1 -Coalesced [92] main::s#5 ← main::s#1 -Coalesced (already) [99] print_char_cursor#93 ← print_char_cursor#58 -Coalesced [104] print_str::str#11 ← print_str::str#10 -Coalesced (already) [105] print_char_cursor#94 ← print_char_cursor#66 -Coalesced [112] print_str::str#12 ← print_str::str#0 -Coalesced [113] print_char_cursor#95 ← print_char_cursor#1 -Coalesced [116] utoa::value#17 ← utoa::value#1 -Coalesced [128] utoa::value#18 ← utoa::value#2 -Coalesced [129] utoa::started#6 ← utoa::started#2 -Coalesced [130] utoa::buffer#23 ← utoa::buffer#11 -Coalesced [133] utoa::digit#7 ← utoa::digit#1 -Coalesced (already) [134] utoa::value#16 ← utoa::value#6 -Coalesced (already) [135] utoa::started#5 ← utoa::started#4 -Coalesced (already) [136] utoa::buffer#22 ← utoa::buffer#14 -Coalesced [144] utoa::value#19 ← utoa::value#0 -Coalesced [145] utoa::buffer#24 ← utoa::buffer#4 -Coalesced [146] utoa_append::value#6 ← utoa_append::value#0 -Coalesced [153] utoa_append::value#7 ← utoa_append::value#1 -Coalesced [154] utoa_append::digit#5 ← utoa_append::digit#1 -Coalesced [156] print_line_cursor#59 ← print_line_cursor#21 -Coalesced (already) [162] print_line_cursor#60 ← print_line_cursor#1 -Coalesced (already) [165] print_char_cursor#92 ← print_char_cursor#2 -Coalesced [171] ultoa::value#17 ← ultoa::value#1 -Coalesced [183] ultoa::value#18 ← ultoa::value#2 -Coalesced [184] ultoa::started#6 ← ultoa::started#2 -Coalesced [185] ultoa::buffer#23 ← ultoa::buffer#11 -Coalesced [188] ultoa::digit#7 ← ultoa::digit#1 -Coalesced (already) [189] ultoa::value#16 ← ultoa::value#6 -Coalesced (already) [190] ultoa::started#5 ← ultoa::started#4 -Coalesced (already) [191] ultoa::buffer#22 ← ultoa::buffer#14 -Coalesced [199] ultoa::value#19 ← ultoa::value#0 -Coalesced [200] ultoa::buffer#24 ← ultoa::buffer#4 -Coalesced [201] ultoa_append::value#6 ← ultoa_append::value#0 -Coalesced [208] ultoa_append::value#7 ← ultoa_append::value#1 -Coalesced [209] ultoa_append::digit#5 ← ultoa_append::digit#1 -Coalesced [211] divr16u::dividend#9 ← divr16u::dividend#1 -Coalesced [217] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [218] divr16u::dividend#10 ← divr16u::dividend#2 -Coalesced [225] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [226] divr16u::dividend#11 ← divr16u::dividend#5 -Coalesced [233] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [240] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [241] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [247] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [248] divr16u::dividend#12 ← divr16u::dividend#0 -Coalesced [249] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [250] divr16u::i#7 ← divr16u::i#1 -Coalesced [251] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [252] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [253] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [272] memset::dst#5 ← memset::dst#1 +Not coalescing [18] print_char_cursor#89 ← print_line_cursor#1 +Coalesced [20] print_char_cursor#97 ← print_char_cursor#2 +Coalesced [22] print_line_cursor#57 ← print_line_cursor#1 +Not coalescing [41] print_char_cursor#90 ← print_line_cursor#1 +Coalesced [44] print_word_decimal::w#5 ← print_word_decimal::w#1 +Coalesced (already) [45] print_char_cursor#98 ← print_char_cursor#2 +Coalesced [47] print_char_cursor#91 ← print_char_cursor#2 +Coalesced (already) [51] print_line_cursor#58 ← print_line_cursor#1 +Coalesced [53] print_char_cursor#100 ← print_line_cursor#1 +Not coalescing [56] print_char_cursor#88 ← print_char_cursor#62 +Coalesced [64] print_word_decimal::w#4 ← print_word_decimal::w#2 +Not coalescing [65] print_char_cursor#96 ← print_char_cursor#62 +Coalesced [69] print_char_cursor#102 ← print_char_cursor#10 +Coalesced [72] main::i#17 ← main::i#3 +Coalesced [73] print_char_cursor#99 ← print_char_cursor#78 +Coalesced (already) [74] print_char_cursor#101 ← print_char_cursor#62 +Coalesced [78] main::j#4 ← main::j#0 +Coalesced [79] main::s#4 ← main::s#0 +Coalesced [84] main::i#16 ← main::i#2 +Coalesced [85] main::sieve_i#8 ← main::sieve_i#1 +Coalesced [89] main::j#5 ← main::j#1 +Coalesced [90] main::s#5 ← main::s#1 +Coalesced (already) [97] print_char_cursor#93 ← print_char_cursor#58 +Coalesced [102] print_str::str#11 ← print_str::str#10 +Coalesced (already) [103] print_char_cursor#94 ← print_char_cursor#66 +Coalesced [110] print_str::str#12 ← print_str::str#0 +Coalesced [111] print_char_cursor#95 ← print_char_cursor#1 +Coalesced [114] utoa::value#17 ← utoa::value#1 +Coalesced [126] utoa::value#18 ← utoa::value#2 +Coalesced [127] utoa::started#6 ← utoa::started#2 +Coalesced [128] utoa::buffer#23 ← utoa::buffer#11 +Coalesced [131] utoa::digit#7 ← utoa::digit#1 +Coalesced (already) [132] utoa::value#16 ← utoa::value#6 +Coalesced (already) [133] utoa::started#5 ← utoa::started#4 +Coalesced (already) [134] utoa::buffer#22 ← utoa::buffer#14 +Coalesced [142] utoa::value#19 ← utoa::value#0 +Coalesced [143] utoa::buffer#24 ← utoa::buffer#4 +Coalesced [144] utoa_append::value#6 ← utoa_append::value#0 +Coalesced [151] utoa_append::value#7 ← utoa_append::value#1 +Coalesced [152] utoa_append::digit#5 ← utoa_append::digit#1 +Coalesced [154] print_line_cursor#59 ← print_line_cursor#21 +Coalesced (already) [160] print_line_cursor#60 ← print_line_cursor#1 +Coalesced (already) [163] print_char_cursor#92 ← print_char_cursor#2 +Coalesced [169] ultoa::value#17 ← ultoa::value#1 +Coalesced [181] ultoa::value#18 ← ultoa::value#2 +Coalesced [182] ultoa::started#6 ← ultoa::started#2 +Coalesced [183] ultoa::buffer#23 ← ultoa::buffer#11 +Coalesced [186] ultoa::digit#7 ← ultoa::digit#1 +Coalesced (already) [187] ultoa::value#16 ← ultoa::value#6 +Coalesced (already) [188] ultoa::started#5 ← ultoa::started#4 +Coalesced (already) [189] ultoa::buffer#22 ← ultoa::buffer#14 +Coalesced [197] ultoa::value#19 ← ultoa::value#0 +Coalesced [198] ultoa::buffer#24 ← ultoa::buffer#4 +Coalesced [199] ultoa_append::value#6 ← ultoa_append::value#0 +Coalesced [206] ultoa_append::value#7 ← ultoa_append::value#1 +Coalesced [207] ultoa_append::digit#5 ← ultoa_append::digit#1 +Coalesced [209] divr16u::dividend#9 ← divr16u::dividend#1 +Coalesced [215] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [216] divr16u::dividend#10 ← divr16u::dividend#2 +Coalesced [223] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [224] divr16u::dividend#11 ← divr16u::dividend#5 +Coalesced [231] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [238] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [239] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [245] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [246] divr16u::dividend#12 ← divr16u::dividend#0 +Coalesced [247] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [248] divr16u::i#7 ← divr16u::i#1 +Coalesced [249] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [250] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [251] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [270] memset::dst#5 ← memset::dst#1 Coalesced down to 29 phi equivalence classes Culled Empty Block (label) @12 -Culled Empty Block (label) @22 -Culled Empty Block (label) @24 Culled Empty Block (label) @26 Culled Empty Block (label) @36 Culled Empty Block (label) @40 diff --git a/src/test/ref/signed-indexed-subtract.cfg b/src/test/ref/signed-indexed-subtract.cfg index 92f8d65cc..9eef54e02 100644 --- a/src/test/ref/signed-indexed-subtract.cfg +++ b/src/test/ref/signed-indexed-subtract.cfg @@ -35,7 +35,7 @@ main::@2: scope:[main] from main::@6 to:main::@3 main::@3: scope:[main] from main::@2 main::@9 [16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/(byte*) 1024 ) - [16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#62 main::@2/(byte*) 1024 ) + [16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#61 main::@2/(byte*) 1024 ) [16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte) 0 ) [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [18] (signed word) print_sword::w#1 ← *((const signed word[]) words + (byte~) main::$8) @@ -53,7 +53,7 @@ main::@return: scope:[main] from main::@8 [24] return to:@return main::@9: scope:[main] from main::@8 - [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 + [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 to:main::@3 (void()) print_ln() diff --git a/src/test/ref/signed-indexed-subtract.log b/src/test/ref/signed-indexed-subtract.log index 65f3db1ea..b903bac71 100644 --- a/src/test/ref/signed-indexed-subtract.log +++ b/src/test/ref/signed-indexed-subtract.log @@ -3,9 +3,9 @@ Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + 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) -Fixing pointer array-indexing *((signed word[]) words + (byte) main::j) -Fixing pointer array-indexing *((signed word[]) words + (byte) sub::idx) -Fixing pointer array-indexing *((signed word[]) words + (byte) sub::idx) +Fixing pointer array-indexing *((const signed word[]) words + (byte) main::j) +Fixing pointer array-indexing *((const signed word[]) words + (byte) sub::idx) +Fixing pointer array-indexing *((const signed word[]) words + (byte) sub::idx) Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) 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 @@ -53,6 +53,7 @@ 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) main::@4 Culled Empty Block (label) @37 @@ -107,7 +108,7 @@ memset::@return: scope:[memset] from memset::@1 (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:@36 + to:@38 (void()) print_ln() print_ln: scope:[print_ln] from main::@9 @@ -268,23 +269,17 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#36 return to:@return -@36: scope:[] from @12 - (byte*) print_screen#10 ← phi( @12/(byte*) print_screen#0 ) - (byte*) print_char_cursor#53 ← phi( @12/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#23 ← phi( @12/(byte*) print_line_cursor#0 ) - (signed word[]) words ← { (number) -$6000, (number) -$600, (number) -$60, (number) -6, (number) 0, (number) 6, (number) $60, (number) $600, (number) $6000 } - to:@38 (void()) main() main: scope:[main] from @38 - (byte*) print_char_cursor#57 ← phi( @38/(byte*) print_char_cursor#50 ) - (byte*) print_line_cursor#27 ← phi( @38/(byte*) print_line_cursor#20 ) + (byte*) print_char_cursor#56 ← phi( @38/(byte*) print_char_cursor#50 ) + (byte*) print_line_cursor#26 ← phi( @38/(byte*) print_line_cursor#20 ) (byte*) print_screen#8 ← phi( @38/(byte*) print_screen#9 ) (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@7 - (byte*) print_char_cursor#56 ← phi( main/(byte*) print_char_cursor#57 main::@7/(byte*) print_char_cursor#52 ) - (byte*) print_line_cursor#26 ← phi( main/(byte*) print_line_cursor#27 main::@7/(byte*) print_line_cursor#21 ) + (byte*) print_char_cursor#55 ← phi( main/(byte*) print_char_cursor#56 main::@7/(byte*) print_char_cursor#52 ) + (byte*) print_line_cursor#25 ← phi( main/(byte*) print_line_cursor#26 main::@7/(byte*) print_line_cursor#21 ) (byte*) print_screen#7 ← phi( main/(byte*) print_screen#8 main::@7/(byte*) print_screen#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@7/(byte) main::i#1 ) (byte) sub::idx#0 ← (byte) main::i#2 @@ -292,8 +287,8 @@ main::@1: scope:[main] from main main::@7 call sub to:main::@5 main::@5: scope:[main] from main::@1 - (byte*) print_char_cursor#55 ← phi( main::@1/(byte*) print_char_cursor#56 ) - (byte*) print_line_cursor#25 ← phi( main::@1/(byte*) print_line_cursor#26 ) + (byte*) print_char_cursor#54 ← phi( main::@1/(byte*) print_char_cursor#55 ) + (byte*) print_line_cursor#24 ← phi( main::@1/(byte*) print_line_cursor#25 ) (byte*) print_screen#6 ← phi( main::@1/(byte*) print_screen#7 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) sub::idx#1 ← (byte) main::i#3 @@ -301,8 +296,8 @@ main::@5: scope:[main] from main::@1 call sub to:main::@6 main::@6: scope:[main] from main::@5 - (byte*) print_char_cursor#54 ← phi( main::@5/(byte*) print_char_cursor#55 ) - (byte*) print_line_cursor#24 ← phi( main::@5/(byte*) print_line_cursor#25 ) + (byte*) print_char_cursor#53 ← phi( main::@5/(byte*) print_char_cursor#54 ) + (byte*) print_line_cursor#23 ← phi( main::@5/(byte*) print_line_cursor#24 ) (byte*) print_screen#5 ← phi( main::@5/(byte*) print_screen#6 ) (byte) main::i#4 ← phi( main::@5/(byte) main::i#3 ) (byte) sub::idx#2 ← (byte) main::i#4 @@ -310,8 +305,8 @@ main::@6: scope:[main] from main::@5 call sub to:main::@7 main::@7: scope:[main] from main::@6 - (byte*) print_char_cursor#52 ← phi( main::@6/(byte*) print_char_cursor#54 ) - (byte*) print_line_cursor#21 ← phi( main::@6/(byte*) print_line_cursor#24 ) + (byte*) print_char_cursor#52 ← phi( main::@6/(byte*) print_char_cursor#53 ) + (byte*) print_line_cursor#21 ← phi( main::@6/(byte*) print_line_cursor#23 ) (byte*) print_screen#4 ← phi( main::@6/(byte*) print_screen#5 ) (byte) main::i#5 ← phi( main::@6/(byte) main::i#4 ) (byte) main::i#1 ← (byte) main::i#5 + rangenext(0,8) @@ -336,7 +331,7 @@ main::@3: scope:[main] from main::@10 main::@8 (byte*) print_char_cursor#49 ← phi( main::@10/(byte*) print_char_cursor#19 main::@8/(byte*) print_char_cursor#17 ) (byte) main::j#2 ← phi( main::@10/(byte) main::j#1 main::@8/(byte) main::j#0 ) (byte~) main::$8 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word) print_sword::w#1 ← *((signed word[]) words + (byte~) main::$8) + (signed word) print_sword::w#1 ← *((const signed word[]) words + (byte~) main::$8) call print_sword to:main::@9 main::@9: scope:[main] from main::@3 @@ -369,15 +364,15 @@ sub: scope:[sub] from main::@1 main::@5 main::@6 (byte) sub::s#3 ← phi( main::@1/(byte) sub::s#0 main::@5/(byte) sub::s#1 main::@6/(byte) sub::s#2 ) (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@5/(byte) sub::idx#1 main::@6/(byte) sub::idx#2 ) (byte~) sub::$0 ← (byte) sub::idx#3 * (const byte) SIZEOF_SIGNED_WORD - *((signed word[]) words + (byte~) sub::$0) ← *((signed word[]) words + (byte~) sub::$0) - (byte) sub::s#3 + *((const signed word[]) words + (byte~) sub::$0) ← *((const signed word[]) words + (byte~) sub::$0) - (byte) sub::s#3 to:sub::@return sub::@return: scope:[sub] from sub return to:@return -@38: scope:[] from @36 - (byte*) print_screen#9 ← phi( @36/(byte*) print_screen#10 ) - (byte*) print_char_cursor#50 ← phi( @36/(byte*) print_char_cursor#53 ) - (byte*) print_line_cursor#20 ← phi( @36/(byte*) print_line_cursor#23 ) +@38: scope:[] from @12 + (byte*) print_screen#9 ← phi( @12/(byte*) print_screen#0 ) + (byte*) print_char_cursor#50 ← phi( @12/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#20 ← phi( @12/(byte*) print_line_cursor#0 ) call main to:@39 @39: scope:[] from @38 @@ -390,7 +385,6 @@ sub::@return: scope:[sub] from sub SYMBOL TABLE SSA (label) @12 -(label) @36 (label) @38 (label) @39 (label) @begin @@ -542,7 +536,6 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#54 (byte*) print_char_cursor#55 (byte*) print_char_cursor#56 -(byte*) print_char_cursor#57 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 @@ -572,7 +565,6 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#24 (byte*) print_line_cursor#25 (byte*) print_line_cursor#26 -(byte*) print_line_cursor#27 (byte*) print_line_cursor#3 (byte*) print_line_cursor#4 (byte*) print_line_cursor#5 @@ -589,7 +581,6 @@ SYMBOL TABLE SSA (byte*) print_screen (byte*) print_screen#0 (byte*) print_screen#1 -(byte*) print_screen#10 (byte*) print_screen#2 (byte*) print_screen#3 (byte*) print_screen#4 @@ -641,7 +632,7 @@ SYMBOL TABLE SSA (byte) sub::s#1 (byte) sub::s#2 (byte) sub::s#3 -(signed word[]) words +(const signed word[]) words = { (signed word)(number) -$6000, (signed word)(number) -$600, (signed word)(number) -$60, (signed word)(number) -6, (signed word)(number) 0, (signed word)(number) 6, (signed word)(number) $60, (signed word)(number) $600, (signed word)(number) $6000 } Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#9 + (number) $28 @@ -654,8 +645,6 @@ Adding number conversion cast (unumber) $80 in (byte) sub::s#0 ← (number) $80 Adding number conversion cast (unumber) $40 in (byte) sub::s#1 ← (number) $40 Adding number conversion cast (unumber) $40 in (byte) sub::s#2 ← (number) $40 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed word[]) words ← (signed word[]){ (signed word)(number) -$6000, (signed word)(number) -$600, (signed word)(number) -$60, (signed word)(number) -6, (signed word)(number) 0, (signed word)(number) 6, (signed word)(number) $60, (signed word)(number) $600, (signed word)(number) $6000 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -665,13 +654,6 @@ Inlining cast (byte) sub::s#0 ← (unumber)(number) $80 Inlining cast (byte) sub::s#1 ← (unumber)(number) $40 Inlining cast (byte) sub::s#2 ← (unumber)(number) $40 Successful SSA optimization Pass2InlineCast -Simplifying constant integer cast 0 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast $28 -Simplifying constant integer cast 0 -Simplifying constant integer cast 4 -Simplifying constant integer cast $f -Simplifying constant integer cast $3e8 Simplifying constant integer cast -$6000 Simplifying constant integer cast -$600 Simplifying constant integer cast -$60 @@ -681,6 +663,13 @@ Simplifying constant integer cast 6 Simplifying constant integer cast $60 Simplifying constant integer cast $600 Simplifying constant integer cast $6000 +Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast $28 +Simplifying constant integer cast 0 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Simplifying constant integer cast $3e8 Simplifying constant integer cast $80 Simplifying constant integer cast $40 Simplifying constant integer cast $40 @@ -707,7 +696,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2 Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 Alias (byte*) memset::end#1 = (byte*) memset::end#2 Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#53 (byte*) print_screen#10 (byte*) print_line_cursor#20 (byte*) print_char_cursor#50 (byte*) print_screen#9 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#20 (byte*) print_char_cursor#50 (byte*) print_screen#9 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#1 (byte*) print_line_cursor#11 (byte*) print_char_cursor#23 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#44 Alias (signed word) print_sword::w#2 = (signed word) print_sword::w#5 (signed word) print_sword::w#3 (signed word) print_sword::w#7 (signed word) print_sword::w#6 @@ -728,8 +717,8 @@ Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#35 (byte*) print_ Alias (byte*) print_line_cursor#12 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_line_cursor#3 (byte*) print_char_cursor#15 (byte*) print_char_cursor#36 (byte*) print_line_cursor#4 (byte*) print_char_cursor#16 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 Alias (byte*) print_screen#3 = (byte*) print_screen#6 (byte*) print_screen#7 (byte*) print_screen#5 (byte*) print_screen#4 -Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#26 (byte*) print_line_cursor#24 (byte*) print_line_cursor#21 -Alias (byte*) print_char_cursor#48 = (byte*) print_char_cursor#55 (byte*) print_char_cursor#56 (byte*) print_char_cursor#54 (byte*) print_char_cursor#52 +Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#24 (byte*) print_line_cursor#25 (byte*) print_line_cursor#23 (byte*) print_line_cursor#21 +Alias (byte*) print_char_cursor#48 = (byte*) print_char_cursor#54 (byte*) print_char_cursor#55 (byte*) print_char_cursor#53 (byte*) print_char_cursor#52 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 @@ -762,11 +751,11 @@ Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_screen#3 Identical Phi Values (byte*) print_screen#8 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#57 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#56 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_screen#3 (byte*) print_screen#8 -Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#27 -Identical Phi Values (byte*) print_char_cursor#48 (byte*) print_char_cursor#57 +Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#26 +Identical Phi Values (byte*) print_char_cursor#48 (byte*) print_char_cursor#56 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#12 Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_line_cursor#12 Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#26 @@ -784,17 +773,14 @@ Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_ln::$1 [28] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 Simple Condition (bool~) print_sword::$0 [37] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) main::$4 [125] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 -Simple Condition (bool~) main::$7 [144] if((byte) main::j#1!=rangelast(0,8)) goto main::@3 +Simple Condition (bool~) main::$4 [123] if((byte) main::i#1!=rangelast(0,8)) goto main::@1 +Simple Condition (bool~) main::$7 [142] if((byte) main::j#1!=rangelast(0,8)) goto main::@3 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (signed word[]) { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = ' ' Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const signed word[]) words = { -$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000 } Constant (const byte) main::i#0 = 0 Constant (const byte) sub::s#0 = $80 Constant (const byte) sub::s#1 = $40 @@ -809,10 +795,10 @@ Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [123] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [125] if(main::i#1!=rangelast(0,8)) goto main::@1 to (number) 9 -Resolved ranged next value [142] main::j#1 ← ++ main::j#2 to ++ -Resolved ranged comparison value [144] if(main::j#1!=rangelast(0,8)) goto main::@3 to (number) 9 +Resolved ranged next value [121] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [123] if(main::i#1!=rangelast(0,8)) goto main::@1 to (number) 9 +Resolved ranged next value [140] main::j#1 ← ++ main::j#2 to ++ +Resolved ranged comparison value [142] if(main::j#1!=rangelast(0,8)) goto main::@3 to (number) 9 Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars Adding number conversion cast (unumber) 9 in if((byte) main::i#1!=(number) 9) goto main::@1 @@ -858,7 +844,6 @@ Added new block during phi lifting main::@11(between main::@7 and main::@1) Added new block during phi lifting main::@12(between main::@10 and main::@3) Adding NOP phi() at start of @begin Adding NOP phi() at start of @12 -Adding NOP phi() at start of @36 Adding NOP phi() at start of @38 Adding NOP phi() at start of @39 Adding NOP phi() at start of @end @@ -876,37 +861,36 @@ Adding NOP phi() at start of memset Adding NOP phi() at start of memset::@2 Adding NOP phi() at start of memset::@1 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to sub:11 sub:14 sub:17 print_cls:21 print_sword:26 print_ln:28 -Calls in [print_sword] to print_char:45 print_word:49 print_char:53 -Calls in [print_word] to print_byte:62 print_byte:65 -Calls in [print_byte] to print_char:73 print_char:78 -Calls in [print_cls] to memset:82 +Calls in [] to main:3 +Calls in [main] to sub:10 sub:13 sub:16 print_cls:20 print_sword:25 print_ln:27 +Calls in [print_sword] to print_char:44 print_word:48 print_char:52 +Calls in [print_word] to print_byte:61 print_byte:64 +Calls in [print_byte] to print_char:72 print_char:77 +Calls in [print_cls] to memset:81 Created 12 initial phi equivalence classes -Coalesced [10] sub::idx#4 ← sub::idx#0 -Coalesced [13] sub::idx#5 ← sub::idx#1 -Coalesced [16] sub::idx#6 ← sub::idx#2 -Coalesced [32] main::j#5 ← main::j#1 -Not coalescing [33] print_char_cursor#62 ← print_line_cursor#1 -Coalesced [34] print_line_cursor#30 ← print_line_cursor#1 -Coalesced [35] main::i#6 ← main::i#1 -Coalesced [36] print_line_cursor#28 ← print_line_cursor#19 -Coalesced (already) [42] print_line_cursor#29 ← print_line_cursor#1 -Coalesced [44] print_char_cursor#61 ← print_char_cursor#49 -Coalesced [46] print_sword::w#9 ← print_sword::w#1 -Coalesced (already) [52] print_char_cursor#60 ← print_char_cursor#49 -Coalesced [55] print_sword::w#8 ← print_sword::w#0 -Coalesced [61] print_byte::b#4 ← print_byte::b#0 -Coalesced [64] print_byte::b#5 ← print_byte::b#1 -Coalesced [71] print_char::ch#5 ← print_char::ch#2 -Coalesced [72] print_char_cursor#58 ← print_char_cursor#13 -Coalesced [76] print_char::ch#6 ← print_char::ch#3 -Coalesced (already) [77] print_char_cursor#59 ← print_char_cursor#13 -Coalesced [93] memset::dst#4 ← memset::dst#1 +Coalesced [9] sub::idx#4 ← sub::idx#0 +Coalesced [12] sub::idx#5 ← sub::idx#1 +Coalesced [15] sub::idx#6 ← sub::idx#2 +Coalesced [31] main::j#5 ← main::j#1 +Not coalescing [32] print_char_cursor#61 ← print_line_cursor#1 +Coalesced [33] print_line_cursor#29 ← print_line_cursor#1 +Coalesced [34] main::i#6 ← main::i#1 +Coalesced [35] print_line_cursor#27 ← print_line_cursor#19 +Coalesced (already) [41] print_line_cursor#28 ← print_line_cursor#1 +Coalesced [43] print_char_cursor#60 ← print_char_cursor#49 +Coalesced [45] print_sword::w#9 ← print_sword::w#1 +Coalesced (already) [51] print_char_cursor#59 ← print_char_cursor#49 +Coalesced [54] print_sword::w#8 ← print_sword::w#0 +Coalesced [60] print_byte::b#4 ← print_byte::b#0 +Coalesced [63] print_byte::b#5 ← print_byte::b#1 +Coalesced [70] print_char::ch#5 ← print_char::ch#2 +Coalesced [71] print_char_cursor#57 ← print_char_cursor#13 +Coalesced [75] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [76] print_char_cursor#58 ← print_char_cursor#13 +Coalesced [92] memset::dst#4 ← memset::dst#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) @12 -Culled Empty Block (label) @36 Culled Empty Block (label) @39 Culled Empty Block (label) main::@8 Culled Empty Block (label) main::@11 @@ -979,7 +963,7 @@ main::@2: scope:[main] from main::@6 to:main::@3 main::@3: scope:[main] from main::@2 main::@9 [16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/(byte*) 1024 ) - [16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#62 main::@2/(byte*) 1024 ) + [16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#61 main::@2/(byte*) 1024 ) [16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte) 0 ) [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [18] (signed word) print_sword::w#1 ← *((const signed word[]) words + (byte~) main::$8) @@ -997,7 +981,7 @@ main::@return: scope:[main] from main::@8 [24] return to:@return main::@9: scope:[main] from main::@8 - [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 + [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 to:main::@3 (void()) print_ln() @@ -1148,7 +1132,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#13 3.821428571428572 (byte*) print_char_cursor#34 6.0 (byte*) print_char_cursor#49 2.5 -(byte*~) print_char_cursor#62 22.0 +(byte*~) print_char_cursor#61 22.0 (void()) print_cls() (byte*) print_line_cursor (byte*) print_line_cursor#1 46.42857142857143 @@ -1180,7 +1164,7 @@ Initial phi equivalence classes [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -[ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +[ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ memset::dst#2 memset::dst#1 ] [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] @@ -1196,7 +1180,7 @@ Complete equivalence classes [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -[ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +[ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ memset::dst#2 memset::dst#1 ] [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] @@ -1211,7 +1195,7 @@ Allocated zp[1]:3 [ main::j#2 main::j#1 ] Allocated zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] Allocated zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] Allocated zp[1]:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Allocated zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +Allocated zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] Allocated zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp[2]:12 [ memset::dst#2 memset::dst#1 ] Allocated zp[1]:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] @@ -1378,7 +1362,7 @@ main: { rts // main::@9 __b9: - // [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -1386,7 +1370,7 @@ main: { // [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] __b3_from___b9: // [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - // [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#62 [phi:main::@9->main::@3#1] -- register_copy + // [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#61 [phi:main::@9->main::@3#1] -- register_copy // [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp __b3 } @@ -1678,7 +1662,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a -Statement [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#62 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#62 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ) always clobbers reg byte a Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] ) always clobbers reg byte a @@ -1700,7 +1684,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:15 [ sub::s Statement [69] *((const signed word[]) words + (byte~) sub::$0) ← *((const signed word[]) words + (byte~) sub::$0) - (byte) sub::s#3 [ ] ( main:2::sub:7 [ main::i#2 ] main:2::sub:9 [ main::i#2 ] main:2::sub:11 [ main::i#2 ] ) always clobbers reg byte a Statement [17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 main::$8 ] ) always clobbers reg byte a Statement [18] (signed word) print_sword::w#1 ← *((const signed word[]) words + (byte~) main::$8) [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ( main:2 [ main::j#2 print_char_cursor#49 print_line_cursor#19 print_sword::w#1 ] ) always clobbers reg byte a -Statement [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#62 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#62 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ( main:2 [ main::j#1 print_char_cursor#61 print_line_cursor#1 ] ) always clobbers reg byte a Statement [28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a Statement [29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#13 ] ( main:2::print_ln:21 [ main::j#2 print_line_cursor#1 print_char_cursor#13 ] ) always clobbers reg byte a Statement [31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#49 print_sword::w#1 ] ( main:2::print_sword:19 [ main::j#2 print_line_cursor#19 print_char_cursor#49 print_sword::w#1 ] ) always clobbers reg byte a @@ -1720,7 +1704,7 @@ Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , Potential registers zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp[2]:4 , Potential registers zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] : zp[2]:6 , Potential registers zp[1]:8 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] : zp[2]:9 , +Potential registers zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] : zp[2]:9 , Potential registers zp[1]:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:11 , reg byte x , Potential registers zp[2]:12 [ memset::dst#2 memset::dst#1 ] : zp[2]:12 , Potential registers zp[1]:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , @@ -1732,7 +1716,7 @@ Potential registers zp[1]:20 [ print_byte::$2 ] : zp[1]:20 , reg byte a , reg by Potential registers zp[1]:21 [ sub::$0 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 252.6: zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 34.32: zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +Uplift Scope [] 252.6: zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 34.32: zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] Uplift Scope [sub] 101: zp[1]:14 [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] 6: zp[1]:21 [ sub::$0 ] 1: zp[1]:15 [ sub::s#3 ] Uplift Scope [main] 24.36: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:16 [ main::$8 ] 16.5: zp[1]:3 [ main::j#2 main::j#1 ] Uplift Scope [memset] 36.67: zp[2]:12 [ memset::dst#2 memset::dst#1 ] @@ -1744,7 +1728,7 @@ Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 6585 combination zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +Uplifting [] best 6585 combination zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp[2]:9 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] Uplifting [sub] best 6482 combination reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] reg byte a [ sub::$0 ] reg byte x [ sub::s#3 ] Uplifting [main] best 6222 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$8 ] reg byte x [ main::j#2 main::j#1 ] Uplifting [memset] best 6222 combination zp[2]:12 [ memset::dst#2 memset::dst#1 ] @@ -1760,7 +1744,7 @@ Uplifting [print_byte] best 6199 combination zp[1]:11 [ print_byte::b#2 print_by Coalescing zero page register [ zp[2]:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 ] ] with [ zp[2]:17 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:12 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] ] Allocated (was zp[2]:6) zp[2]:2 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] -Allocated (was zp[2]:9) zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +Allocated (was zp[2]:9) zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] Allocated (was zp[1]:11) zp[1]:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated (was zp[2]:12) zp[2]:7 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] @@ -1905,7 +1889,7 @@ main: { rts // main::@9 __b9: - // [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -1913,7 +1897,7 @@ main: { // [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] __b3_from___b9: // [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - // [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#62 [phi:main::@9->main::@3#1] -- register_copy + // [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#61 [phi:main::@9->main::@3#1] -- register_copy // [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp __b3 } @@ -2339,7 +2323,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#13 print_char_cursor zp[2]:4 3.821428571428572 (byte*) print_char_cursor#34 print_char_cursor zp[2]:4 6.0 (byte*) print_char_cursor#49 print_char_cursor zp[2]:4 2.5 -(byte*~) print_char_cursor#62 print_char_cursor zp[2]:4 22.0 +(byte*~) print_char_cursor#61 print_char_cursor zp[2]:4 22.0 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -2382,7 +2366,7 @@ reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp[2]:2 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] zp[1]:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:7 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] @@ -2509,14 +2493,14 @@ main: { rts // main::@9 __b9: - // [25] (byte*~) print_char_cursor#62 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [25] (byte*~) print_char_cursor#61 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 sta.z print_char_cursor+1 // [16] phi from main::@9 to main::@3 [phi:main::@9->main::@3] // [16] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@9->main::@3#0] -- register_copy - // [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#62 [phi:main::@9->main::@3#1] -- register_copy + // [16] phi (byte*) print_char_cursor#49 = (byte*~) print_char_cursor#61 [phi:main::@9->main::@3#1] -- register_copy // [16] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@9->main::@3#2] -- register_copy jmp __b3 } diff --git a/src/test/ref/signed-indexed-subtract.sym b/src/test/ref/signed-indexed-subtract.sym index fe447ec19..86ca35675 100644 --- a/src/test/ref/signed-indexed-subtract.sym +++ b/src/test/ref/signed-indexed-subtract.sym @@ -58,7 +58,7 @@ (byte*) print_char_cursor#13 print_char_cursor zp[2]:4 3.821428571428572 (byte*) print_char_cursor#34 print_char_cursor zp[2]:4 6.0 (byte*) print_char_cursor#49 print_char_cursor zp[2]:4 2.5 -(byte*~) print_char_cursor#62 print_char_cursor zp[2]:4 22.0 +(byte*~) print_char_cursor#61 print_char_cursor zp[2]:4 22.0 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -101,7 +101,7 @@ reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp[2]:2 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#62 ] +zp[2]:4 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#61 ] zp[1]:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] zp[2]:7 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ] diff --git a/src/test/ref/sinus-basic.log b/src/test/ref/sinus-basic.log index c2f013f28..b8d8d1876 100644 --- a/src/test/ref/sinus-basic.log +++ b/src/test/ref/sinus-basic.log @@ -319,8 +319,6 @@ divFACby10::@return: scope:[divFACby10] from divFACby10 main: scope:[main] from @64 (byte*) print_line_cursor#28 ← phi( @64/(byte*) print_line_cursor#14 ) (byte*) print_char_cursor#46 ← phi( @64/(byte*) print_char_cursor#33 ) - (byte[]) main::f_i ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } - (byte[]) main::f_127 ← { (number) 0, (number) 0, (number) 0, (number) 0, (number) 0 } (word) setFAC::w#0 ← (number) $4fb call setFAC to:main::@3 @@ -332,7 +330,7 @@ main::@3: scope:[main] from main main::@4: scope:[main] from main::@3 (byte*) print_line_cursor#26 ← phi( main::@3/(byte*) print_line_cursor#27 ) (byte*) print_char_cursor#44 ← phi( main::@3/(byte*) print_char_cursor#45 ) - (byte*) setMEMtoFAC::mem#0 ← (byte[]) main::f_127 + (byte*) setMEMtoFAC::mem#0 ← (const byte[]) main::f_127 call setMEMtoFAC to:main::@5 main::@5: scope:[main] from main::@4 @@ -359,7 +357,7 @@ main::@7: scope:[main] from main::@6 (byte) main::i#12 ← phi( main::@6/(byte) main::i#13 ) (byte*) print_line_cursor#22 ← phi( main::@6/(byte*) print_line_cursor#23 ) (byte*) print_char_cursor#40 ← phi( main::@6/(byte*) print_char_cursor#41 ) - (byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i + (byte*) setMEMtoFAC::mem#1 ← (const byte[]) main::f_i call setMEMtoFAC to:main::@8 main::@8: scope:[main] from main::@7 @@ -373,7 +371,7 @@ main::@9: scope:[main] from main::@8 (byte) main::i#10 ← phi( main::@8/(byte) main::i#11 ) (byte*) print_line_cursor#20 ← phi( main::@8/(byte*) print_line_cursor#21 ) (byte*) print_char_cursor#38 ← phi( main::@8/(byte*) print_char_cursor#39 ) - (byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i + (byte*) divMEMbyFAC::mem#0 ← (const byte[]) main::f_i call divMEMbyFAC to:main::@10 main::@10: scope:[main] from main::@9 @@ -386,14 +384,14 @@ main::@11: scope:[main] from main::@10 (byte) main::i#8 ← phi( main::@10/(byte) main::i#9 ) (byte*) print_line_cursor#18 ← phi( main::@10/(byte*) print_line_cursor#19 ) (byte*) print_char_cursor#36 ← phi( main::@10/(byte*) print_char_cursor#37 ) - (byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127 + (byte*) mulFACbyMEM::mem#1 ← (const byte[]) main::f_127 call mulFACbyMEM to:main::@12 main::@12: scope:[main] from main::@11 (byte) main::i#7 ← phi( main::@11/(byte) main::i#8 ) (byte*) print_line_cursor#17 ← phi( main::@11/(byte*) print_line_cursor#18 ) (byte*) print_char_cursor#35 ← phi( main::@11/(byte*) print_char_cursor#36 ) - (byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127 + (byte*) addMEMtoFAC::mem#0 ← (const byte[]) main::f_127 call addMEMtoFAC to:main::@13 main::@13: scope:[main] from main::@12 @@ -517,9 +515,9 @@ SYMBOL TABLE SSA (label) main::@8 (label) main::@9 (label) main::@return -(byte[]) main::f_127 +(const byte[]) main::f_127 = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } (const byte*) main::f_2pi = (byte*)(number) $e2e5 -(byte[]) main::f_i +(const byte[]) main::f_i = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } (byte) main::i (byte) main::i#0 (byte) main::i#1 @@ -705,9 +703,6 @@ Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte:: Adding number conversion cast (unumber) $4fb in (word) setFAC::w#0 ← (number) $4fb Adding number conversion cast (unumber) $19 in (word) setFAC::w#2 ← (number) $19 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) main::f_i ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Added casts to value list in (byte[]) main::f_127 ← (byte[]){ (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 Inlining cast (word~) setMEMtoFAC::$0 ← (word)(byte*) setMEMtoFAC::mem#2 Inlining cast (word~) addMEMtoFAC::$0 ← (word)(byte*) addMEMtoFAC::mem#1 @@ -719,6 +714,16 @@ Inlining cast (word) setFAC::w#2 ← (unumber)(number) $19 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 254 Simplifying constant pointer cast (byte*) 255 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 58085 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $28 @@ -726,16 +731,6 @@ Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast *((const byte*) memHi) Simplifying constant integer cast *((const byte*) memLo) -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast $4fb Simplifying constant integer cast $19 Successful SSA optimization PassNCastSimplification @@ -797,21 +792,15 @@ Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#12 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#10 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -Simple Condition (bool~) main::$15 [160] if((byte) main::i#1!=rangelast(1,$19)) goto main::@1 +Simple Condition (bool~) main::$15 [158] if((byte) main::i#1!=rangelast(1,$19)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Identified constant from value list (byte[]) { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_char_cursor#0 = (byte*) 1024 -Constant (const byte[]) main::f_i = { 0, 0, 0, 0, 0 } -Constant (const byte[]) main::f_127 = { 0, 0, 0, 0, 0 } Constant (const word) setFAC::w#0 = $4fb +Constant (const byte*) setMEMtoFAC::mem#0 = main::f_127 Constant (const byte) main::i#0 = 1 Constant (const byte*) mulFACbyMEM::mem#0 = main::f_2pi -Constant (const word) setFAC::w#2 = $19 -Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) setMEMtoFAC::mem#0 = main::f_127 Constant (const byte*) setMEMtoFAC::mem#1 = main::f_i +Constant (const word) setFAC::w#2 = $19 Constant (const byte*) divMEMbyFAC::mem#0 = main::f_i Constant (const byte*) mulFACbyMEM::mem#1 = main::f_127 Constant (const byte*) addMEMtoFAC::mem#0 = main::f_127 @@ -819,8 +808,8 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const word) addMEMtoFAC::prepareMEM1_mem#0 = (word)addMEMtoFAC::mem#0 Constant (const word) divMEMbyFAC::prepareMEM1_mem#0 = (word)divMEMbyFAC::mem#0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [158] main::i#1 ← ++ main::i#10 to ++ -Resolved ranged comparison value [160] if(main::i#1!=rangelast(1,$19)) goto main::@1 to (number) $1a +Resolved ranged next value [156] main::i#1 ← ++ main::i#10 to ++ +Resolved ranged comparison value [158] if(main::i#1!=rangelast(1,$19)) goto main::@1 to (number) $1a Adding number conversion cast (unumber) $1a in if((byte) main::i#1!=(number) $1a) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast $1a diff --git a/src/test/ref/sinusgen8.asm b/src/test/ref/sinusgen8.asm index f7957b621..83d65d15f 100644 --- a/src/test/ref/sinusgen8.asm +++ b/src/test/ref/sinusgen8.asm @@ -438,6 +438,6 @@ divr16u: { rts } print_hextab: .text "0123456789abcdef" - sintab2: .fill $c0, 0 // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc + sintab2: .fill $c0, 0 diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log index b0d28440d..0b0f73ceb 100644 --- a/src/test/ref/sinusgen8.log +++ b/src/test/ref/sinusgen8.log @@ -640,7 +640,6 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (byte*) print_char_cursor#47 ← phi( @32/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @32/(byte*) print_line_cursor#0 ) (signed byte[$c0]) sintab2 ← { fill( $c0, 0) } - (byte[]) sintabref ← { (number) 0, (number) 4, (number) 8, (number) $c, (number) $11, (number) $15, (number) $19, (number) $1d, (number) $21, (number) $25, (number) $29, (number) $2d, (number) $31, (number) $35, (number) $38, (number) $3c, (number) $40, (number) $43, (number) $47, (number) $4a, (number) $4e, (number) $51, (number) $54, (number) $57, (number) $5a, (number) $5d, (number) $60, (number) $63, (number) $65, (number) $68, (number) $6a, (number) $6c, (number) $6e, (number) $70, (number) $72, (number) $74, (number) $76, (number) $77, (number) $79, (number) $7a, (number) $7b, (number) $7c, (number) $7d, (number) $7e, (number) $7e, (number) $7f, (number) $7f, (number) $7f, (number) $80, (number) $7f, (number) $7f, (number) $7f, (number) $7e, (number) $7e, (number) $7d, (number) $7c, (number) $7b, (number) $7a, (number) $79, (number) $77, (number) $76, (number) $74, (number) $72, (number) $70, (number) $6e, (number) $6c, (number) $6a, (number) $68, (number) $65, (number) $63, (number) $60, (number) $5d, (number) $5a, (number) $57, (number) $54, (number) $51, (number) $4e, (number) $4a, (number) $47, (number) $43, (number) $40, (number) $3c, (number) $38, (number) $35, (number) $31, (number) $2d, (number) $29, (number) $25, (number) $21, (number) $1d, (number) $19, (number) $15, (number) $11, (number) $c, (number) 8, (number) 4, (number) 0, (number) $fc, (number) $f8, (number) $f4, (number) $ef, (number) $eb, (number) $e7, (number) $e3, (number) $df, (number) $db, (number) $d7, (number) $d3, (number) $cf, (number) $cb, (number) $c8, (number) $c4, (number) $c0, (number) $bd, (number) $b9, (number) $b6, (number) $b2, (number) $af, (number) $ac, (number) $a9, (number) $a6, (number) $a3, (number) $a0, (number) $9d, (number) $9b, (number) $98, (number) $96, (number) $94, (number) $92, (number) $90, (number) $8e, (number) $8c, (number) $8a, (number) $89, (number) $87, (number) $86, (number) $85, (number) $84, (number) $83, (number) $82, (number) $82, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $82, (number) $82, (number) $83, (number) $84, (number) $85, (number) $86, (number) $87, (number) $89, (number) $8a, (number) $8c, (number) $8e, (number) $90, (number) $92, (number) $94, (number) $96, (number) $98, (number) $9b, (number) $9d, (number) $a0, (number) $a3, (number) $a6, (number) $a9, (number) $ac, (number) $af, (number) $b2, (number) $b6, (number) $b9, (number) $bd, (number) $c0, (number) $c4, (number) $c8, (number) $cb, (number) $cf, (number) $d3, (number) $d7, (number) $db, (number) $df, (number) $e3, (number) $e7, (number) $eb, (number) $ef, (number) $f4, (number) $f8, (number) $fc } to:@57 (void()) main() @@ -669,7 +668,7 @@ main::@1: scope:[main] from main::@4 main::@6 (byte*) print_line_cursor#16 ← phi( main::@4/(byte*) print_line_cursor#3 main::@6/(byte*) print_line_cursor#11 ) (byte*) print_char_cursor#42 ← phi( main::@4/(byte*) print_char_cursor#14 main::@6/(byte*) print_char_cursor#16 ) (byte) main::i#2 ← phi( main::@4/(byte) main::i#0 main::@6/(byte) main::i#1 ) - (signed byte~) main::$2 ← ((signed byte)) *((byte[]) sintabref + (byte) main::i#2) + (signed byte~) main::$2 ← ((signed byte)) *((const byte[]) sintabref + (byte) main::i#2) (signed byte~) main::$3 ← *((signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte~) main::$2 (signed byte) main::sb#0 ← (signed byte~) main::$3 (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 @@ -1234,7 +1233,7 @@ SYMBOL TABLE SSA (word) sin8s_gen::x#3 (word) sin8s_gen::x#4 (signed byte[$c0]) sintab2 -(byte[]) sintabref +(const byte[]) sintabref = { (byte)(number) 0, (byte)(number) 4, (byte)(number) 8, (byte)(number) $c, (byte)(number) $11, (byte)(number) $15, (byte)(number) $19, (byte)(number) $1d, (byte)(number) $21, (byte)(number) $25, (byte)(number) $29, (byte)(number) $2d, (byte)(number) $31, (byte)(number) $35, (byte)(number) $38, (byte)(number) $3c, (byte)(number) $40, (byte)(number) $43, (byte)(number) $47, (byte)(number) $4a, (byte)(number) $4e, (byte)(number) $51, (byte)(number) $54, (byte)(number) $57, (byte)(number) $5a, (byte)(number) $5d, (byte)(number) $60, (byte)(number) $63, (byte)(number) $65, (byte)(number) $68, (byte)(number) $6a, (byte)(number) $6c, (byte)(number) $6e, (byte)(number) $70, (byte)(number) $72, (byte)(number) $74, (byte)(number) $76, (byte)(number) $77, (byte)(number) $79, (byte)(number) $7a, (byte)(number) $7b, (byte)(number) $7c, (byte)(number) $7d, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $80, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7d, (byte)(number) $7c, (byte)(number) $7b, (byte)(number) $7a, (byte)(number) $79, (byte)(number) $77, (byte)(number) $76, (byte)(number) $74, (byte)(number) $72, (byte)(number) $70, (byte)(number) $6e, (byte)(number) $6c, (byte)(number) $6a, (byte)(number) $68, (byte)(number) $65, (byte)(number) $63, (byte)(number) $60, (byte)(number) $5d, (byte)(number) $5a, (byte)(number) $57, (byte)(number) $54, (byte)(number) $51, (byte)(number) $4e, (byte)(number) $4a, (byte)(number) $47, (byte)(number) $43, (byte)(number) $40, (byte)(number) $3c, (byte)(number) $38, (byte)(number) $35, (byte)(number) $31, (byte)(number) $2d, (byte)(number) $29, (byte)(number) $25, (byte)(number) $21, (byte)(number) $1d, (byte)(number) $19, (byte)(number) $15, (byte)(number) $11, (byte)(number) $c, (byte)(number) 8, (byte)(number) 4, (byte)(number) 0, (byte)(number) $fc, (byte)(number) $f8, (byte)(number) $f4, (byte)(number) $ef, (byte)(number) $eb, (byte)(number) $e7, (byte)(number) $e3, (byte)(number) $df, (byte)(number) $db, (byte)(number) $d7, (byte)(number) $d3, (byte)(number) $cf, (byte)(number) $cb, (byte)(number) $c8, (byte)(number) $c4, (byte)(number) $c0, (byte)(number) $bd, (byte)(number) $b9, (byte)(number) $b6, (byte)(number) $b2, (byte)(number) $af, (byte)(number) $ac, (byte)(number) $a9, (byte)(number) $a6, (byte)(number) $a3, (byte)(number) $a0, (byte)(number) $9d, (byte)(number) $9b, (byte)(number) $98, (byte)(number) $96, (byte)(number) $94, (byte)(number) $92, (byte)(number) $90, (byte)(number) $8e, (byte)(number) $8c, (byte)(number) $8a, (byte)(number) $89, (byte)(number) $87, (byte)(number) $86, (byte)(number) $85, (byte)(number) $84, (byte)(number) $83, (byte)(number) $82, (byte)(number) $82, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $82, (byte)(number) $82, (byte)(number) $83, (byte)(number) $84, (byte)(number) $85, (byte)(number) $86, (byte)(number) $87, (byte)(number) $89, (byte)(number) $8a, (byte)(number) $8c, (byte)(number) $8e, (byte)(number) $90, (byte)(number) $92, (byte)(number) $94, (byte)(number) $96, (byte)(number) $98, (byte)(number) $9b, (byte)(number) $9d, (byte)(number) $a0, (byte)(number) $a3, (byte)(number) $a6, (byte)(number) $a9, (byte)(number) $ac, (byte)(number) $af, (byte)(number) $b2, (byte)(number) $b6, (byte)(number) $b9, (byte)(number) $bd, (byte)(number) $c0, (byte)(number) $c4, (byte)(number) $c8, (byte)(number) $cb, (byte)(number) $cf, (byte)(number) $d3, (byte)(number) $d7, (byte)(number) $db, (byte)(number) $df, (byte)(number) $e3, (byte)(number) $e7, (byte)(number) $eb, (byte)(number) $ef, (byte)(number) $f4, (byte)(number) $f8, (byte)(number) $fc } (const word) wavelength = (word) $c0 Adding number conversion cast (unumber) 0 in (word) divr16u::quotient#0 ← (number) 0 @@ -1275,8 +1274,6 @@ Adding number conversion cast (unumber) $f in (number~) print_byte::$2 ← (byte Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte::$2 ← (byte) print_byte::b#2 & (unumber)(number) $f Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) sintabref ← (byte[]){ (byte)(number) 0, (byte)(number) 4, (byte)(number) 8, (byte)(number) $c, (byte)(number) $11, (byte)(number) $15, (byte)(number) $19, (byte)(number) $1d, (byte)(number) $21, (byte)(number) $25, (byte)(number) $29, (byte)(number) $2d, (byte)(number) $31, (byte)(number) $35, (byte)(number) $38, (byte)(number) $3c, (byte)(number) $40, (byte)(number) $43, (byte)(number) $47, (byte)(number) $4a, (byte)(number) $4e, (byte)(number) $51, (byte)(number) $54, (byte)(number) $57, (byte)(number) $5a, (byte)(number) $5d, (byte)(number) $60, (byte)(number) $63, (byte)(number) $65, (byte)(number) $68, (byte)(number) $6a, (byte)(number) $6c, (byte)(number) $6e, (byte)(number) $70, (byte)(number) $72, (byte)(number) $74, (byte)(number) $76, (byte)(number) $77, (byte)(number) $79, (byte)(number) $7a, (byte)(number) $7b, (byte)(number) $7c, (byte)(number) $7d, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $80, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7d, (byte)(number) $7c, (byte)(number) $7b, (byte)(number) $7a, (byte)(number) $79, (byte)(number) $77, (byte)(number) $76, (byte)(number) $74, (byte)(number) $72, (byte)(number) $70, (byte)(number) $6e, (byte)(number) $6c, (byte)(number) $6a, (byte)(number) $68, (byte)(number) $65, (byte)(number) $63, (byte)(number) $60, (byte)(number) $5d, (byte)(number) $5a, (byte)(number) $57, (byte)(number) $54, (byte)(number) $51, (byte)(number) $4e, (byte)(number) $4a, (byte)(number) $47, (byte)(number) $43, (byte)(number) $40, (byte)(number) $3c, (byte)(number) $38, (byte)(number) $35, (byte)(number) $31, (byte)(number) $2d, (byte)(number) $29, (byte)(number) $25, (byte)(number) $21, (byte)(number) $1d, (byte)(number) $19, (byte)(number) $15, (byte)(number) $11, (byte)(number) $c, (byte)(number) 8, (byte)(number) 4, (byte)(number) 0, (byte)(number) $fc, (byte)(number) $f8, (byte)(number) $f4, (byte)(number) $ef, (byte)(number) $eb, (byte)(number) $e7, (byte)(number) $e3, (byte)(number) $df, (byte)(number) $db, (byte)(number) $d7, (byte)(number) $d3, (byte)(number) $cf, (byte)(number) $cb, (byte)(number) $c8, (byte)(number) $c4, (byte)(number) $c0, (byte)(number) $bd, (byte)(number) $b9, (byte)(number) $b6, (byte)(number) $b2, (byte)(number) $af, (byte)(number) $ac, (byte)(number) $a9, (byte)(number) $a6, (byte)(number) $a3, (byte)(number) $a0, (byte)(number) $9d, (byte)(number) $9b, (byte)(number) $98, (byte)(number) $96, (byte)(number) $94, (byte)(number) $92, (byte)(number) $90, (byte)(number) $8e, (byte)(number) $8c, (byte)(number) $8a, (byte)(number) $89, (byte)(number) $87, (byte)(number) $86, (byte)(number) $85, (byte)(number) $84, (byte)(number) $83, (byte)(number) $82, (byte)(number) $82, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $82, (byte)(number) $82, (byte)(number) $83, (byte)(number) $84, (byte)(number) $85, (byte)(number) $86, (byte)(number) $87, (byte)(number) $89, (byte)(number) $8a, (byte)(number) $8c, (byte)(number) $8e, (byte)(number) $90, (byte)(number) $92, (byte)(number) $94, (byte)(number) $96, (byte)(number) $98, (byte)(number) $9b, (byte)(number) $9d, (byte)(number) $a0, (byte)(number) $a3, (byte)(number) $a6, (byte)(number) $a9, (byte)(number) $ac, (byte)(number) $af, (byte)(number) $b2, (byte)(number) $b6, (byte)(number) $b9, (byte)(number) $bd, (byte)(number) $c0, (byte)(number) $c4, (byte)(number) $c8, (byte)(number) $cb, (byte)(number) $cf, (byte)(number) $d3, (byte)(number) $d7, (byte)(number) $db, (byte)(number) $df, (byte)(number) $e3, (byte)(number) $e7, (byte)(number) $eb, (byte)(number) $ef, (byte)(number) $f4, (byte)(number) $f8, (byte)(number) $fc } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (word) divr16u::quotient#0 ← (unumber)(number) 0 Inlining cast (word) divr16u::rem#3 ← (unumber)(number) 0 Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0 @@ -1296,9 +1293,201 @@ Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#4 Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8 -Inlining cast (signed byte~) main::$2 ← (signed byte)*((byte[]) sintabref + (byte) main::i#2) +Inlining cast (signed byte~) main::$2 ← (signed byte)*((const byte[]) sintabref + (byte) main::i#2) Successful SSA optimization Pass2InlineCast Simplifying constant integer cast 0 +Simplifying constant integer cast 4 +Simplifying constant integer cast 8 +Simplifying constant integer cast $c +Simplifying constant integer cast $11 +Simplifying constant integer cast $15 +Simplifying constant integer cast $19 +Simplifying constant integer cast $1d +Simplifying constant integer cast $21 +Simplifying constant integer cast $25 +Simplifying constant integer cast $29 +Simplifying constant integer cast $2d +Simplifying constant integer cast $31 +Simplifying constant integer cast $35 +Simplifying constant integer cast $38 +Simplifying constant integer cast $3c +Simplifying constant integer cast $40 +Simplifying constant integer cast $43 +Simplifying constant integer cast $47 +Simplifying constant integer cast $4a +Simplifying constant integer cast $4e +Simplifying constant integer cast $51 +Simplifying constant integer cast $54 +Simplifying constant integer cast $57 +Simplifying constant integer cast $5a +Simplifying constant integer cast $5d +Simplifying constant integer cast $60 +Simplifying constant integer cast $63 +Simplifying constant integer cast $65 +Simplifying constant integer cast $68 +Simplifying constant integer cast $6a +Simplifying constant integer cast $6c +Simplifying constant integer cast $6e +Simplifying constant integer cast $70 +Simplifying constant integer cast $72 +Simplifying constant integer cast $74 +Simplifying constant integer cast $76 +Simplifying constant integer cast $77 +Simplifying constant integer cast $79 +Simplifying constant integer cast $7a +Simplifying constant integer cast $7b +Simplifying constant integer cast $7c +Simplifying constant integer cast $7d +Simplifying constant integer cast $7e +Simplifying constant integer cast $7e +Simplifying constant integer cast $7f +Simplifying constant integer cast $7f +Simplifying constant integer cast $7f +Simplifying constant integer cast $80 +Simplifying constant integer cast $7f +Simplifying constant integer cast $7f +Simplifying constant integer cast $7f +Simplifying constant integer cast $7e +Simplifying constant integer cast $7e +Simplifying constant integer cast $7d +Simplifying constant integer cast $7c +Simplifying constant integer cast $7b +Simplifying constant integer cast $7a +Simplifying constant integer cast $79 +Simplifying constant integer cast $77 +Simplifying constant integer cast $76 +Simplifying constant integer cast $74 +Simplifying constant integer cast $72 +Simplifying constant integer cast $70 +Simplifying constant integer cast $6e +Simplifying constant integer cast $6c +Simplifying constant integer cast $6a +Simplifying constant integer cast $68 +Simplifying constant integer cast $65 +Simplifying constant integer cast $63 +Simplifying constant integer cast $60 +Simplifying constant integer cast $5d +Simplifying constant integer cast $5a +Simplifying constant integer cast $57 +Simplifying constant integer cast $54 +Simplifying constant integer cast $51 +Simplifying constant integer cast $4e +Simplifying constant integer cast $4a +Simplifying constant integer cast $47 +Simplifying constant integer cast $43 +Simplifying constant integer cast $40 +Simplifying constant integer cast $3c +Simplifying constant integer cast $38 +Simplifying constant integer cast $35 +Simplifying constant integer cast $31 +Simplifying constant integer cast $2d +Simplifying constant integer cast $29 +Simplifying constant integer cast $25 +Simplifying constant integer cast $21 +Simplifying constant integer cast $1d +Simplifying constant integer cast $19 +Simplifying constant integer cast $15 +Simplifying constant integer cast $11 +Simplifying constant integer cast $c +Simplifying constant integer cast 8 +Simplifying constant integer cast 4 +Simplifying constant integer cast 0 +Simplifying constant integer cast $fc +Simplifying constant integer cast $f8 +Simplifying constant integer cast $f4 +Simplifying constant integer cast $ef +Simplifying constant integer cast $eb +Simplifying constant integer cast $e7 +Simplifying constant integer cast $e3 +Simplifying constant integer cast $df +Simplifying constant integer cast $db +Simplifying constant integer cast $d7 +Simplifying constant integer cast $d3 +Simplifying constant integer cast $cf +Simplifying constant integer cast $cb +Simplifying constant integer cast $c8 +Simplifying constant integer cast $c4 +Simplifying constant integer cast $c0 +Simplifying constant integer cast $bd +Simplifying constant integer cast $b9 +Simplifying constant integer cast $b6 +Simplifying constant integer cast $b2 +Simplifying constant integer cast $af +Simplifying constant integer cast $ac +Simplifying constant integer cast $a9 +Simplifying constant integer cast $a6 +Simplifying constant integer cast $a3 +Simplifying constant integer cast $a0 +Simplifying constant integer cast $9d +Simplifying constant integer cast $9b +Simplifying constant integer cast $98 +Simplifying constant integer cast $96 +Simplifying constant integer cast $94 +Simplifying constant integer cast $92 +Simplifying constant integer cast $90 +Simplifying constant integer cast $8e +Simplifying constant integer cast $8c +Simplifying constant integer cast $8a +Simplifying constant integer cast $89 +Simplifying constant integer cast $87 +Simplifying constant integer cast $86 +Simplifying constant integer cast $85 +Simplifying constant integer cast $84 +Simplifying constant integer cast $83 +Simplifying constant integer cast $82 +Simplifying constant integer cast $82 +Simplifying constant integer cast $81 +Simplifying constant integer cast $81 +Simplifying constant integer cast $81 +Simplifying constant integer cast $81 +Simplifying constant integer cast $81 +Simplifying constant integer cast $81 +Simplifying constant integer cast $81 +Simplifying constant integer cast $82 +Simplifying constant integer cast $82 +Simplifying constant integer cast $83 +Simplifying constant integer cast $84 +Simplifying constant integer cast $85 +Simplifying constant integer cast $86 +Simplifying constant integer cast $87 +Simplifying constant integer cast $89 +Simplifying constant integer cast $8a +Simplifying constant integer cast $8c +Simplifying constant integer cast $8e +Simplifying constant integer cast $90 +Simplifying constant integer cast $92 +Simplifying constant integer cast $94 +Simplifying constant integer cast $96 +Simplifying constant integer cast $98 +Simplifying constant integer cast $9b +Simplifying constant integer cast $9d +Simplifying constant integer cast $a0 +Simplifying constant integer cast $a3 +Simplifying constant integer cast $a6 +Simplifying constant integer cast $a9 +Simplifying constant integer cast $ac +Simplifying constant integer cast $af +Simplifying constant integer cast $b2 +Simplifying constant integer cast $b6 +Simplifying constant integer cast $b9 +Simplifying constant integer cast $bd +Simplifying constant integer cast $c0 +Simplifying constant integer cast $c4 +Simplifying constant integer cast $c8 +Simplifying constant integer cast $cb +Simplifying constant integer cast $cf +Simplifying constant integer cast $d3 +Simplifying constant integer cast $d7 +Simplifying constant integer cast $db +Simplifying constant integer cast $df +Simplifying constant integer cast $e3 +Simplifying constant integer cast $e7 +Simplifying constant integer cast $eb +Simplifying constant integer cast $ef +Simplifying constant integer cast $f4 +Simplifying constant integer cast $f8 +Simplifying constant integer cast $fc +Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast $80 Simplifying constant integer cast 0 @@ -1332,198 +1521,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast $3e8 -Simplifying constant integer cast 0 -Simplifying constant integer cast 4 -Simplifying constant integer cast 8 -Simplifying constant integer cast $c -Simplifying constant integer cast $11 -Simplifying constant integer cast $15 -Simplifying constant integer cast $19 -Simplifying constant integer cast $1d -Simplifying constant integer cast $21 -Simplifying constant integer cast $25 -Simplifying constant integer cast $29 -Simplifying constant integer cast $2d -Simplifying constant integer cast $31 -Simplifying constant integer cast $35 -Simplifying constant integer cast $38 -Simplifying constant integer cast $3c -Simplifying constant integer cast $40 -Simplifying constant integer cast $43 -Simplifying constant integer cast $47 -Simplifying constant integer cast $4a -Simplifying constant integer cast $4e -Simplifying constant integer cast $51 -Simplifying constant integer cast $54 -Simplifying constant integer cast $57 -Simplifying constant integer cast $5a -Simplifying constant integer cast $5d -Simplifying constant integer cast $60 -Simplifying constant integer cast $63 -Simplifying constant integer cast $65 -Simplifying constant integer cast $68 -Simplifying constant integer cast $6a -Simplifying constant integer cast $6c -Simplifying constant integer cast $6e -Simplifying constant integer cast $70 -Simplifying constant integer cast $72 -Simplifying constant integer cast $74 -Simplifying constant integer cast $76 -Simplifying constant integer cast $77 -Simplifying constant integer cast $79 -Simplifying constant integer cast $7a -Simplifying constant integer cast $7b -Simplifying constant integer cast $7c -Simplifying constant integer cast $7d -Simplifying constant integer cast $7e -Simplifying constant integer cast $7e -Simplifying constant integer cast $7f -Simplifying constant integer cast $7f -Simplifying constant integer cast $7f -Simplifying constant integer cast $80 -Simplifying constant integer cast $7f -Simplifying constant integer cast $7f -Simplifying constant integer cast $7f -Simplifying constant integer cast $7e -Simplifying constant integer cast $7e -Simplifying constant integer cast $7d -Simplifying constant integer cast $7c -Simplifying constant integer cast $7b -Simplifying constant integer cast $7a -Simplifying constant integer cast $79 -Simplifying constant integer cast $77 -Simplifying constant integer cast $76 -Simplifying constant integer cast $74 -Simplifying constant integer cast $72 -Simplifying constant integer cast $70 -Simplifying constant integer cast $6e -Simplifying constant integer cast $6c -Simplifying constant integer cast $6a -Simplifying constant integer cast $68 -Simplifying constant integer cast $65 -Simplifying constant integer cast $63 -Simplifying constant integer cast $60 -Simplifying constant integer cast $5d -Simplifying constant integer cast $5a -Simplifying constant integer cast $57 -Simplifying constant integer cast $54 -Simplifying constant integer cast $51 -Simplifying constant integer cast $4e -Simplifying constant integer cast $4a -Simplifying constant integer cast $47 -Simplifying constant integer cast $43 -Simplifying constant integer cast $40 -Simplifying constant integer cast $3c -Simplifying constant integer cast $38 -Simplifying constant integer cast $35 -Simplifying constant integer cast $31 -Simplifying constant integer cast $2d -Simplifying constant integer cast $29 -Simplifying constant integer cast $25 -Simplifying constant integer cast $21 -Simplifying constant integer cast $1d -Simplifying constant integer cast $19 -Simplifying constant integer cast $15 -Simplifying constant integer cast $11 -Simplifying constant integer cast $c -Simplifying constant integer cast 8 -Simplifying constant integer cast 4 -Simplifying constant integer cast 0 -Simplifying constant integer cast $fc -Simplifying constant integer cast $f8 -Simplifying constant integer cast $f4 -Simplifying constant integer cast $ef -Simplifying constant integer cast $eb -Simplifying constant integer cast $e7 -Simplifying constant integer cast $e3 -Simplifying constant integer cast $df -Simplifying constant integer cast $db -Simplifying constant integer cast $d7 -Simplifying constant integer cast $d3 -Simplifying constant integer cast $cf -Simplifying constant integer cast $cb -Simplifying constant integer cast $c8 -Simplifying constant integer cast $c4 -Simplifying constant integer cast $c0 -Simplifying constant integer cast $bd -Simplifying constant integer cast $b9 -Simplifying constant integer cast $b6 -Simplifying constant integer cast $b2 -Simplifying constant integer cast $af -Simplifying constant integer cast $ac -Simplifying constant integer cast $a9 -Simplifying constant integer cast $a6 -Simplifying constant integer cast $a3 -Simplifying constant integer cast $a0 -Simplifying constant integer cast $9d -Simplifying constant integer cast $9b -Simplifying constant integer cast $98 -Simplifying constant integer cast $96 -Simplifying constant integer cast $94 -Simplifying constant integer cast $92 -Simplifying constant integer cast $90 -Simplifying constant integer cast $8e -Simplifying constant integer cast $8c -Simplifying constant integer cast $8a -Simplifying constant integer cast $89 -Simplifying constant integer cast $87 -Simplifying constant integer cast $86 -Simplifying constant integer cast $85 -Simplifying constant integer cast $84 -Simplifying constant integer cast $83 -Simplifying constant integer cast $82 -Simplifying constant integer cast $82 -Simplifying constant integer cast $81 -Simplifying constant integer cast $81 -Simplifying constant integer cast $81 -Simplifying constant integer cast $81 -Simplifying constant integer cast $81 -Simplifying constant integer cast $81 -Simplifying constant integer cast $81 -Simplifying constant integer cast $82 -Simplifying constant integer cast $82 -Simplifying constant integer cast $83 -Simplifying constant integer cast $84 -Simplifying constant integer cast $85 -Simplifying constant integer cast $86 -Simplifying constant integer cast $87 -Simplifying constant integer cast $89 -Simplifying constant integer cast $8a -Simplifying constant integer cast $8c -Simplifying constant integer cast $8e -Simplifying constant integer cast $90 -Simplifying constant integer cast $92 -Simplifying constant integer cast $94 -Simplifying constant integer cast $96 -Simplifying constant integer cast $98 -Simplifying constant integer cast $9b -Simplifying constant integer cast $9d -Simplifying constant integer cast $a0 -Simplifying constant integer cast $a3 -Simplifying constant integer cast $a6 -Simplifying constant integer cast $a9 -Simplifying constant integer cast $ac -Simplifying constant integer cast $af -Simplifying constant integer cast $b2 -Simplifying constant integer cast $b6 -Simplifying constant integer cast $b9 -Simplifying constant integer cast $bd -Simplifying constant integer cast $c0 -Simplifying constant integer cast $c4 -Simplifying constant integer cast $c8 -Simplifying constant integer cast $cb -Simplifying constant integer cast $cf -Simplifying constant integer cast $d3 -Simplifying constant integer cast $d7 -Simplifying constant integer cast $db -Simplifying constant integer cast $df -Simplifying constant integer cast $e3 -Simplifying constant integer cast $e7 -Simplifying constant integer cast $eb -Simplifying constant integer cast $ef -Simplifying constant integer cast $f4 -Simplifying constant integer cast $f8 -Simplifying constant integer cast $fc Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 @@ -1737,12 +1734,10 @@ Simple Condition (bool~) memset::$1 [198] if((word) memset::num#0<=(byte) 0) got Simple Condition (bool~) memset::$4 [208] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_str::$0 [221] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 Simple Condition (bool~) print_sbyte::$0 [231] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -Simple Condition (bool~) main::$6 [313] if((byte) main::i#1!=rangelast(0,$bf)) goto main::@1 +Simple Condition (bool~) main::$6 [312] if((byte) main::i#1!=rangelast(0,$bf)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [287] (signed byte[$c0]) sintab2 ← { fill( $c0, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 @@ -1764,7 +1759,6 @@ Constant (const byte) print_char::ch#1 = ' ' Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 Constant (const signed byte[$c0]) sintab2 = { fill( $c0, 0) } -Constant (const byte[]) sintabref = { 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc } Constant (const word) sin8s_gen::wavelength#0 = wavelength Constant (const byte) main::i#0 = 0 Constant (const byte*) print_str::str#1 = main::str @@ -1783,8 +1777,8 @@ if() condition always false - eliminating [198] if((const word) memset::num#0<=( Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [23] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [25] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 -Resolved ranged next value [311] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [313] if(main::i#1!=rangelast(0,$bf)) goto main::@1 to (number) $c0 +Resolved ranged next value [310] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [312] if(main::i#1!=rangelast(0,$bf)) goto main::@1 to (number) $c0 Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars Adding number conversion cast (unumber) $10 in if((byte) divr16u::i#1!=(number) $10) goto divr16u::@1 @@ -3703,9 +3697,9 @@ divr16u: { } // File Data print_hextab: .text "0123456789abcdef" - sintab2: .fill $c0, 0 // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc + sintab2: .fill $c0, 0 REGISTER UPLIFT POTENTIAL REGISTERS Statement [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a @@ -4842,9 +4836,9 @@ divr16u: { } // File Data print_hextab: .text "0123456789abcdef" - sintab2: .fill $c0, 0 // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc + sintab2: .fill $c0, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 @@ -6159,7 +6153,7 @@ divr16u: { } // File Data print_hextab: .text "0123456789abcdef" - sintab2: .fill $c0, 0 // .fill $c0, round(127.5*sin(i*2*PI/$c0)) sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc + sintab2: .fill $c0, 0 diff --git a/src/test/ref/sizeof-arrays.log b/src/test/ref/sizeof-arrays.log index 2447735ad..5879d72de 100644 --- a/src/test/ref/sizeof-arrays.log +++ b/src/test/ref/sizeof-arrays.log @@ -26,8 +26,7 @@ main: scope:[main] from @1 (byte~) main::$9 ← (byte) '0' + (byte~) main::$8 *((const byte*) SCREEN + (byte) main::idx#2) ← (byte~) main::$9 (byte) main::idx#3 ← ++ (byte) main::idx#2 - (word[]) main::wb ← { (number) 1, (number) 2, (number) 3, (number) 4 } - (byte~) main::$10 ← sizeof (word[]) main::wb + (byte~) main::$10 ← sizeof (const word[]) main::wb (byte~) main::$11 ← (byte~) main::$10 / (const byte) SIZEOF_WORD (byte~) main::$12 ← (byte) '0' + (byte~) main::$11 *((const byte*) SCREEN + (byte) main::idx#3) ← (byte~) main::$12 @@ -37,8 +36,7 @@ main: scope:[main] from @1 (byte~) main::$15 ← (byte) '0' + (byte~) main::$14 *((const byte*) SCREEN + (byte) main::idx#4) ← (byte~) main::$15 (byte) main::idx#5 ← ++ (byte) main::idx#4 - (byte[]) main::sb ← { (byte) 'a', (byte) 'b', (byte) 'c', (number) 0 } - (byte~) main::$16 ← sizeof (byte[]) main::sb + (byte~) main::$16 ← sizeof (const byte[]) main::sb (byte~) main::$17 ← (byte~) main::$16 / (const byte) SIZEOF_BYTE (byte~) main::$18 ← (byte) '0' + (byte~) main::$17 *((const byte*) SCREEN + (byte) main::idx#5) ← (byte~) main::$18 @@ -94,28 +92,25 @@ SYMBOL TABLE SSA (byte) main::idx#5 (byte) main::idx#6 (const byte[]) main::sa = (string) "camelot" -(byte[]) main::sb +(const byte[]) main::sb = { (byte) 'a', (byte) 'b', (byte) 'c', (byte)(number) 0 } (const byte) main::sz = (byte) 7 (word[3]) main::wa -(word[]) main::wb +(const word[]) main::wb = { (word)(number) 1, (word)(number) 2, (word)(number) 3, (word)(number) 4 } Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Adding number conversion cast (unumber) 2 in (number~) main::$6 ← (const byte) main::sz + (number) 2 Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (const byte) main::sz + (unumber)(number) 2 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) main::wb ← (word[]){ (word)(number) 1, (word)(number) 2, (word)(number) 3, (word)(number) 4 } -Added casts to value list in (byte[]) main::sb ← (byte[]){ (byte) 'a', (byte) 'b', (byte) 'c', (byte)(number) 0 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast 0 -Simplifying constant integer cast 2 Simplifying constant integer cast 1 Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast 4 Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 2 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 2 @@ -124,107 +119,102 @@ Inferred type updated to byte in (unumber~) main::$6 ← (const byte) main::sz + Constant right-side identified [1] (byte[3]) main::ba ← { fill( 3, 0) } Constant right-side identified [7] (word[3]) main::wa ← { fill( 3, 0) } Constant right-side identified [13] (byte~) main::$6 ← (const byte) main::sz + (byte) 2 -Constant right-side identified [26] (byte~) main::$13 ← sizeof (const byte[]) main::sa +Constant right-side identified [20] (byte~) main::$10 ← sizeof (const word[]) main::wb +Constant right-side identified [25] (byte~) main::$13 ← sizeof (const byte[]) main::sa +Constant right-side identified [30] (byte~) main::$16 ← sizeof (const byte[]) main::sb Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) 1, (word) 2, (word) 3, (word) 4 } -Identified constant from value list (byte[]) { (byte) 'a', (byte) 'b', (byte) 'c', (byte) 0 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte) main::idx#0 = 0 Constant (const byte[3]) main::ba = { fill( 3, 0) } Constant (const word[3]) main::wa = { fill( 3, 0) } Constant (const byte) main::$6 = main::sz+2 -Constant (const word[]) main::wb = { 1, 2, 3, 4 } +Constant (const byte) main::$10 = sizeof main::wb Constant (const byte) main::$13 = sizeof main::sa -Constant (const byte[]) main::sb = { 'a', 'b', 'c', 0 } +Constant (const byte) main::$16 = sizeof main::sb Successful SSA optimization Pass2ConstantIdentification Constant (const byte[main::$6]) main::bb = { fill( main::$6, 0) } Successful SSA optimization Pass2ConstantIdentification Simplifying expression containing zero SCREEN in [5] *((const byte*) SCREEN + (const byte) main::idx#0) ← (byte~) main::$2 Successful SSA optimization PassNSimplifyExpressionWithZero -Eliminating unused variable (byte) main::idx#6 and assignment [28] (byte) main::idx#6 ← ++ (byte) main::idx#5 +Eliminating unused variable (byte) main::idx#6 and assignment [26] (byte) main::idx#6 ← ++ (byte) main::idx#5 Successful SSA optimization PassNEliminateUnusedVars +Resolving array sizeof() sizeof (const word[]) main::wb Resolving string sizeof() sizeof (const byte[]) main::sa +Resolving array sizeof() sizeof (const byte[]) main::sb Successful SSA optimization PassNSizeOfSimplification Constant right-side identified [0] (byte~) main::$0 ← sizeof (const byte[3]) main::ba Constant right-side identified [4] (byte) main::idx#1 ← ++ (const byte) main::idx#0 Constant right-side identified [5] (byte~) main::$3 ← sizeof (const word[3]) main::wa Constant right-side identified [10] (byte~) main::$7 ← sizeof (const byte[main::$6]) main::bb -Constant right-side identified [15] (byte~) main::$10 ← sizeof (const word[]) main::wb -Constant right-side identified [20] (byte~) main::$14 ← (const byte) main::$13 / (const byte) SIZEOF_BYTE -Constant right-side identified [24] (byte~) main::$16 ← sizeof (const byte[]) main::sb +Constant right-side identified [15] (byte~) main::$11 ← (const byte) main::$10 / (const byte) SIZEOF_WORD +Constant right-side identified [19] (byte~) main::$14 ← (const byte) main::$13 / (const byte) SIZEOF_BYTE +Constant right-side identified [23] (byte~) main::$17 ← (const byte) main::$16 / (const byte) SIZEOF_BYTE Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::$0 = sizeof main::ba Constant (const byte) main::idx#1 = ++main::idx#0 Constant (const byte) main::$3 = sizeof main::wa Constant (const byte) main::$7 = sizeof main::bb -Constant (const byte) main::$10 = sizeof main::wb +Constant (const byte) main::$11 = main::$10/SIZEOF_WORD Constant (const byte) main::$14 = main::$13/SIZEOF_BYTE -Constant (const byte) main::$16 = sizeof main::sb +Constant (const byte) main::$17 = main::$16/SIZEOF_BYTE Successful SSA optimization Pass2ConstantIdentification +Eliminating unused constant (const word[]) main::wb Eliminating unused constant (const byte[]) main::sa +Eliminating unused constant (const byte[]) main::sb Successful SSA optimization PassNEliminateUnusedVars +Adding number conversion cast (unumber) 4 in Adding number conversion cast (unumber) 8 in +Adding number conversion cast (unumber) 4 in Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast 4 Simplifying constant integer cast 8 +Simplifying constant integer cast 4 Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 4 Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions Resolving array sizeof() sizeof (const byte[3]) main::ba Resolving array sizeof() sizeof (const word[3]) main::wa Resolving array sizeof() sizeof (const byte[main::$6]) main::bb -Resolving array sizeof() sizeof (const word[]) main::wb -Resolving array sizeof() sizeof (const byte[]) main::sb Successful SSA optimization PassNSizeOfSimplification Constant right-side identified [0] (byte~) main::$1 ← (const byte) main::$0 / (const byte) SIZEOF_BYTE Constant right-side identified [3] (byte~) main::$4 ← (const byte) main::$3 / (const byte) SIZEOF_WORD Constant right-side identified [6] (byte) main::idx#2 ← ++ (const byte) main::idx#1 Constant right-side identified [7] (byte~) main::$8 ← (const byte) main::$7 / (const byte) SIZEOF_BYTE -Constant right-side identified [11] (byte~) main::$11 ← (const byte) main::$10 / (const byte) SIZEOF_WORD -Constant right-side identified [15] (byte~) main::$15 ← (byte) '0' + (const byte) main::$14 -Constant right-side identified [18] (byte~) main::$17 ← (const byte) main::$16 / (const byte) SIZEOF_BYTE +Constant right-side identified [11] (byte~) main::$12 ← (byte) '0' + (const byte) main::$11 +Constant right-side identified [14] (byte~) main::$15 ← (byte) '0' + (const byte) main::$14 +Constant right-side identified [17] (byte~) main::$18 ← (byte) '0' + (const byte) main::$17 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::$1 = main::$0/SIZEOF_BYTE Constant (const byte) main::$4 = main::$3/SIZEOF_WORD Constant (const byte) main::idx#2 = ++main::idx#1 Constant (const byte) main::$8 = main::$7/SIZEOF_BYTE -Constant (const byte) main::$11 = main::$10/SIZEOF_WORD +Constant (const byte) main::$12 = '0'+main::$11 Constant (const byte) main::$15 = '0'+main::$14 -Constant (const byte) main::$17 = main::$16/SIZEOF_BYTE +Constant (const byte) main::$18 = '0'+main::$17 Successful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const byte[3]) main::ba Eliminating unused constant (const word[3]) main::wa -Eliminating unused constant (const word[]) main::wb -Eliminating unused constant (const byte[]) main::sb Eliminating unused constant (const byte[main::$6]) main::bb Successful SSA optimization PassNEliminateUnusedVars Adding number conversion cast (unumber) 3 in Adding number conversion cast (unumber) 3 in -Adding number conversion cast (unumber) 4 in -Adding number conversion cast (unumber) 4 in Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 3 Simplifying constant integer cast 3 -Simplifying constant integer cast 4 -Simplifying constant integer cast 4 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 3 Finalized unsigned number type (byte) 3 -Finalized unsigned number type (byte) 4 -Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions Constant right-side identified [0] (byte~) main::$2 ← (byte) '0' + (const byte) main::$1 Constant right-side identified [2] (byte~) main::$5 ← (byte) '0' + (const byte) main::$4 Constant right-side identified [4] (byte~) main::$9 ← (byte) '0' + (const byte) main::$8 Constant right-side identified [6] (byte) main::idx#3 ← ++ (const byte) main::idx#2 -Constant right-side identified [7] (byte~) main::$12 ← (byte) '0' + (const byte) main::$11 -Constant right-side identified [12] (byte~) main::$18 ← (byte) '0' + (const byte) main::$17 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::$2 = '0'+main::$1 Constant (const byte) main::$5 = '0'+main::$4 Constant (const byte) main::$9 = '0'+main::$8 Constant (const byte) main::idx#3 = ++main::idx#2 -Constant (const byte) main::$12 = '0'+main::$11 -Constant (const byte) main::$18 = '0'+main::$17 Successful SSA optimization Pass2ConstantIdentification Constant right-side identified [4] (byte) main::idx#4 ← ++ (const byte) main::idx#3 Successful SSA optimization Pass2ConstantRValueConsolidation diff --git a/src/test/ref/struct-10.log b/src/test/ref/struct-10.log index 6c83458dd..170e035d4 100644 --- a/src/test/ref/struct-10.log +++ b/src/test/ref/struct-10.log @@ -1,25 +1,24 @@ Fixing pointer array-indexing *((struct RadixInfo) main::info.values + (number) 1) Fixing pointer array-indexing *((const word*) main::SCREEN + (number) 0) -Fixing pointer array-indexing *((word[]) RADIX_DECIMAL_VALUES + (number) 1) +Fixing pointer array-indexing *((const word[]) RADIX_DECIMAL_VALUES + (number) 1) Fixing pointer array-indexing *((const word*) main::SCREEN + (number) 1) Created struct value member variable (word*) main::info_values Converted struct value to member variables (struct RadixInfo) main::info -Adding struct value list initializer (word*) main::info_values ← (word[]) RADIX_DECIMAL_VALUES +Adding struct value list initializer (word*) main::info_values ← (const word[]) RADIX_DECIMAL_VALUES Replacing struct member reference (struct RadixInfo) main::info.values with member unwinding reference (word*) main::info_values +Identified constant variable (word*) main::info_values CONTROL FLOW GRAPH SSA @begin: scope:[] from - (word[]) RADIX_DECIMAL_VALUES ← { (number) $2710, (number) $3e8, (number) $64, (number) $a } to:@1 (void()) main() main: scope:[main] from @1 - (word*) main::info_values#0 ← (word[]) RADIX_DECIMAL_VALUES (number~) main::$0 ← (number) 1 * (const byte) SIZEOF_WORD (number~) main::$1 ← (number) 0 * (const byte) SIZEOF_WORD - *((const word*) main::SCREEN + (number~) main::$1) ← *((word*) main::info_values#0 + (number~) main::$0) + *((const word*) main::SCREEN + (number~) main::$1) ← *((const word*) main::info_values + (number~) main::$0) (number~) main::$2 ← (number) 1 * (const byte) SIZEOF_WORD - *((const word*) main::SCREEN + (number~) main::$2) ← *((word[]) RADIX_DECIMAL_VALUES + (number~) main::$2) + *((const word*) main::SCREEN + (number~) main::$2) ← *((const word[]) RADIX_DECIMAL_VALUES + (number~) main::$2) to:main::@return main::@return: scope:[main] from main return @@ -36,7 +35,7 @@ SYMBOL TABLE SSA (label) @2 (label) @begin (label) @end -(word[]) RADIX_DECIMAL_VALUES +(const word[]) RADIX_DECIMAL_VALUES = { (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a } (word*) RadixInfo::values (const byte) SIZEOF_WORD = (byte) 2 (void()) main() @@ -45,8 +44,7 @@ SYMBOL TABLE SSA (number~) main::$2 (label) main::@return (const word*) main::SCREEN = (word*)(number) $400 -(word*) main::info_values -(word*) main::info_values#0 +(const word*) main::info_values = (const word[]) RADIX_DECIMAL_VALUES Adding number conversion cast (unumber) 1 in (number~) main::$0 ← (number) 1 * (const byte) SIZEOF_WORD Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (unumber)(number) 1 * (const byte) SIZEOF_WORD @@ -55,13 +53,11 @@ Adding number conversion cast (unumber) main::$1 in (number~) main::$1 ← (unum Adding number conversion cast (unumber) 1 in (number~) main::$2 ← (number) 1 * (const byte) SIZEOF_WORD Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (unumber)(number) 1 * (const byte) SIZEOF_WORD Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) RADIX_DECIMAL_VALUES ← (word[]){ (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Simplifying constant pointer cast (word*) 1024 Simplifying constant integer cast $2710 Simplifying constant integer cast $3e8 Simplifying constant integer cast $64 Simplifying constant integer cast $a +Simplifying constant pointer cast (word*) 1024 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 1 @@ -73,26 +69,21 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) main::$0 ← (byte) 1 * (const byte) SIZEOF_WORD Inferred type updated to byte in (unumber~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD Inferred type updated to byte in (unumber~) main::$2 ← (byte) 1 * (const byte) SIZEOF_WORD -Constant right-side identified [2] (byte~) main::$0 ← (byte) 1 * (const byte) SIZEOF_WORD -Constant right-side identified [3] (byte~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD -Constant right-side identified [5] (byte~) main::$2 ← (byte) 1 * (const byte) SIZEOF_WORD +Constant right-side identified [0] (byte~) main::$0 ← (byte) 1 * (const byte) SIZEOF_WORD +Constant right-side identified [1] (byte~) main::$1 ← (byte) 0 * (const byte) SIZEOF_WORD +Constant right-side identified [3] (byte~) main::$2 ← (byte) 1 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) $2710, (word) $3e8, (word) $64, (word) $a } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) RADIX_DECIMAL_VALUES = { $2710, $3e8, $64, $a } Constant (const byte) main::$0 = 1*SIZEOF_WORD Constant (const byte) main::$1 = 0*SIZEOF_WORD Constant (const byte) main::$2 = 1*SIZEOF_WORD Successful SSA optimization Pass2ConstantIdentification -Constant (const word*) main::info_values#0 = RADIX_DECIMAL_VALUES -Successful SSA optimization Pass2ConstantIdentification Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_WORD in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero main::SCREEN in [4] *((const word*) main::SCREEN + (const byte) main::$1) ← *((const word*) main::info_values#0 + (const byte) main::$0) +Simplifying expression containing zero main::SCREEN in [2] *((const word*) main::SCREEN + (const byte) main::$1) ← *((const word*) main::info_values + (const byte) main::$0) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) main::$1 Successful SSA optimization PassNEliminateUnusedVars -Constant inlined main::info_values#0 = (const word[]) RADIX_DECIMAL_VALUES +Constant inlined main::info_values = (const word[]) RADIX_DECIMAL_VALUES Constant inlined main::$2 = (byte) 1*(const byte) SIZEOF_WORD Constant inlined main::$0 = (byte) 1*(const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantInlining @@ -138,7 +129,6 @@ main::@return: scope:[main] from main VARIABLE REGISTER WEIGHTS (word*) RadixInfo::values (void()) main() -(word*) main::info_values Initial phi equivalence classes Complete equivalence classes @@ -276,7 +266,6 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@return (const word*) main::SCREEN = (word*) 1024 -(word*) main::info_values diff --git a/src/test/ref/struct-10.sym b/src/test/ref/struct-10.sym index cbd8a3704..aeee217c9 100644 --- a/src/test/ref/struct-10.sym +++ b/src/test/ref/struct-10.sym @@ -7,5 +7,4 @@ (void()) main() (label) main::@return (const word*) main::SCREEN = (word*) 1024 -(word*) main::info_values diff --git a/src/test/ref/struct-11.asm b/src/test/ref/struct-11.asm index 4bacaa588..fb59f6a99 100644 --- a/src/test/ref/struct-11.asm +++ b/src/test/ref/struct-11.asm @@ -263,11 +263,11 @@ ultoa_append: { } // The digits used for numbers DIGITS: .text "0123456789abcdef" + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a jesper_initials: .text "jg" .byte 0 henry_initials: .text "hg" .byte 0 - // Values of decimal digits - RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a // Digits used for storing the decimal word decimal_digits_long: .fill $b, 0 diff --git a/src/test/ref/struct-11.log b/src/test/ref/struct-11.log index c36b9d9cb..0fb573dff 100644 --- a/src/test/ref/struct-11.log +++ b/src/test/ref/struct-11.log @@ -44,6 +44,7 @@ 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) ultoa::@13 Culled Empty Block (label) ultoa::@5 Culled Empty Block (label) ultoa::@14 @@ -91,12 +92,6 @@ Culled Empty Block (label) @37 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@10 -@10: scope:[] from @begin - (dword[]) RADIX_BINARY_VALUES_LONG ← { (number) $80000000, (number) $40000000, (number) $20000000, (number) $10000000, (number) $8000000, (number) $4000000, (number) $2000000, (number) $1000000, (number) $800000, (number) $400000, (number) $200000, (number) $100000, (number) $80000, (number) $40000, (number) $20000, (number) $10000, (number) $8000, (number) $4000, (number) $2000, (number) $1000, (number) $800, (number) $400, (number) $200, (number) $100, (number) $80, (number) $40, (number) $20, (number) $10, (number) 8, (number) 4, (number) 2 } - (dword[]) RADIX_OCTAL_VALUES_LONG ← { (number) $40000000, (number) $8000000, (number) $1000000, (number) $200000, (number) $40000, (number) $8000, (number) $1000, (number) $200, (number) $40, (number) 8 } - (dword[]) RADIX_DECIMAL_VALUES_LONG ← { (number) $3b9aca00, (number) $5f5e100, (number) $989680, (number) $f4240, (number) $186a0, (number) $2710, (number) $3e8, (number) $64, (number) $a } - (dword[]) RADIX_HEXADECIMAL_VALUES_LONG ← { (number) $10000000, (number) $1000000, (number) $100000, (number) $10000, (number) $1000, (number) $100, (number) $10 } to:@12 (void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) @@ -113,7 +108,7 @@ ultoa::@1: scope:[ultoa] from ultoa (byte*) ultoa::buffer#17 ← phi( ultoa/(byte*) ultoa::buffer#21 ) (dword) ultoa::value#8 ← phi( ultoa/(dword) ultoa::value#12 ) (byte) ultoa::max_digits#1 ← (number) $a - (dword*) ultoa::digit_values#1 ← (dword[]) RADIX_DECIMAL_VALUES_LONG + (dword*) ultoa::digit_values#1 ← (const dword[]) RADIX_DECIMAL_VALUES_LONG to:ultoa::@8 ultoa::@9: scope:[ultoa] from ultoa (dword) ultoa::value#13 ← phi( ultoa/(dword) ultoa::value#12 ) @@ -126,7 +121,7 @@ ultoa::@2: scope:[ultoa] from ultoa::@9 (byte*) ultoa::buffer#18 ← phi( ultoa::@9/(byte*) ultoa::buffer#16 ) (dword) ultoa::value#9 ← phi( ultoa::@9/(dword) ultoa::value#13 ) (byte) ultoa::max_digits#2 ← (number) 8 - (dword*) ultoa::digit_values#2 ← (dword[]) RADIX_HEXADECIMAL_VALUES_LONG + (dword*) ultoa::digit_values#2 ← (const dword[]) RADIX_HEXADECIMAL_VALUES_LONG to:ultoa::@8 ultoa::@10: scope:[ultoa] from ultoa::@9 (dword) ultoa::value#14 ← phi( ultoa::@9/(dword) ultoa::value#13 ) @@ -139,7 +134,7 @@ ultoa::@3: scope:[ultoa] from ultoa::@10 (byte*) ultoa::buffer#19 ← phi( ultoa::@10/(byte*) ultoa::buffer#13 ) (dword) ultoa::value#10 ← phi( ultoa::@10/(dword) ultoa::value#14 ) (byte) ultoa::max_digits#3 ← (number) $b - (dword*) ultoa::digit_values#3 ← (dword[]) RADIX_OCTAL_VALUES_LONG + (dword*) ultoa::digit_values#3 ← (const dword[]) RADIX_OCTAL_VALUES_LONG to:ultoa::@8 ultoa::@11: scope:[ultoa] from ultoa::@10 (dword) ultoa::value#15 ← phi( ultoa::@10/(dword) ultoa::value#14 ) @@ -152,7 +147,7 @@ ultoa::@4: scope:[ultoa] from ultoa::@11 (byte*) ultoa::buffer#20 ← phi( ultoa::@11/(byte*) ultoa::buffer#10 ) (dword) ultoa::value#11 ← phi( ultoa::@11/(dword) ultoa::value#15 ) (byte) ultoa::max_digits#4 ← (number) $20 - (dword*) ultoa::digit_values#4 ← (dword[]) RADIX_BINARY_VALUES_LONG + (dword*) ultoa::digit_values#4 ← (const dword[]) RADIX_BINARY_VALUES_LONG to:ultoa::@8 ultoa::@12: scope:[ultoa] from ultoa::@11 (byte*) ultoa::buffer#6 ← phi( ultoa::@11/(byte*) ultoa::buffer#10 ) @@ -277,7 +272,7 @@ ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3 (dword) ultoa_append::return#2 ← (dword) ultoa_append::return#4 return to:@return -@12: scope:[] from @10 +@12: 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 @@ -463,7 +458,6 @@ print_person::@return: scope:[print_person] from print_person::@4 @end: scope:[] from @39 SYMBOL TABLE SSA -(label) @10 (label) @12 (label) @26 (label) @38 @@ -481,10 +475,10 @@ SYMBOL TABLE SSA (const byte) RADIX::DECIMAL = (number) $a (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 -(dword[]) RADIX_BINARY_VALUES_LONG -(dword[]) RADIX_DECIMAL_VALUES_LONG -(dword[]) RADIX_HEXADECIMAL_VALUES_LONG -(dword[]) RADIX_OCTAL_VALUES_LONG +(const dword[]) RADIX_BINARY_VALUES_LONG = { (dword)(number) $80000000, (dword)(number) $40000000, (dword)(number) $20000000, (dword)(number) $10000000, (dword)(number) $8000000, (dword)(number) $4000000, (dword)(number) $2000000, (dword)(number) $1000000, (dword)(number) $800000, (dword)(number) $400000, (dword)(number) $200000, (dword)(number) $100000, (dword)(number) $80000, (dword)(number) $40000, (dword)(number) $20000, (dword)(number) $10000, (dword)(number) $8000, (dword)(number) $4000, (dword)(number) $2000, (dword)(number) $1000, (dword)(number) $800, (dword)(number) $400, (dword)(number) $200, (dword)(number) $100, (dword)(number) $80, (dword)(number) $40, (dword)(number) $20, (dword)(number) $10, (dword)(number) 8, (dword)(number) 4, (dword)(number) 2 } +(const dword[]) RADIX_DECIMAL_VALUES_LONG = { (dword)(number) $3b9aca00, (dword)(number) $5f5e100, (dword)(number) $989680, (dword)(number) $f4240, (dword)(number) $186a0, (dword)(number) $2710, (dword)(number) $3e8, (dword)(number) $64, (dword)(number) $a } +(const dword[]) RADIX_HEXADECIMAL_VALUES_LONG = { (dword)(number) $10000000, (dword)(number) $1000000, (dword)(number) $100000, (dword)(number) $10000, (dword)(number) $1000, (dword)(number) $100, (dword)(number) $10 } +(const dword[]) RADIX_OCTAL_VALUES_LONG = { (dword)(number) $40000000, (dword)(number) $8000000, (dword)(number) $1000000, (dword)(number) $200000, (dword)(number) $40000, (dword)(number) $8000, (dword)(number) $1000, (dword)(number) $200, (dword)(number) $40, (dword)(number) 8 } (const byte) SIZEOF_DWORD = (byte) 4 (byte[$b]) decimal_digits_long (const dword) henry_id = (dword) $4466d @@ -784,11 +778,6 @@ Adding number conversion cast (unumber) 0 in (byte) ultoa_append::digit#0 ← (n Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#3) Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#9 + (number) $28 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (dword[]) RADIX_BINARY_VALUES_LONG ← (dword[]){ (dword)(number) $80000000, (dword)(number) $40000000, (dword)(number) $20000000, (dword)(number) $10000000, (dword)(number) $8000000, (dword)(number) $4000000, (dword)(number) $2000000, (dword)(number) $1000000, (dword)(number) $800000, (dword)(number) $400000, (dword)(number) $200000, (dword)(number) $100000, (dword)(number) $80000, (dword)(number) $40000, (dword)(number) $20000, (dword)(number) $10000, (dword)(number) $8000, (dword)(number) $4000, (dword)(number) $2000, (dword)(number) $1000, (dword)(number) $800, (dword)(number) $400, (dword)(number) $200, (dword)(number) $100, (dword)(number) $80, (dword)(number) $40, (dword)(number) $20, (dword)(number) $10, (dword)(number) 8, (dword)(number) 4, (dword)(number) 2 } -Added casts to value list in (dword[]) RADIX_OCTAL_VALUES_LONG ← (dword[]){ (dword)(number) $40000000, (dword)(number) $8000000, (dword)(number) $1000000, (dword)(number) $200000, (dword)(number) $40000, (dword)(number) $8000, (dword)(number) $1000, (dword)(number) $200, (dword)(number) $40, (dword)(number) 8 } -Added casts to value list in (dword[]) RADIX_DECIMAL_VALUES_LONG ← (dword[]){ (dword)(number) $3b9aca00, (dword)(number) $5f5e100, (dword)(number) $989680, (dword)(number) $f4240, (dword)(number) $186a0, (dword)(number) $2710, (dword)(number) $3e8, (dword)(number) $64, (dword)(number) $a } -Added casts to value list in (dword[]) RADIX_HEXADECIMAL_VALUES_LONG ← (dword[]){ (dword)(number) $10000000, (dword)(number) $1000000, (dword)(number) $100000, (dword)(number) $10000, (dword)(number) $1000, (dword)(number) $100, (dword)(number) $10 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) ultoa::max_digits#1 ← (unumber)(number) $a Inlining cast (byte) ultoa::max_digits#2 ← (unumber)(number) 8 Inlining cast (byte) ultoa::max_digits#3 ← (unumber)(number) $b @@ -964,36 +953,31 @@ Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#10 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#13 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) ultoa::$0 [8] if((byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 -Simple Condition (bool~) ultoa::$1 [14] if((byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 -Simple Condition (bool~) ultoa::$2 [20] if((byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 -Simple Condition (bool~) ultoa::$3 [26] if((byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 -Simple Condition (bool~) ultoa::$6 [45] if((byte) ultoa::digit#2<(byte~) ultoa::$5) goto ultoa::@19 -Simple Condition (bool~) ultoa_append::$0 [75] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -Simple Condition (bool~) print_str::$0 [91] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [104] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 +Simple Condition (bool~) ultoa::$0 [4] if((byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +Simple Condition (bool~) ultoa::$1 [10] if((byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +Simple Condition (bool~) ultoa::$2 [16] if((byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +Simple Condition (bool~) ultoa::$3 [22] if((byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +Simple Condition (bool~) ultoa::$6 [41] if((byte) ultoa::digit#2<(byte~) ultoa::$5) goto ultoa::@19 +Simple Condition (bool~) ultoa_append::$0 [71] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 +Simple Condition (bool~) print_str::$0 [87] if((byte) 0!=*((byte*) print_str::str#3)) goto print_str::@2 +Simple Condition (bool~) print_ln::$1 [100] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting ! if()-condition to reversed if() [51] (bool~) ultoa::$9 ← ! (bool~) ultoa::$8 -Rewriting || if()-condition to two if()s [50] (bool~) ultoa::$8 ← (byte) ultoa::started#2 || (bool~) ultoa::$7 +Rewriting ! if()-condition to reversed if() [47] (bool~) ultoa::$9 ← ! (bool~) ultoa::$8 +Rewriting || if()-condition to two if()s [46] (bool~) ultoa::$8 ← (byte) ultoa::started#2 || (bool~) ultoa::$7 Successful SSA optimization Pass2ConditionalAndOrRewriting Warning! Adding boolean cast to non-boolean condition (byte) ultoa::started#2 -Constant right-side identified [112] (byte[$b]) decimal_digits_long ← { fill( $b, 0) } +Constant right-side identified [108] (byte[$b]) decimal_digits_long ← { fill( $b, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (dword[]) { (dword) $80000000, (dword) $40000000, (dword) $20000000, (dword) $10000000, (dword) $8000000, (dword) $4000000, (dword) $2000000, (dword) $1000000, (dword) $800000, (dword) $400000, (dword) $200000, (dword) $100000, (dword) $80000, (dword) $40000, (dword) $20000, (dword) $10000, (dword) $8000, (dword) $4000, (dword) $2000, (dword) $1000, (dword) $800, (dword) $400, (dword) $200, (dword) $100, (dword) $80, (dword) $40, (dword) $20, (dword) $10, (dword) 8, (dword) 4, (dword) 2 } -Identified constant from value list (dword[]) { (dword) $40000000, (dword) $8000000, (dword) $1000000, (dword) $200000, (dword) $40000, (dword) $8000, (dword) $1000, (dword) $200, (dword) $40, (dword) 8 } -Identified constant from value list (dword[]) { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a } -Identified constant from value list (dword[]) { (dword) $10000000, (dword) $1000000, (dword) $100000, (dword) $10000, (dword) $1000, (dword) $100, (dword) $10 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const dword[]) RADIX_BINARY_VALUES_LONG = { $80000000, $40000000, $20000000, $10000000, $8000000, $4000000, $2000000, $1000000, $800000, $400000, $200000, $100000, $80000, $40000, $20000, $10000, $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2 } -Constant (const dword[]) RADIX_OCTAL_VALUES_LONG = { $40000000, $8000000, $1000000, $200000, $40000, $8000, $1000, $200, $40, 8 } -Constant (const dword[]) RADIX_DECIMAL_VALUES_LONG = { $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a } -Constant (const dword[]) RADIX_HEXADECIMAL_VALUES_LONG = { $10000000, $1000000, $100000, $10000, $1000, $100, $10 } Constant (const byte) ultoa::max_digits#0 = 0 Constant (const dword*) ultoa::digit_values#0 = (dword*) 0 Constant (const byte) ultoa::max_digits#1 = $a +Constant (const dword*) ultoa::digit_values#1 = RADIX_DECIMAL_VALUES_LONG Constant (const byte) ultoa::max_digits#2 = 8 +Constant (const dword*) ultoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_LONG Constant (const byte) ultoa::max_digits#3 = $b +Constant (const dword*) ultoa::digit_values#3 = RADIX_OCTAL_VALUES_LONG Constant (const byte) ultoa::max_digits#4 = $20 +Constant (const dword*) ultoa::digit_values#4 = RADIX_BINARY_VALUES_LONG Constant (const byte) ultoa::started#0 = 0 Constant (const byte) ultoa::digit#0 = 0 Constant (const byte) ultoa::started#1 = 1 @@ -1007,17 +991,13 @@ Constant (const dword) print_person::person_id#1 = henry_id Constant (const byte[3]) print_person::person_initials#1 = henry_initials Constant (const byte) print_char::ch#0 = ' ' Successful SSA optimization Pass2ConstantIdentification -Constant (const dword*) ultoa::digit_values#1 = RADIX_DECIMAL_VALUES_LONG -Constant (const dword*) ultoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_LONG -Constant (const dword*) ultoa::digit_values#3 = RADIX_OCTAL_VALUES_LONG -Constant (const dword*) ultoa::digit_values#4 = RADIX_BINARY_VALUES_LONG Constant (const byte*) ultoa::buffer#5 = decimal_digits_long Constant (const byte*) print_str::str#1 = decimal_digits_long Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [8] if((const byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 -if() condition always false - eliminating [14] if((const byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 -if() condition always false - eliminating [20] if((const byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 -if() condition always false - eliminating [26] if((const byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +if() condition always true - replacing block destination [4] if((const byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +if() condition always false - eliminating [10] if((const byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +if() condition always false - eliminating [16] if((const byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +if() condition always false - eliminating [22] if((const byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 Successful SSA optimization Pass2ConstantIfs Eliminating unused constant (const byte) BINARY Eliminating unused constant (const byte) OCTAL @@ -1062,10 +1042,10 @@ Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) ultoa::$5 = ultoa::max_digits#1-1 Successful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const byte) ultoa::max_digits#2 -Eliminating unused constant (const byte) ultoa::max_digits#3 -Eliminating unused constant (const byte) ultoa::max_digits#4 Eliminating unused constant (const dword*) ultoa::digit_values#2 +Eliminating unused constant (const byte) ultoa::max_digits#3 Eliminating unused constant (const dword*) ultoa::digit_values#3 +Eliminating unused constant (const byte) ultoa::max_digits#4 Eliminating unused constant (const dword*) ultoa::digit_values#4 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const dword[]) RADIX_BINARY_VALUES_LONG @@ -1104,7 +1084,6 @@ Successful SSA optimization PassNEliminateUnusedVars Added new block during phi lifting ultoa::@28(between ultoa::@27 and ultoa::@21) 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 @10 Adding NOP phi() at start of @12 Adding NOP phi() at start of @26 Adding NOP phi() at start of @38 @@ -1120,39 +1099,38 @@ Adding NOP phi() at start of print_dword_decimal::@2 Adding NOP phi() at start of ultoa Adding NOP phi() at start of ultoa::@1 CALL GRAPH -Calls in [] to main:5 -Calls in [main] to print_person:9 print_person:12 -Calls in [print_person] to print_dword_decimal:17 print_char:19 print_str:23 print_ln:25 -Calls in [print_dword_decimal] to ultoa:50 print_str:52 -Calls in [ultoa] to ultoa_append:81 +Calls in [] to main:4 +Calls in [main] to print_person:8 print_person:11 +Calls in [print_person] to print_dword_decimal:16 print_char:18 print_str:22 print_ln:24 +Calls in [print_dword_decimal] to ultoa:49 print_str:51 +Calls in [ultoa] to ultoa_append:80 Created 18 initial phi equivalence classes -Not coalescing [10] print_char_cursor#48 ← print_line_cursor#1 -Coalesced [11] print_line_cursor#28 ← print_line_cursor#1 -Coalesced [21] print_str::str#6 ← print_str::str#2 -Coalesced [22] print_char_cursor#45 ← print_char_cursor#25 -Coalesced [28] print_line_cursor#26 ← print_line_cursor#20 -Coalesced (already) [34] print_line_cursor#27 ← print_line_cursor#1 -Coalesced [36] print_str::str#7 ← print_str::str#5 -Coalesced [37] print_char_cursor#46 ← print_char_cursor#41 -Coalesced [44] print_str::str#8 ← print_str::str#0 -Coalesced [45] print_char_cursor#47 ← print_char_cursor#1 -Coalesced [51] print_char_cursor#44 ← print_char_cursor#39 -Coalesced [57] ultoa::value#17 ← ultoa::value#1 -Coalesced [69] ultoa::value#18 ← ultoa::value#2 -Coalesced [70] ultoa::started#6 ← ultoa::started#2 -Coalesced [71] ultoa::buffer#23 ← ultoa::buffer#11 -Coalesced [74] ultoa::digit#7 ← ultoa::digit#1 -Coalesced (already) [75] ultoa::value#16 ← ultoa::value#6 -Coalesced (already) [76] ultoa::started#5 ← ultoa::started#4 -Coalesced (already) [77] ultoa::buffer#22 ← ultoa::buffer#14 -Coalesced [85] ultoa::value#19 ← ultoa::value#0 -Coalesced [86] ultoa::buffer#24 ← ultoa::buffer#4 -Coalesced [87] ultoa_append::value#6 ← ultoa_append::value#0 -Coalesced [94] ultoa_append::value#7 ← ultoa_append::value#1 -Coalesced [95] ultoa_append::digit#5 ← ultoa_append::digit#1 +Not coalescing [9] print_char_cursor#48 ← print_line_cursor#1 +Coalesced [10] print_line_cursor#28 ← print_line_cursor#1 +Coalesced [20] print_str::str#6 ← print_str::str#2 +Coalesced [21] print_char_cursor#45 ← print_char_cursor#25 +Coalesced [27] print_line_cursor#26 ← print_line_cursor#20 +Coalesced (already) [33] print_line_cursor#27 ← print_line_cursor#1 +Coalesced [35] print_str::str#7 ← print_str::str#5 +Coalesced [36] print_char_cursor#46 ← print_char_cursor#41 +Coalesced [43] print_str::str#8 ← print_str::str#0 +Coalesced [44] print_char_cursor#47 ← print_char_cursor#1 +Coalesced [50] print_char_cursor#44 ← print_char_cursor#39 +Coalesced [56] ultoa::value#17 ← ultoa::value#1 +Coalesced [68] ultoa::value#18 ← ultoa::value#2 +Coalesced [69] ultoa::started#6 ← ultoa::started#2 +Coalesced [70] ultoa::buffer#23 ← ultoa::buffer#11 +Coalesced [73] ultoa::digit#7 ← ultoa::digit#1 +Coalesced (already) [74] ultoa::value#16 ← ultoa::value#6 +Coalesced (already) [75] ultoa::started#5 ← ultoa::started#4 +Coalesced (already) [76] ultoa::buffer#22 ← ultoa::buffer#14 +Coalesced [84] ultoa::value#19 ← ultoa::value#0 +Coalesced [85] ultoa::buffer#24 ← ultoa::buffer#4 +Coalesced [86] ultoa_append::value#6 ← ultoa_append::value#0 +Coalesced [93] ultoa_append::value#7 ← ultoa_append::value#1 +Coalesced [94] ultoa_append::digit#5 ← ultoa_append::digit#1 Coalesced down to 11 phi equivalence classes -Culled Empty Block (label) @10 Culled Empty Block (label) @12 Culled Empty Block (label) @26 Culled Empty Block (label) @39 @@ -2034,12 +2012,12 @@ ultoa_append: { // File Data // The digits used for numbers DIGITS: .text "0123456789abcdef" + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a jesper_initials: .text "jg" .byte 0 henry_initials: .text "hg" .byte 0 - // Values of decimal digits - RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a // Digits used for storing the decimal word decimal_digits_long: .fill $b, 0 @@ -2635,12 +2613,12 @@ ultoa_append: { // File Data // The digits used for numbers DIGITS: .text "0123456789abcdef" + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a jesper_initials: .text "jg" .byte 0 henry_initials: .text "hg" .byte 0 - // Values of decimal digits - RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a // Digits used for storing the decimal word decimal_digits_long: .fill $b, 0 @@ -3308,12 +3286,12 @@ ultoa_append: { // File Data // The digits used for numbers DIGITS: .text "0123456789abcdef" + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a jesper_initials: .text "jg" .byte 0 henry_initials: .text "hg" .byte 0 - // Values of decimal digits - RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a // Digits used for storing the decimal word decimal_digits_long: .fill $b, 0 diff --git a/src/test/ref/struct-ptr-20.log b/src/test/ref/struct-ptr-20.log index 2c049850b..e7617fec0 100644 --- a/src/test/ref/struct-ptr-20.log +++ b/src/test/ref/struct-ptr-20.log @@ -10,7 +10,7 @@ Culled Empty Block (label) main::@8 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Setting[]) settings ← { { (number) 0, (byte) 'a' }, { (number) 1, (byte) 'b' }, { (number) 0, (byte) 'c' } } + (struct Setting[]) settings ← { (struct Setting){ (byte)(number) 0, (byte) 'a' }, (struct Setting){ (byte)(number) 1, (byte) 'b' }, (struct Setting){ (byte)(number) 0, (byte) 'c' } } to:@1 (void()) main() @@ -116,8 +116,6 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (bool~) main::$9 ← (number) 0 != *((byte*) main::$7) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Setting[]) settings ← (struct Setting[]){ (struct Setting){ (byte)(number) 0, (byte) 'a' }, (struct Setting){ (byte)(number) 1, (byte) 'b' }, (struct Setting){ (byte)(number) 0, (byte) 'c' } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 diff --git a/src/test/ref/struct-ptr-21.log b/src/test/ref/struct-ptr-21.log index bf9b0c378..13c6358e2 100644 --- a/src/test/ref/struct-ptr-21.log +++ b/src/test/ref/struct-ptr-21.log @@ -1,4 +1,4 @@ -Fixing pointer array-indexing *((word[]) seq + (number) 0) +Fixing pointer array-indexing *((const word[]) seq + (number) 0) Fixing pointer array-indexing *((struct Setting[]) settings + (number) 0) Fixing pointer array-indexing *(*((struct Setting*) main::setting).buf + (byte) main::i) Fixing pointer array-indexing *((const word*) SCREEN + (byte) main::i) @@ -12,10 +12,9 @@ Culled Empty Block (label) main::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (word[]) seq ← { (number) 1, (number) 2, (number) 3 } (number~) $1 ← (number) 0 * (const byte) SIZEOF_WORD - (word*~) $0 ← & *((word[]) seq + (number~) $1) - (struct Setting[]) settings ← { { (number) 3, (word*~) $0 } } + (word*~) $0 ← & *((const word[]) seq + (number~) $1) + (struct Setting[]) settings ← { (struct Setting){ (byte)(number) 3, (word*)(word*~) $0 } } to:@1 (void()) main() @@ -83,7 +82,7 @@ SYMBOL TABLE SSA (struct Setting*) main::setting#0 (struct Setting*) main::setting#1 (struct Setting*) main::setting#2 -(word[]) seq +(const word[]) seq = { (word)(number) 1, (word)(number) 2, (word)(number) 3 } (struct Setting[]) settings Adding number conversion cast (unumber) 0 in (number~) $1 ← (number) 0 * (const byte) SIZEOF_WORD @@ -92,9 +91,6 @@ Adding number conversion cast (unumber) 0 in (number~) main::$2 ← (number) 0 * Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (unumber)(number) 0 * (const byte) SIZEOF_STRUCT_SETTING Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) seq ← (word[]){ (word)(number) 1, (word)(number) 2, (word)(number) 3 } -Added casts to value list in (struct Setting[]) settings ← (struct Setting[]){ (struct Setting){ (byte)(number) 3, (word*~) $0 } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::i#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (word*) 1024 @@ -103,6 +99,7 @@ Simplifying constant integer cast 2 Simplifying constant integer cast 3 Simplifying constant integer cast 0 Simplifying constant integer cast 3 +Simplifying constant integer cast (word*~) $0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification @@ -118,31 +115,28 @@ Alias (struct Setting*) main::setting#1 = (struct Setting*) main::setting#2 Successful SSA optimization Pass2AliasElimination Identical Phi Values (struct Setting*) main::setting#1 (struct Setting*) main::setting#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) main::$1 [11] if((byte) main::i#2<*((byte*) main::$4)) goto main::@2 +Simple Condition (bool~) main::$1 [10] if((byte) main::i#2<*((byte*) main::$4)) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification -Rewriting array member address-of to pointer addition [2] (word*~) $0 ← (word[]) seq + (byte~) $1 -Rewriting array member address-of to pointer addition [5] (struct Setting*) main::setting#0 ← (struct Setting[]) settings + (byte~) main::$2 +Rewriting array member address-of to pointer addition [1] (word*~) $0 ← (const word[]) seq + (byte~) $1 +Rewriting array member address-of to pointer addition [4] (struct Setting*) main::setting#0 ← (struct Setting[]) settings + (byte~) main::$2 Successful SSA optimization PassNArrayElementAddressOfRewriting -Constant right-side identified [1] (byte~) $1 ← (byte) 0 * (const byte) SIZEOF_WORD -Constant right-side identified [4] (byte~) main::$2 ← (byte) 0 * (const byte) SIZEOF_STRUCT_SETTING +Constant right-side identified [0] (byte~) $1 ← (byte) 0 * (const byte) SIZEOF_WORD +Constant right-side identified [3] (byte~) main::$2 ← (byte) 0 * (const byte) SIZEOF_STRUCT_SETTING Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) 1, (word) 2, (word) 3 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) seq = { 1, 2, 3 } Constant (const byte) $1 = 0*SIZEOF_WORD Constant (const byte) main::$2 = 0*SIZEOF_STRUCT_SETTING Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Converting *(pointer+n) to pointer[n] [11] if((byte) main::i#2<*((byte*) main::$4)) goto main::@2 -- *((byte*)main::setting#0 + OFFSET_STRUCT_SETTING_LEN) -Converting *(pointer+n) to pointer[n] [15] *((const word*) SCREEN + (byte~) main::$3) ← *(*((word**) main::$5) + (byte~) main::$3) -- *((word**)main::setting#0 + OFFSET_STRUCT_SETTING_BUF) +Converting *(pointer+n) to pointer[n] [10] if((byte) main::i#2<*((byte*) main::$4)) goto main::@2 -- *((byte*)main::setting#0 + OFFSET_STRUCT_SETTING_LEN) +Converting *(pointer+n) to pointer[n] [14] *((const word*) SCREEN + (byte~) main::$3) ← *(*((word**) main::$5) + (byte~) main::$3) -- *((word**)main::setting#0 + OFFSET_STRUCT_SETTING_BUF) Successful SSA optimization Pass2InlineDerefIdx Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_STRUCT_SETTING in Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_WORD in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero seq in [2] (word*~) $0 ← (const word[]) seq + (const byte) $1 -Simplifying expression containing zero settings in [5] (struct Setting*) main::setting#0 ← (struct Setting[]) settings + (const byte) main::$2 -Simplifying expression containing zero (byte*)main::setting#0 in [9] (byte*) main::$4 ← (byte*)(struct Setting*) main::setting#0 + (const byte) OFFSET_STRUCT_SETTING_LEN -Simplifying expression containing zero (byte*)main::setting#0 in [11] if((byte) main::i#2<*((byte*)(struct Setting*) main::setting#0 + (const byte) OFFSET_STRUCT_SETTING_LEN)) goto main::@2 +Simplifying expression containing zero seq in [1] (word*~) $0 ← (const word[]) seq + (const byte) $1 +Simplifying expression containing zero settings in [4] (struct Setting*) main::setting#0 ← (struct Setting[]) settings + (const byte) main::$2 +Simplifying expression containing zero (byte*)main::setting#0 in [8] (byte*) main::$4 ← (byte*)(struct Setting*) main::setting#0 + (const byte) OFFSET_STRUCT_SETTING_LEN +Simplifying expression containing zero (byte*)main::setting#0 in [10] if((byte) main::i#2<*((byte*)(struct Setting*) main::setting#0 + (const byte) OFFSET_STRUCT_SETTING_LEN)) goto main::@2 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused variable (byte*) main::$4 and assignment [4] (byte*) main::$4 ← (byte*)(struct Setting*) main::setting#0 Eliminating unused variable (word**) main::$5 and assignment [7] (word**) main::$5 ← (word**)(struct Setting*) main::setting#0 + (const byte) OFFSET_STRUCT_SETTING_BUF diff --git a/src/test/ref/struct-ptr-23.log b/src/test/ref/struct-ptr-23.log index ae8b2f6e1..cc4102531 100644 --- a/src/test/ref/struct-ptr-23.log +++ b/src/test/ref/struct-ptr-23.log @@ -9,7 +9,7 @@ Rewriting struct pointer member access *((struct Person*) print_person::person). CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Person[]) persons ← { { (number) 1, (const string) $0 }, { (number) 8, (const string) $1 } } + (struct Person[]) persons ← { (struct Person){ (byte)(number) 1, (const string) $0 }, (struct Person){ (byte)(number) 8, (const string) $1 } } to:@1 (void()) main() @@ -138,8 +138,6 @@ Adding number conversion cast (unumber) 0 in *((const byte*) SCREEN + (byte) idx Adding number conversion cast (unumber) 1 in *((const byte*) SCREEN + (byte) idx#6) ← *((byte[4]) print_person::$3 + (number) 1) Adding number conversion cast (unumber) 2 in *((const byte*) SCREEN + (byte) idx#7) ← *((byte[4]) print_person::$4 + (number) 2) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Person[]) persons ← (struct Person[]){ (struct Person){ (byte)(number) 1, (const string) $0 }, (struct Person){ (byte)(number) 8, (const string) $1 } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) idx#3 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 diff --git a/src/test/ref/struct-ptr-29.log b/src/test/ref/struct-ptr-29.log index c0a09073e..72291d277 100644 --- a/src/test/ref/struct-ptr-29.log +++ b/src/test/ref/struct-ptr-29.log @@ -10,7 +10,7 @@ Culled Empty Block (label) print_person::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Person[2]) persons ← { { (number) 4, (const string) $0 }, { (number) 7, (const string) $1 } } + (struct Person[2]) persons ← { (struct Person){ (byte)(number) 4, (const string) $0 }, (struct Person){ (byte)(number) 7, (const string) $1 } } to:@1 (void()) main() @@ -165,8 +165,6 @@ Adding number conversion cast (unumber) 0 in (byte) idx#3 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) print_person::i#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (bool~) print_person::$3 ← (number) 0 != *(*((byte**) print_person::$1) + (byte) print_person::i#2) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Person[2]) persons ← (struct Person[2]){ (struct Person){ (byte)(number) 4, (const string) $0 }, (struct Person){ (byte)(number) 7, (const string) $1 } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) idx#3 ← (unumber)(number) 0 Inlining cast (byte) print_person::i#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast diff --git a/src/test/ref/struct-ptr-30.log b/src/test/ref/struct-ptr-30.log index 2bb6b1ca5..eb7804d54 100644 --- a/src/test/ref/struct-ptr-30.log +++ b/src/test/ref/struct-ptr-30.log @@ -11,7 +11,7 @@ Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Point[4]) points ← { { (number) 1, (number) $83f }, { (number) 3, (number) $107e } } + (struct Point[4]) points ← { (struct Point){ (byte)(number) 1, (signed word)(number) $83f }, (struct Point){ (byte)(number) 3, (signed word)(number) $107e } } to:@1 (void()) main() @@ -135,8 +135,6 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) 0 in (byte) idx#2 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Point[4]) points ← (struct Point[4]){ (struct Point){ (byte)(number) 1, (signed word)(number) $83f }, (struct Point){ (byte)(number) 3, (signed word)(number) $107e } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) idx#2 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 diff --git a/src/test/ref/struct-ptr-31.log b/src/test/ref/struct-ptr-31.log index a789a3bb2..80d7a693f 100644 --- a/src/test/ref/struct-ptr-31.log +++ b/src/test/ref/struct-ptr-31.log @@ -11,7 +11,7 @@ Culled Empty Block (label) print_person::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Person[]) persons ← { { (number) 4, (const string) $0 }, { (number) 7, (const string) $1 } } + (struct Person[]) persons ← { (struct Person){ (byte)(number) 4, (const string) $0 }, (struct Person){ (byte)(number) 7, (const string) $1 } } to:@1 (void()) main() @@ -160,8 +160,6 @@ Adding number conversion cast (unumber) 0 in (byte) idx#3 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) print_person::i#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (bool~) print_person::$3 ← (number) 0 != *((byte[$10]) print_person::$1 + (byte) print_person::i#2) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Person[]) persons ← (struct Person[]){ (struct Person){ (byte)(number) 4, (const string) $0 }, (struct Person){ (byte)(number) 7, (const string) $1 } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) idx#3 ← (unumber)(number) 0 Inlining cast (byte) print_person::i#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast diff --git a/src/test/ref/struct-ptr-33.log b/src/test/ref/struct-ptr-33.log index f0d5053a4..4c3a07249 100644 --- a/src/test/ref/struct-ptr-33.log +++ b/src/test/ref/struct-ptr-33.log @@ -6,7 +6,7 @@ Rewriting struct pointer member access *((struct Person*) main::person).name CONTROL FLOW GRAPH SSA @begin: scope:[] from - (struct Person[2]) persons ← { { (number) 7, (const string) $0, (number) $141 }, { (number) 9, (const string) $1, (number) $7b } } + (struct Person[2]) persons ← { (struct Person){ (byte)(number) 7, (const string) $0, (word)(number) $141 }, (struct Person){ (byte)(number) 9, (const string) $1, (word)(number) $7b } } to:@1 (void()) main() @@ -55,8 +55,6 @@ Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (num Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 1) ← *((byte[$d]) main::$1 + (number) 2) Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← *((byte[$d]) main::$1 + (unumber)(number) 2) Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (struct Person[2]) persons ← (struct Person[2]){ (struct Person){ (byte)(number) 7, (const string) $0, (word)(number) $141 }, (struct Person){ (byte)(number) 9, (const string) $1, (word)(number) $7b } } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 7 Simplifying constant integer cast $141 diff --git a/src/test/ref/test-comparisons-sword.cfg b/src/test/ref/test-comparisons-sword.cfg index 8d7b001e1..ea54b57d5 100644 --- a/src/test/ref/test-comparisons-sword.cfg +++ b/src/test/ref/test-comparisons-sword.cfg @@ -14,23 +14,23 @@ main: scope:[main] from @1 [5] call print_cls to:main::@1 main::@1: scope:[main] from main main::@7 - [6] (byte*) print_line_cursor#29 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) + [6] (byte*) print_line_cursor#28 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) [6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 ) - [6] (byte*) print_char_cursor#82 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#72 ) + [6] (byte*) print_char_cursor#81 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#72 ) [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [8] (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [9] (byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#29 main::@6/(byte*) print_line_cursor#23 ) + [9] (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#28 main::@6/(byte*) print_line_cursor#23 ) [9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 ) - [9] (byte*) print_char_cursor#71 ← phi( main::@1/(byte*) print_char_cursor#82 main::@6/(byte*) print_char_cursor#72 ) + [9] (byte*) print_char_cursor#71 ← phi( main::@1/(byte*) print_char_cursor#81 main::@6/(byte*) print_char_cursor#72 ) [9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 ) [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [11] (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) to:main::@3 main::@3: scope:[main] from main::@2 main::@4 - [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#27 main::@4/(byte*) print_line_cursor#23 ) + [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#26 main::@4/(byte*) print_line_cursor#23 ) [12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 ) [12] (byte*) print_char_cursor#64 ← phi( main::@2/(byte*) print_char_cursor#71 main::@4/(byte*) print_char_cursor#72 ) [12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 ) @@ -48,12 +48,12 @@ main::@5: scope:[main] from main::@9 [20] call print_ln to:main::@10 main::@10: scope:[main] from main::@5 - [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 + [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 to:main::@4 main::@4: scope:[main] from main::@10 main::@9 [22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 ) [22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 ) - [22] (byte*) print_char_cursor#72 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#116 ) + [22] (byte*) print_char_cursor#72 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#115 ) [23] (byte) main::op#1 ← ++ (byte) main::op#2 [24] if((byte) main::op#1!=(byte) 6) goto main::@3 to:main::@6 diff --git a/src/test/ref/test-comparisons-sword.log b/src/test/ref/test-comparisons-sword.log index 381eafc53..1732083b2 100644 --- a/src/test/ref/test-comparisons-sword.log +++ b/src/test/ref/test-comparisons-sword.log @@ -3,8 +3,8 @@ Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + 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) -Fixing pointer array-indexing *((signed word[]) swords + (byte) main::i) -Fixing pointer array-indexing *((signed word[]) swords + (byte) main::j) +Fixing pointer array-indexing *((const signed word[]) swords + (byte) main::i) +Fixing pointer array-indexing *((const signed word[]) swords + (byte) main::j) Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) 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 @@ -61,6 +61,7 @@ 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) main::@8 Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@12 @@ -130,7 +131,7 @@ memset::@return: scope:[memset] from memset::@1 (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:@40 + to:@42 (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from compare::@35 @@ -315,12 +316,6 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#45 return to:@return -@40: scope:[] from @16 - (byte*) print_screen#5 ← phi( @16/(byte*) print_screen#0 ) - (byte*) print_char_cursor#81 ← phi( @16/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#24 ← phi( @16/(byte*) print_line_cursor#0 ) - (signed word[]) swords ← { (number) -$6fed, (number) $12, (number) $7fed } - to:@42 (void()) main() main: scope:[main] from @42 @@ -338,28 +333,28 @@ main::@15: scope:[main] from main (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main::@15 main::@7 - (byte*) print_line_cursor#29 ← phi( main::@15/(byte*) print_line_cursor#5 main::@7/(byte*) print_line_cursor#23 ) + (byte*) print_line_cursor#28 ← phi( main::@15/(byte*) print_line_cursor#5 main::@7/(byte*) print_line_cursor#23 ) (byte) main::s#7 ← phi( main::@15/(byte) main::s#0 main::@7/(byte) main::s#10 ) - (byte*) print_char_cursor#82 ← phi( main::@15/(byte*) print_char_cursor#19 main::@7/(byte*) print_char_cursor#73 ) + (byte*) print_char_cursor#81 ← phi( main::@15/(byte*) print_char_cursor#19 main::@7/(byte*) print_char_cursor#73 ) (byte) main::i#2 ← phi( main::@15/(byte) main::i#0 main::@7/(byte) main::i#1 ) (byte~) main::$8 ← (byte) main::i#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word) main::w1#0 ← *((signed word[]) swords + (byte~) main::$8) + (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) (byte) main::j#0 ← (byte) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@6 (byte) main::i#10 ← phi( main::@1/(byte) main::i#2 main::@6/(byte) main::i#4 ) - (byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#29 main::@6/(byte*) print_line_cursor#26 ) + (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#28 main::@6/(byte*) print_line_cursor#25 ) (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#8 ) - (byte*) print_char_cursor#71 ← phi( main::@1/(byte*) print_char_cursor#82 main::@6/(byte*) print_char_cursor#83 ) + (byte*) print_char_cursor#71 ← phi( main::@1/(byte*) print_char_cursor#81 main::@6/(byte*) print_char_cursor#82 ) (signed word) main::w1#2 ← phi( main::@1/(signed word) main::w1#0 main::@6/(signed word) main::w1#4 ) (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@6/(byte) main::j#1 ) (byte~) main::$9 ← (byte) main::j#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word) main::w2#0 ← *((signed word[]) swords + (byte~) main::$9) + (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) (byte) main::op#0 ← (byte) 0 to:main::@3 main::@3: scope:[main] from main::@2 main::@4 (byte) main::i#8 ← phi( main::@2/(byte) main::i#10 main::@4/(byte) main::i#5 ) - (byte*) print_line_cursor#25 ← phi( main::@2/(byte*) print_line_cursor#27 main::@4/(byte*) print_line_cursor#28 ) + (byte*) print_line_cursor#24 ← phi( main::@2/(byte*) print_line_cursor#26 main::@4/(byte*) print_line_cursor#27 ) (byte) main::j#7 ← phi( main::@2/(byte) main::j#2 main::@4/(byte) main::j#4 ) (byte) main::s#4 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#6 ) (byte*) print_char_cursor#64 ← phi( main::@2/(byte*) print_char_cursor#71 main::@4/(byte*) print_char_cursor#72 ) @@ -373,7 +368,7 @@ main::@3: scope:[main] from main::@2 main::@4 to:main::@16 main::@16: scope:[main] from main::@3 (byte) main::i#6 ← phi( main::@3/(byte) main::i#8 ) - (byte*) print_line_cursor#22 ← phi( main::@3/(byte*) print_line_cursor#25 ) + (byte*) print_line_cursor#22 ← phi( main::@3/(byte*) print_line_cursor#24 ) (byte) main::j#5 ← phi( main::@3/(byte) main::j#7 ) (signed word) main::w2#3 ← phi( main::@3/(signed word) main::w2#1 ) (signed word) main::w1#5 ← phi( main::@3/(signed word) main::w1#1 ) @@ -387,7 +382,7 @@ main::@16: scope:[main] from main::@3 if((bool~) main::$3) goto main::@4 to:main::@5 main::@4: scope:[main] from main::@16 main::@17 - (byte*) print_line_cursor#28 ← phi( main::@16/(byte*) print_line_cursor#22 main::@17/(byte*) print_line_cursor#6 ) + (byte*) print_line_cursor#27 ← phi( main::@16/(byte*) print_line_cursor#22 main::@17/(byte*) print_line_cursor#6 ) (byte) main::i#5 ← phi( main::@16/(byte) main::i#6 main::@17/(byte) main::i#7 ) (byte) main::s#6 ← phi( main::@16/(byte) main::s#1 main::@17/(byte) main::s#9 ) (byte*) print_char_cursor#72 ← phi( main::@16/(byte*) print_char_cursor#20 main::@17/(byte*) print_char_cursor#21 ) @@ -423,9 +418,9 @@ main::@17: scope:[main] from main::@5 (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#48 to:main::@4 main::@6: scope:[main] from main::@4 - (byte*) print_line_cursor#26 ← phi( main::@4/(byte*) print_line_cursor#28 ) + (byte*) print_line_cursor#25 ← phi( main::@4/(byte*) print_line_cursor#27 ) (byte) main::s#8 ← phi( main::@4/(byte) main::s#6 ) - (byte*) print_char_cursor#83 ← phi( main::@4/(byte*) print_char_cursor#72 ) + (byte*) print_char_cursor#82 ← phi( main::@4/(byte*) print_char_cursor#72 ) (signed word) main::w1#4 ← phi( main::@4/(signed word) main::w1#3 ) (byte) main::i#4 ← phi( main::@4/(byte) main::i#5 ) (byte) main::j#3 ← phi( main::@4/(byte) main::j#4 ) @@ -435,8 +430,8 @@ main::@6: scope:[main] from main::@4 to:main::@7 main::@7: scope:[main] from main::@6 (byte) main::s#10 ← phi( main::@6/(byte) main::s#8 ) - (byte*) print_char_cursor#73 ← phi( main::@6/(byte*) print_char_cursor#83 ) - (byte*) print_line_cursor#23 ← phi( main::@6/(byte*) print_line_cursor#26 ) + (byte*) print_char_cursor#73 ← phi( main::@6/(byte*) print_char_cursor#82 ) + (byte*) print_line_cursor#23 ← phi( main::@6/(byte*) print_line_cursor#25 ) (byte) main::i#3 ← phi( main::@6/(byte) main::i#4 ) (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,2) (bool~) main::$7 ← (byte) main::i#1 != rangelast(0,2) @@ -457,7 +452,7 @@ main::@return: scope:[main] from main::@9 (void()) compare((signed word) compare::w1 , (signed word) compare::w2 , (byte) compare::op) compare: scope:[compare] from main::@3 - (byte*) print_char_cursor#97 ← phi( main::@3/(byte*) print_char_cursor#64 ) + (byte*) print_char_cursor#96 ← phi( main::@3/(byte*) print_char_cursor#64 ) (signed word) compare::w2#8 ← phi( main::@3/(signed word) compare::w2#0 ) (signed word) compare::w1#8 ← phi( main::@3/(signed word) compare::w1#0 ) (byte) compare::op#1 ← phi( main::@3/(byte) compare::op#0 ) @@ -468,7 +463,7 @@ compare: scope:[compare] from main::@3 to:compare::@12 compare::@1: scope:[compare] from compare (byte) compare::r#24 ← phi( compare/(byte) compare::r#0 ) - (byte*) print_char_cursor#95 ← phi( compare/(byte*) print_char_cursor#97 ) + (byte*) print_char_cursor#94 ← phi( compare/(byte*) print_char_cursor#96 ) (signed word) compare::w2#1 ← phi( compare/(signed word) compare::w2#8 ) (signed word) compare::w1#1 ← phi( compare/(signed word) compare::w1#8 ) (bool~) compare::$21 ← (signed word) compare::w1#1 < (signed word) compare::w2#1 @@ -478,7 +473,7 @@ compare::@1: scope:[compare] from compare compare::@12: scope:[compare] from compare (byte*) compare::ops#13 ← phi( compare/(byte*) compare::ops#0 ) (byte) compare::r#25 ← phi( compare/(byte) compare::r#0 ) - (byte*) print_char_cursor#98 ← phi( compare/(byte*) print_char_cursor#97 ) + (byte*) print_char_cursor#97 ← phi( compare/(byte*) print_char_cursor#96 ) (signed word) compare::w2#9 ← phi( compare/(signed word) compare::w2#8 ) (signed word) compare::w1#9 ← phi( compare/(signed word) compare::w1#8 ) (byte) compare::op#2 ← phi( compare/(byte) compare::op#1 ) @@ -487,7 +482,7 @@ compare::@12: scope:[compare] from compare to:compare::@13 compare::@2: scope:[compare] from compare::@12 (byte) compare::r#23 ← phi( compare::@12/(byte) compare::r#25 ) - (byte*) print_char_cursor#93 ← phi( compare::@12/(byte*) print_char_cursor#98 ) + (byte*) print_char_cursor#92 ← phi( compare::@12/(byte*) print_char_cursor#97 ) (signed word) compare::w2#2 ← phi( compare::@12/(signed word) compare::w2#9 ) (signed word) compare::w1#2 ← phi( compare::@12/(signed word) compare::w1#9 ) (bool~) compare::$19 ← (signed word) compare::w1#2 <= (signed word) compare::w2#2 @@ -497,7 +492,7 @@ compare::@2: scope:[compare] from compare::@12 compare::@13: scope:[compare] from compare::@12 (byte) compare::r#26 ← phi( compare::@12/(byte) compare::r#25 ) (byte*) compare::ops#12 ← phi( compare::@12/(byte*) compare::ops#13 ) - (byte*) print_char_cursor#99 ← phi( compare::@12/(byte*) print_char_cursor#98 ) + (byte*) print_char_cursor#98 ← phi( compare::@12/(byte*) print_char_cursor#97 ) (signed word) compare::w2#10 ← phi( compare::@12/(signed word) compare::w2#9 ) (signed word) compare::w1#10 ← phi( compare::@12/(signed word) compare::w1#9 ) (byte) compare::op#3 ← phi( compare::@12/(byte) compare::op#2 ) @@ -506,7 +501,7 @@ compare::@13: scope:[compare] from compare::@12 to:compare::@14 compare::@3: scope:[compare] from compare::@13 (byte) compare::r#22 ← phi( compare::@13/(byte) compare::r#26 ) - (byte*) print_char_cursor#92 ← phi( compare::@13/(byte*) print_char_cursor#99 ) + (byte*) print_char_cursor#91 ← phi( compare::@13/(byte*) print_char_cursor#98 ) (signed word) compare::w2#3 ← phi( compare::@13/(signed word) compare::w2#10 ) (signed word) compare::w1#3 ← phi( compare::@13/(signed word) compare::w1#10 ) (bool~) compare::$17 ← (signed word) compare::w1#3 > (signed word) compare::w2#3 @@ -516,7 +511,7 @@ compare::@3: scope:[compare] from compare::@13 compare::@14: scope:[compare] from compare::@13 (byte) compare::r#27 ← phi( compare::@13/(byte) compare::r#26 ) (byte*) compare::ops#11 ← phi( compare::@13/(byte*) compare::ops#12 ) - (byte*) print_char_cursor#100 ← phi( compare::@13/(byte*) print_char_cursor#99 ) + (byte*) print_char_cursor#99 ← phi( compare::@13/(byte*) print_char_cursor#98 ) (signed word) compare::w2#11 ← phi( compare::@13/(signed word) compare::w2#10 ) (signed word) compare::w1#11 ← phi( compare::@13/(signed word) compare::w1#10 ) (byte) compare::op#4 ← phi( compare::@13/(byte) compare::op#3 ) @@ -525,7 +520,7 @@ compare::@14: scope:[compare] from compare::@13 to:compare::@15 compare::@4: scope:[compare] from compare::@14 (byte) compare::r#21 ← phi( compare::@14/(byte) compare::r#27 ) - (byte*) print_char_cursor#90 ← phi( compare::@14/(byte*) print_char_cursor#100 ) + (byte*) print_char_cursor#89 ← phi( compare::@14/(byte*) print_char_cursor#99 ) (signed word) compare::w2#4 ← phi( compare::@14/(signed word) compare::w2#11 ) (signed word) compare::w1#4 ← phi( compare::@14/(signed word) compare::w1#11 ) (bool~) compare::$15 ← (signed word) compare::w1#4 >= (signed word) compare::w2#4 @@ -535,7 +530,7 @@ compare::@4: scope:[compare] from compare::@14 compare::@15: scope:[compare] from compare::@14 (byte) compare::r#18 ← phi( compare::@14/(byte) compare::r#27 ) (byte*) compare::ops#10 ← phi( compare::@14/(byte*) compare::ops#11 ) - (byte*) print_char_cursor#84 ← phi( compare::@14/(byte*) print_char_cursor#100 ) + (byte*) print_char_cursor#83 ← phi( compare::@14/(byte*) print_char_cursor#99 ) (signed word) compare::w2#12 ← phi( compare::@14/(signed word) compare::w2#11 ) (signed word) compare::w1#12 ← phi( compare::@14/(signed word) compare::w1#11 ) (byte) compare::op#5 ← phi( compare::@14/(byte) compare::op#4 ) @@ -544,7 +539,7 @@ compare::@15: scope:[compare] from compare::@14 to:compare::@16 compare::@5: scope:[compare] from compare::@15 (byte) compare::r#20 ← phi( compare::@15/(byte) compare::r#18 ) - (byte*) print_char_cursor#88 ← phi( compare::@15/(byte*) print_char_cursor#84 ) + (byte*) print_char_cursor#87 ← phi( compare::@15/(byte*) print_char_cursor#83 ) (signed word) compare::w2#5 ← phi( compare::@15/(signed word) compare::w2#12 ) (signed word) compare::w1#5 ← phi( compare::@15/(signed word) compare::w1#12 ) (bool~) compare::$13 ← (signed word) compare::w1#5 == (signed word) compare::w2#5 @@ -554,7 +549,7 @@ compare::@5: scope:[compare] from compare::@15 compare::@16: scope:[compare] from compare::@15 (byte) compare::r#11 ← phi( compare::@15/(byte) compare::r#18 ) (byte*) compare::ops#9 ← phi( compare::@15/(byte*) compare::ops#10 ) - (byte*) print_char_cursor#74 ← phi( compare::@15/(byte*) print_char_cursor#84 ) + (byte*) print_char_cursor#74 ← phi( compare::@15/(byte*) print_char_cursor#83 ) (signed word) compare::w2#13 ← phi( compare::@15/(signed word) compare::w2#12 ) (signed word) compare::w1#13 ← phi( compare::@15/(signed word) compare::w1#12 ) (byte) compare::op#6 ← phi( compare::@15/(byte) compare::op#5 ) @@ -564,7 +559,7 @@ compare::@16: scope:[compare] from compare::@15 to:compare::@17 compare::@17: scope:[compare] from compare::@16 (byte) compare::r#19 ← phi( compare::@16/(byte) compare::r#11 ) - (byte*) print_char_cursor#85 ← phi( compare::@16/(byte*) print_char_cursor#74 ) + (byte*) print_char_cursor#84 ← phi( compare::@16/(byte*) print_char_cursor#74 ) (signed word) compare::w2#6 ← phi( compare::@16/(signed word) compare::w2#13 ) (signed word) compare::w1#6 ← phi( compare::@16/(signed word) compare::w1#13 ) (bool~) compare::$11 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 @@ -574,65 +569,65 @@ compare::@17: scope:[compare] from compare::@16 compare::@29: scope:[compare] from compare::@17 compare::@18 (byte) compare::r#12 ← phi( compare::@17/(byte) compare::r#19 compare::@18/(byte) compare::r#1 ) (signed word) compare::w2#16 ← phi( compare::@17/(signed word) compare::w2#6 compare::@18/(signed word) compare::w2#22 ) - (byte*) print_char_cursor#75 ← phi( compare::@17/(byte*) print_char_cursor#85 compare::@18/(byte*) print_char_cursor#86 ) + (byte*) print_char_cursor#75 ← phi( compare::@17/(byte*) print_char_cursor#84 compare::@18/(byte*) print_char_cursor#85 ) (signed word) compare::w1#14 ← phi( compare::@17/(signed word) compare::w1#6 compare::@18/(signed word) compare::w1#20 ) (byte*) compare::ops#1 ← (const string) compare::$23 to:compare::@11 compare::@18: scope:[compare] from compare::@17 (signed word) compare::w2#22 ← phi( compare::@17/(signed word) compare::w2#6 ) - (byte*) print_char_cursor#86 ← phi( compare::@17/(byte*) print_char_cursor#85 ) + (byte*) print_char_cursor#85 ← phi( compare::@17/(byte*) print_char_cursor#84 ) (signed word) compare::w1#20 ← phi( compare::@17/(signed word) compare::w1#6 ) (byte) compare::r#1 ← (const byte) TT to:compare::@29 compare::@30: scope:[compare] from compare::@20 compare::@5 (byte) compare::r#13 ← phi( compare::@20/(byte) compare::r#2 compare::@5/(byte) compare::r#20 ) (signed word) compare::w2#17 ← phi( compare::@20/(signed word) compare::w2#23 compare::@5/(signed word) compare::w2#5 ) - (byte*) print_char_cursor#76 ← phi( compare::@20/(byte*) print_char_cursor#87 compare::@5/(byte*) print_char_cursor#88 ) + (byte*) print_char_cursor#76 ← phi( compare::@20/(byte*) print_char_cursor#86 compare::@5/(byte*) print_char_cursor#87 ) (signed word) compare::w1#15 ← phi( compare::@20/(signed word) compare::w1#21 compare::@5/(signed word) compare::w1#5 ) (byte*) compare::ops#2 ← (const string) compare::$24 to:compare::@11 compare::@20: scope:[compare] from compare::@5 (signed word) compare::w2#23 ← phi( compare::@5/(signed word) compare::w2#5 ) - (byte*) print_char_cursor#87 ← phi( compare::@5/(byte*) print_char_cursor#88 ) + (byte*) print_char_cursor#86 ← phi( compare::@5/(byte*) print_char_cursor#87 ) (signed word) compare::w1#21 ← phi( compare::@5/(signed word) compare::w1#5 ) (byte) compare::r#2 ← (const byte) TT to:compare::@30 compare::@31: scope:[compare] from compare::@22 compare::@4 (byte) compare::r#14 ← phi( compare::@22/(byte) compare::r#3 compare::@4/(byte) compare::r#21 ) (signed word) compare::w2#18 ← phi( compare::@22/(signed word) compare::w2#24 compare::@4/(signed word) compare::w2#4 ) - (byte*) print_char_cursor#77 ← phi( compare::@22/(byte*) print_char_cursor#89 compare::@4/(byte*) print_char_cursor#90 ) + (byte*) print_char_cursor#77 ← phi( compare::@22/(byte*) print_char_cursor#88 compare::@4/(byte*) print_char_cursor#89 ) (signed word) compare::w1#16 ← phi( compare::@22/(signed word) compare::w1#22 compare::@4/(signed word) compare::w1#4 ) (byte*) compare::ops#3 ← (const string) compare::$25 to:compare::@11 compare::@22: scope:[compare] from compare::@4 (signed word) compare::w2#24 ← phi( compare::@4/(signed word) compare::w2#4 ) - (byte*) print_char_cursor#89 ← phi( compare::@4/(byte*) print_char_cursor#90 ) + (byte*) print_char_cursor#88 ← phi( compare::@4/(byte*) print_char_cursor#89 ) (signed word) compare::w1#22 ← phi( compare::@4/(signed word) compare::w1#4 ) (byte) compare::r#3 ← (const byte) TT to:compare::@31 compare::@32: scope:[compare] from compare::@24 compare::@3 (byte) compare::r#15 ← phi( compare::@24/(byte) compare::r#4 compare::@3/(byte) compare::r#22 ) (signed word) compare::w2#19 ← phi( compare::@24/(signed word) compare::w2#25 compare::@3/(signed word) compare::w2#3 ) - (byte*) print_char_cursor#78 ← phi( compare::@24/(byte*) print_char_cursor#91 compare::@3/(byte*) print_char_cursor#92 ) + (byte*) print_char_cursor#78 ← phi( compare::@24/(byte*) print_char_cursor#90 compare::@3/(byte*) print_char_cursor#91 ) (signed word) compare::w1#17 ← phi( compare::@24/(signed word) compare::w1#23 compare::@3/(signed word) compare::w1#3 ) (byte*) compare::ops#4 ← (const string) compare::$26 to:compare::@11 compare::@24: scope:[compare] from compare::@3 (signed word) compare::w2#25 ← phi( compare::@3/(signed word) compare::w2#3 ) - (byte*) print_char_cursor#91 ← phi( compare::@3/(byte*) print_char_cursor#92 ) + (byte*) print_char_cursor#90 ← phi( compare::@3/(byte*) print_char_cursor#91 ) (signed word) compare::w1#23 ← phi( compare::@3/(signed word) compare::w1#3 ) (byte) compare::r#4 ← (const byte) TT to:compare::@32 compare::@33: scope:[compare] from compare::@2 compare::@26 (byte) compare::r#16 ← phi( compare::@2/(byte) compare::r#23 compare::@26/(byte) compare::r#5 ) (signed word) compare::w2#20 ← phi( compare::@2/(signed word) compare::w2#2 compare::@26/(signed word) compare::w2#26 ) - (byte*) print_char_cursor#79 ← phi( compare::@2/(byte*) print_char_cursor#93 compare::@26/(byte*) print_char_cursor#94 ) + (byte*) print_char_cursor#79 ← phi( compare::@2/(byte*) print_char_cursor#92 compare::@26/(byte*) print_char_cursor#93 ) (signed word) compare::w1#18 ← phi( compare::@2/(signed word) compare::w1#2 compare::@26/(signed word) compare::w1#24 ) (byte*) compare::ops#5 ← (const string) compare::$27 to:compare::@11 compare::@26: scope:[compare] from compare::@2 (signed word) compare::w2#26 ← phi( compare::@2/(signed word) compare::w2#2 ) - (byte*) print_char_cursor#94 ← phi( compare::@2/(byte*) print_char_cursor#93 ) + (byte*) print_char_cursor#93 ← phi( compare::@2/(byte*) print_char_cursor#92 ) (signed word) compare::w1#24 ← phi( compare::@2/(signed word) compare::w1#2 ) (byte) compare::r#5 ← (const byte) TT to:compare::@33 @@ -676,13 +671,13 @@ compare::@38: scope:[compare] from compare::@37 compare::@34: scope:[compare] from compare::@1 compare::@28 (byte) compare::r#17 ← phi( compare::@1/(byte) compare::r#24 compare::@28/(byte) compare::r#6 ) (signed word) compare::w2#21 ← phi( compare::@1/(signed word) compare::w2#1 compare::@28/(signed word) compare::w2#27 ) - (byte*) print_char_cursor#80 ← phi( compare::@1/(byte*) print_char_cursor#95 compare::@28/(byte*) print_char_cursor#96 ) + (byte*) print_char_cursor#80 ← phi( compare::@1/(byte*) print_char_cursor#94 compare::@28/(byte*) print_char_cursor#95 ) (signed word) compare::w1#19 ← phi( compare::@1/(signed word) compare::w1#1 compare::@28/(signed word) compare::w1#25 ) (byte*) compare::ops#6 ← (const string) compare::$28 to:compare::@11 compare::@28: scope:[compare] from compare::@1 (signed word) compare::w2#27 ← phi( compare::@1/(signed word) compare::w2#1 ) - (byte*) print_char_cursor#96 ← phi( compare::@1/(byte*) print_char_cursor#95 ) + (byte*) print_char_cursor#95 ← phi( compare::@1/(byte*) print_char_cursor#94 ) (signed word) compare::w1#25 ← phi( compare::@1/(signed word) compare::w1#1 ) (byte) compare::r#6 ← (const byte) TT to:compare::@34 @@ -691,10 +686,10 @@ compare::@return: scope:[compare] from compare::@38 (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#54 return to:@return -@42: scope:[] from @40 - (byte*) print_screen#4 ← phi( @40/(byte*) print_screen#5 ) - (byte*) print_char_cursor#68 ← phi( @40/(byte*) print_char_cursor#81 ) - (byte*) print_line_cursor#21 ← phi( @40/(byte*) print_line_cursor#24 ) +@42: scope:[] from @16 + (byte*) print_screen#4 ← phi( @16/(byte*) print_screen#0 ) + (byte*) print_char_cursor#68 ← phi( @16/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#21 ← phi( @16/(byte*) print_line_cursor#0 ) call main to:@43 @43: scope:[] from @42 @@ -707,7 +702,6 @@ compare::@return: scope:[compare] from compare::@38 SYMBOL TABLE SSA (label) @16 -(label) @40 (label) @42 (label) @43 (label) @begin @@ -1032,7 +1026,6 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 (byte*) print_char_cursor#10 -(byte*) print_char_cursor#100 (byte*) print_char_cursor#11 (byte*) print_char_cursor#12 (byte*) print_char_cursor#13 @@ -1157,7 +1150,6 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#26 (byte*) print_line_cursor#27 (byte*) print_line_cursor#28 -(byte*) print_line_cursor#29 (byte*) print_line_cursor#3 (byte*) print_line_cursor#4 (byte*) print_line_cursor#5 @@ -1177,7 +1169,6 @@ SYMBOL TABLE SSA (byte*) print_screen#2 (byte*) print_screen#3 (byte*) print_screen#4 -(byte*) print_screen#5 (void()) print_str((byte*) print_str::str) (bool~) print_str::$0 (label) print_str::@1 @@ -1220,7 +1211,7 @@ SYMBOL TABLE SSA (word) print_word::w#0 (word) print_word::w#1 (word) print_word::w#2 -(signed word[]) swords +(const signed word[]) swords = { (signed word)(number) -$6fed, (signed word)(number) $12, (signed word)(number) $7fed } Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#2) @@ -1234,8 +1225,6 @@ Adding number conversion cast (unumber) 0 in (byte) main::s#0 ← (number) 0 Adding number conversion cast (unumber) 3 in (bool~) main::$2 ← (byte) main::s#1 == (number) 3 Adding number conversion cast (unumber) 0 in (byte) main::s#2 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (signed word[]) swords ← (signed word[]){ (signed word)(number) -$6fed, (signed word)(number) $12, (signed word)(number) $7fed } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -1244,6 +1233,9 @@ Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8 Inlining cast (byte) main::s#0 ← (unumber)(number) 0 Inlining cast (byte) main::s#2 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast -$6fed +Simplifying constant integer cast $12 +Simplifying constant integer cast $7fed Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 @@ -1252,9 +1244,6 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast $3e8 -Simplifying constant integer cast -$6fed -Simplifying constant integer cast $12 -Simplifying constant integer cast $7fed Simplifying constant integer cast 0 Simplifying constant integer cast 3 Simplifying constant integer cast 0 @@ -1272,14 +1261,14 @@ Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [143] (bool~) main::$3 ← (byte) main::s#1 != (byte) 3 from [142] (bool~) main::$2 ← (byte) main::s#1 == (byte) 3 -Inversing boolean not [176] (bool~) compare::$22 ← (signed word) compare::w1#1 >= (signed word) compare::w2#1 from [175] (bool~) compare::$21 ← (signed word) compare::w1#1 < (signed word) compare::w2#1 -Inversing boolean not [183] (bool~) compare::$20 ← (signed word) compare::w1#2 > (signed word) compare::w2#2 from [182] (bool~) compare::$19 ← (signed word) compare::w1#2 <= (signed word) compare::w2#2 -Inversing boolean not [190] (bool~) compare::$18 ← (signed word) compare::w1#3 <= (signed word) compare::w2#3 from [189] (bool~) compare::$17 ← (signed word) compare::w1#3 > (signed word) compare::w2#3 -Inversing boolean not [197] (bool~) compare::$16 ← (signed word) compare::w1#4 < (signed word) compare::w2#4 from [196] (bool~) compare::$15 ← (signed word) compare::w1#4 >= (signed word) compare::w2#4 -Inversing boolean not [204] (bool~) compare::$14 ← (signed word) compare::w1#5 != (signed word) compare::w2#5 from [203] (bool~) compare::$13 ← (signed word) compare::w1#5 == (signed word) compare::w2#5 -Inversing boolean not [208] (bool~) compare::$6 ← (byte) compare::op#6 != (const byte) NE from [207] (bool~) compare::$5 ← (byte) compare::op#6 == (const byte) NE -Inversing boolean not [212] (bool~) compare::$12 ← (signed word) compare::w1#6 == (signed word) compare::w2#6 from [211] (bool~) compare::$11 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 +Inversing boolean not [141] (bool~) main::$3 ← (byte) main::s#1 != (byte) 3 from [140] (bool~) main::$2 ← (byte) main::s#1 == (byte) 3 +Inversing boolean not [174] (bool~) compare::$22 ← (signed word) compare::w1#1 >= (signed word) compare::w2#1 from [173] (bool~) compare::$21 ← (signed word) compare::w1#1 < (signed word) compare::w2#1 +Inversing boolean not [181] (bool~) compare::$20 ← (signed word) compare::w1#2 > (signed word) compare::w2#2 from [180] (bool~) compare::$19 ← (signed word) compare::w1#2 <= (signed word) compare::w2#2 +Inversing boolean not [188] (bool~) compare::$18 ← (signed word) compare::w1#3 <= (signed word) compare::w2#3 from [187] (bool~) compare::$17 ← (signed word) compare::w1#3 > (signed word) compare::w2#3 +Inversing boolean not [195] (bool~) compare::$16 ← (signed word) compare::w1#4 < (signed word) compare::w2#4 from [194] (bool~) compare::$15 ← (signed word) compare::w1#4 >= (signed word) compare::w2#4 +Inversing boolean not [202] (bool~) compare::$14 ← (signed word) compare::w1#5 != (signed word) compare::w2#5 from [201] (bool~) compare::$13 ← (signed word) compare::w1#5 == (signed word) compare::w2#5 +Inversing boolean not [206] (bool~) compare::$6 ← (byte) compare::op#6 != (const byte) NE from [205] (bool~) compare::$5 ← (byte) compare::op#6 == (const byte) NE +Inversing boolean not [210] (bool~) compare::$12 ← (signed word) compare::w1#6 == (signed word) compare::w2#6 from [209] (bool~) compare::$11 ← (signed word) compare::w1#6 != (signed word) compare::w2#6 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -1290,7 +1279,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2 Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 Alias (byte*) memset::end#1 = (byte*) memset::end#2 Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#81 (byte*) print_screen#5 (byte*) print_line_cursor#21 (byte*) print_char_cursor#68 (byte*) print_screen#4 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#68 (byte*) print_screen#4 Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#29 (byte*) print_char_cursor#56 (byte*) print_char_cursor#30 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#32 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 @@ -1318,7 +1307,7 @@ Alias (byte) main::op#2 = (byte) main::op#4 (byte) main::op#6 (byte) main::op#5 Alias (signed word) main::w1#1 = (signed word) main::w1#5 (signed word) main::w1#7 (signed word) main::w1#6 Alias (signed word) main::w2#1 = (signed word) main::w2#3 (signed word) main::w2#5 (signed word) main::w2#4 Alias (byte) main::j#5 = (byte) main::j#7 (byte) main::j#8 (byte) main::j#6 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#25 +Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#24 Alias (byte) main::i#6 = (byte) main::i#8 (byte) main::i#9 (byte) main::i#7 Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#65 Alias (byte) main::s#2 = (byte) main::s#9 @@ -1327,14 +1316,14 @@ Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#48 Alias (byte) main::j#3 = (byte) main::j#4 Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 Alias (signed word) main::w1#3 = (signed word) main::w1#4 -Alias (byte*) print_char_cursor#72 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#73 +Alias (byte*) print_char_cursor#72 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#73 Alias (byte) main::s#10 = (byte) main::s#8 (byte) main::s#6 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#28 +Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#27 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#66 Alias (signed word) compare::w1#1 = (signed word) compare::w1#8 (signed word) compare::w1#9 (signed word) compare::w1#2 (signed word) compare::w1#10 (signed word) compare::w1#3 (signed word) compare::w1#11 (signed word) compare::w1#4 (signed word) compare::w1#12 (signed word) compare::w1#5 (signed word) compare::w1#13 (signed word) compare::w1#6 (signed word) compare::w1#20 (signed word) compare::w1#21 (signed word) compare::w1#22 (signed word) compare::w1#23 (signed word) compare::w1#24 (signed word) compare::w1#25 Alias (signed word) compare::w2#1 = (signed word) compare::w2#8 (signed word) compare::w2#9 (signed word) compare::w2#2 (signed word) compare::w2#10 (signed word) compare::w2#3 (signed word) compare::w2#11 (signed word) compare::w2#4 (signed word) compare::w2#12 (signed word) compare::w2#5 (signed word) compare::w2#13 (signed word) compare::w2#6 (signed word) compare::w2#22 (signed word) compare::w2#23 (signed word) compare::w2#24 (signed word) compare::w2#25 (signed word) compare::w2#26 (signed word) compare::w2#27 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#95 (byte*) print_char_cursor#97 (byte*) print_char_cursor#98 (byte*) print_char_cursor#93 (byte*) print_char_cursor#99 (byte*) print_char_cursor#92 (byte*) print_char_cursor#90 (byte*) print_char_cursor#84 (byte*) print_char_cursor#88 (byte*) print_char_cursor#74 (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#87 (byte*) print_char_cursor#89 (byte*) print_char_cursor#91 (byte*) print_char_cursor#94 (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#94 (byte*) print_char_cursor#96 (byte*) print_char_cursor#97 (byte*) print_char_cursor#92 (byte*) print_char_cursor#98 (byte*) print_char_cursor#91 (byte*) print_char_cursor#99 (byte*) print_char_cursor#89 (byte*) print_char_cursor#83 (byte*) print_char_cursor#87 (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#88 (byte*) print_char_cursor#90 (byte*) print_char_cursor#93 (byte*) print_char_cursor#95 Alias (byte) compare::r#0 = (byte) compare::r#24 (byte) compare::r#25 (byte) compare::r#23 (byte) compare::r#26 (byte) compare::r#22 (byte) compare::r#27 (byte) compare::r#21 (byte) compare::r#18 (byte) compare::r#20 (byte) compare::r#11 (byte) compare::r#19 Alias (byte) compare::op#1 = (byte) compare::op#2 (byte) compare::op#3 (byte) compare::op#4 (byte) compare::op#5 (byte) compare::op#6 Alias (byte*) compare::ops#0 = (byte*) compare::ops#13 (byte*) compare::ops#12 (byte*) compare::ops#11 (byte*) compare::ops#10 (byte*) compare::ops#9 @@ -1354,11 +1343,11 @@ Alias (signed word) main::w2#1 = (signed word) main::w2#2 Alias (byte) main::j#3 = (byte) main::j#5 Alias (byte) main::i#3 = (byte) main::i#6 Alias (signed word) compare::w1#1 = (signed word) compare::w1#14 (signed word) compare::w1#15 (signed word) compare::w1#16 (signed word) compare::w1#17 (signed word) compare::w1#18 (signed word) compare::w1#19 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 +Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 Alias (signed word) compare::w2#1 = (signed word) compare::w2#16 (signed word) compare::w2#17 (signed word) compare::w2#18 (signed word) compare::w2#19 (signed word) compare::w2#20 (signed word) compare::w2#21 Successful SSA optimization Pass2AliasElimination Alias (signed word) compare::w1#1 = (signed word) compare::w1#7 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#67 +Alias (byte*) print_char_cursor#67 = (byte*) print_char_cursor#74 Alias (signed word) compare::w2#1 = (signed word) compare::w2#14 Successful SSA optimization Pass2AliasElimination Identical Phi Values (word) memset::num#1 (word) memset::num#0 @@ -1399,7 +1388,7 @@ Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#72 Identical Phi Values (byte) compare::op#1 (byte) compare::op#0 Identical Phi Values (signed word) compare::w1#1 (signed word) compare::w1#0 Identical Phi Values (signed word) compare::w2#1 (signed word) compare::w2#0 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#64 +Identical Phi Values (byte*) print_char_cursor#67 (byte*) print_char_cursor#64 Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#35 Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#2 Identical Phi Values (byte*) print_char_cursor#25 (byte*) print_char_cursor#35 @@ -1419,31 +1408,28 @@ Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memse Simple Condition (bool~) print_str::$0 [26] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 Simple Condition (bool~) print_ln::$1 [39] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 Simple Condition (bool~) print_sword::$0 [48] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) main::$3 [144] if((byte) main::s#1!=(byte) 3) goto main::@4 -Simple Condition (bool~) main::$5 [148] if((byte) main::op#1!=rangelast(0,5)) goto main::@3 -Simple Condition (bool~) main::$6 [158] if((byte) main::j#1!=rangelast(0,2)) goto main::@2 -Simple Condition (bool~) main::$7 [162] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 -Simple Condition (bool~) compare::$0 [173] if((byte) compare::op#0==(const byte) LT) goto compare::@1 -Simple Condition (bool~) compare::$22 [177] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@34 -Simple Condition (bool~) compare::$1 [180] if((byte) compare::op#0==(const byte) LE) goto compare::@2 -Simple Condition (bool~) compare::$20 [184] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@33 -Simple Condition (bool~) compare::$2 [187] if((byte) compare::op#0==(const byte) GT) goto compare::@3 -Simple Condition (bool~) compare::$18 [191] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@32 -Simple Condition (bool~) compare::$3 [194] if((byte) compare::op#0==(const byte) GE) goto compare::@4 -Simple Condition (bool~) compare::$16 [198] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@31 -Simple Condition (bool~) compare::$4 [201] if((byte) compare::op#0==(const byte) EQ) goto compare::@5 -Simple Condition (bool~) compare::$14 [205] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@30 -Simple Condition (bool~) compare::$6 [209] if((byte) compare::op#0!=(const byte) NE) goto compare::@11 -Simple Condition (bool~) compare::$12 [213] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@29 +Simple Condition (bool~) main::$3 [142] if((byte) main::s#1!=(byte) 3) goto main::@4 +Simple Condition (bool~) main::$5 [146] if((byte) main::op#1!=rangelast(0,5)) goto main::@3 +Simple Condition (bool~) main::$6 [156] if((byte) main::j#1!=rangelast(0,2)) goto main::@2 +Simple Condition (bool~) main::$7 [160] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Simple Condition (bool~) compare::$0 [171] if((byte) compare::op#0==(const byte) LT) goto compare::@1 +Simple Condition (bool~) compare::$22 [175] if((signed word) compare::w1#0>=(signed word) compare::w2#0) goto compare::@34 +Simple Condition (bool~) compare::$1 [178] if((byte) compare::op#0==(const byte) LE) goto compare::@2 +Simple Condition (bool~) compare::$20 [182] if((signed word) compare::w1#0>(signed word) compare::w2#0) goto compare::@33 +Simple Condition (bool~) compare::$2 [185] if((byte) compare::op#0==(const byte) GT) goto compare::@3 +Simple Condition (bool~) compare::$18 [189] if((signed word) compare::w1#0<=(signed word) compare::w2#0) goto compare::@32 +Simple Condition (bool~) compare::$3 [192] if((byte) compare::op#0==(const byte) GE) goto compare::@4 +Simple Condition (bool~) compare::$16 [196] if((signed word) compare::w1#0<(signed word) compare::w2#0) goto compare::@31 +Simple Condition (bool~) compare::$4 [199] if((byte) compare::op#0==(const byte) EQ) goto compare::@5 +Simple Condition (bool~) compare::$14 [203] if((signed word) compare::w1#0!=(signed word) compare::w2#0) goto compare::@30 +Simple Condition (bool~) compare::$6 [207] if((byte) compare::op#0!=(const byte) NE) goto compare::@11 +Simple Condition (bool~) compare::$12 [211] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@29 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (signed word[]) { (signed word) -$6fed, (signed word) $12, (signed word) $7fed } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = ' ' Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const signed word[]) swords = { -$6fed, $12, $7fed } Constant (const byte) main::s#0 = 0 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 0 @@ -1471,14 +1457,14 @@ Constant (const byte*) memset::dst#0 = (byte*)memset::str#0 Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -if() condition always true - replacing block destination [164] if(true) goto main::@9 +if() condition always true - replacing block destination [162] if(true) goto main::@9 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [146] main::op#1 ← ++ main::op#2 to ++ -Resolved ranged comparison value [148] if(main::op#1!=rangelast(0,5)) goto main::@3 to (number) 6 -Resolved ranged next value [156] main::j#1 ← ++ main::j#2 to ++ -Resolved ranged comparison value [158] if(main::j#1!=rangelast(0,2)) goto main::@2 to (number) 3 -Resolved ranged next value [160] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [162] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 +Resolved ranged next value [144] main::op#1 ← ++ main::op#2 to ++ +Resolved ranged comparison value [146] if(main::op#1!=rangelast(0,5)) goto main::@3 to (number) 6 +Resolved ranged next value [154] main::j#1 ← ++ main::j#2 to ++ +Resolved ranged comparison value [156] if(main::j#1!=rangelast(0,2)) goto main::@2 to (number) 3 +Resolved ranged next value [158] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [160] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -1571,7 +1557,6 @@ Added new block during phi lifting main::@20(between main::@4 and main::@3) Added new block during phi lifting main::@21(between main::@16 and main::@4) Adding NOP phi() at start of @begin Adding NOP phi() at start of @16 -Adding NOP phi() at start of @40 Adding NOP phi() at start of @42 Adding NOP phi() at start of @43 Adding NOP phi() at start of @end @@ -1596,70 +1581,69 @@ Adding NOP phi() at start of memset Adding NOP phi() at start of memset::@2 Adding NOP phi() at start of memset::@1 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to print_cls:8 compare:26 print_ln:30 -Calls in [compare] to print_sword:77 print_str:79 print_sword:83 print_char:87 -Calls in [print_sword] to print_char:117 print_word:121 print_char:125 -Calls in [print_word] to print_byte:130 print_byte:133 -Calls in [print_byte] to print_char:141 print_char:146 -Calls in [print_cls] to memset:160 +Calls in [] to main:3 +Calls in [main] to print_cls:7 compare:25 print_ln:29 +Calls in [compare] to print_sword:76 print_str:78 print_sword:82 print_char:86 +Calls in [print_sword] to print_char:116 print_word:120 print_char:124 +Calls in [print_word] to print_byte:129 print_byte:132 +Calls in [print_byte] to print_char:140 print_char:145 +Calls in [print_cls] to memset:159 Created 33 initial phi equivalence classes -Coalesced [13] print_char_cursor#111 ← print_char_cursor#82 -Coalesced [14] main::s#12 ← main::s#7 -Coalesced [15] print_line_cursor#33 ← print_line_cursor#29 -Coalesced [19] print_char_cursor#113 ← print_char_cursor#71 -Coalesced [20] main::s#14 ← main::s#5 -Coalesced [21] print_line_cursor#35 ← print_line_cursor#27 -Not coalescing [31] print_char_cursor#116 ← print_line_cursor#1 -Coalesced [32] print_line_cursor#38 ← print_line_cursor#1 -Coalesced [41] main::i#11 ← main::i#1 -Coalesced [42] print_char_cursor#110 ← print_char_cursor#72 -Coalesced [43] main::s#11 ← main::s#10 -Coalesced [44] print_line_cursor#32 ← print_line_cursor#23 -Coalesced [45] main::j#9 ← main::j#1 -Coalesced (already) [46] print_char_cursor#112 ← print_char_cursor#72 -Coalesced (already) [47] main::s#13 ← main::s#10 -Coalesced (already) [48] print_line_cursor#34 ← print_line_cursor#23 -Coalesced [49] main::op#7 ← main::op#1 -Coalesced (already) [50] print_char_cursor#114 ← print_char_cursor#72 -Coalesced (already) [51] main::s#15 ← main::s#10 -Coalesced (already) [52] print_line_cursor#36 ← print_line_cursor#23 -Coalesced [53] print_char_cursor#115 ← print_char_cursor#15 -Coalesced [54] main::s#16 ← main::s#1 -Coalesced (already) [55] print_line_cursor#37 ← print_line_cursor#19 -Coalesced [56] print_line_cursor#30 ← print_line_cursor#19 -Coalesced (already) [62] print_line_cursor#31 ← print_line_cursor#1 -Coalesced [72] compare::r#28 ← compare::r#12 -Coalesced [75] print_sword::w#9 ← print_sword::w#1 -Coalesced [76] print_char_cursor#103 ← print_char_cursor#64 -Coalesced [81] print_sword::w#10 ← print_sword::w#2 -Coalesced [82] print_char_cursor#104 ← print_char_cursor#2 -Coalesced [85] print_char::ch#6 ← print_char::ch#4 -Coalesced [86] print_char_cursor#105 ← print_char_cursor#15 -Coalesced [93] compare::r#29 ← compare::r#13 -Coalesced [97] compare::r#30 ← compare::r#14 -Coalesced [101] compare::r#31 ← compare::r#15 -Coalesced [105] compare::r#32 ← compare::r#16 -Coalesced [109] compare::r#33 ← compare::r#17 -Coalesced (already) [116] print_char_cursor#109 ← print_char_cursor#58 -Coalesced [118] print_sword::w#12 ← print_sword::w#3 -Coalesced (already) [124] print_char_cursor#108 ← print_char_cursor#58 -Coalesced [127] print_sword::w#11 ← print_sword::w#0 -Coalesced [129] print_byte::b#4 ← print_byte::b#0 -Coalesced [132] print_byte::b#5 ← print_byte::b#1 -Coalesced [139] print_char::ch#7 ← print_char::ch#2 -Coalesced (already) [140] print_char_cursor#106 ← print_char_cursor#15 -Coalesced [144] print_char::ch#8 ← print_char::ch#3 -Coalesced (already) [145] print_char_cursor#107 ← print_char_cursor#15 -Coalesced [149] print_str::str#5 ← print_str::str#1 -Coalesced (already) [150] print_char_cursor#101 ← print_char_cursor#15 -Coalesced [157] print_str::str#6 ← print_str::str#0 -Coalesced [158] print_char_cursor#102 ← print_char_cursor#1 -Coalesced [171] memset::dst#4 ← memset::dst#1 +Coalesced [12] print_char_cursor#110 ← print_char_cursor#81 +Coalesced [13] main::s#12 ← main::s#7 +Coalesced [14] print_line_cursor#32 ← print_line_cursor#28 +Coalesced [18] print_char_cursor#112 ← print_char_cursor#71 +Coalesced [19] main::s#14 ← main::s#5 +Coalesced [20] print_line_cursor#34 ← print_line_cursor#26 +Not coalescing [30] print_char_cursor#115 ← print_line_cursor#1 +Coalesced [31] print_line_cursor#37 ← print_line_cursor#1 +Coalesced [40] main::i#11 ← main::i#1 +Coalesced [41] print_char_cursor#109 ← print_char_cursor#72 +Coalesced [42] main::s#11 ← main::s#10 +Coalesced [43] print_line_cursor#31 ← print_line_cursor#23 +Coalesced [44] main::j#9 ← main::j#1 +Coalesced (already) [45] print_char_cursor#111 ← print_char_cursor#72 +Coalesced (already) [46] main::s#13 ← main::s#10 +Coalesced (already) [47] print_line_cursor#33 ← print_line_cursor#23 +Coalesced [48] main::op#7 ← main::op#1 +Coalesced (already) [49] print_char_cursor#113 ← print_char_cursor#72 +Coalesced (already) [50] main::s#15 ← main::s#10 +Coalesced (already) [51] print_line_cursor#35 ← print_line_cursor#23 +Coalesced [52] print_char_cursor#114 ← print_char_cursor#15 +Coalesced [53] main::s#16 ← main::s#1 +Coalesced (already) [54] print_line_cursor#36 ← print_line_cursor#19 +Coalesced [55] print_line_cursor#29 ← print_line_cursor#19 +Coalesced (already) [61] print_line_cursor#30 ← print_line_cursor#1 +Coalesced [71] compare::r#28 ← compare::r#12 +Coalesced [74] print_sword::w#9 ← print_sword::w#1 +Coalesced [75] print_char_cursor#102 ← print_char_cursor#64 +Coalesced [80] print_sword::w#10 ← print_sword::w#2 +Coalesced [81] print_char_cursor#103 ← print_char_cursor#2 +Coalesced [84] print_char::ch#6 ← print_char::ch#4 +Coalesced [85] print_char_cursor#104 ← print_char_cursor#15 +Coalesced [92] compare::r#29 ← compare::r#13 +Coalesced [96] compare::r#30 ← compare::r#14 +Coalesced [100] compare::r#31 ← compare::r#15 +Coalesced [104] compare::r#32 ← compare::r#16 +Coalesced [108] compare::r#33 ← compare::r#17 +Coalesced (already) [115] print_char_cursor#108 ← print_char_cursor#58 +Coalesced [117] print_sword::w#12 ← print_sword::w#3 +Coalesced (already) [123] print_char_cursor#107 ← print_char_cursor#58 +Coalesced [126] print_sword::w#11 ← print_sword::w#0 +Coalesced [128] print_byte::b#4 ← print_byte::b#0 +Coalesced [131] print_byte::b#5 ← print_byte::b#1 +Coalesced [138] print_char::ch#7 ← print_char::ch#2 +Coalesced (already) [139] print_char_cursor#105 ← print_char_cursor#15 +Coalesced [143] print_char::ch#8 ← print_char::ch#3 +Coalesced (already) [144] print_char_cursor#106 ← print_char_cursor#15 +Coalesced [148] print_str::str#5 ← print_str::str#1 +Coalesced (already) [149] print_char_cursor#100 ← print_char_cursor#15 +Coalesced [156] print_str::str#6 ← print_str::str#0 +Coalesced [157] print_char_cursor#101 ← print_char_cursor#1 +Coalesced [170] memset::dst#4 ← memset::dst#1 Coalesced down to 13 phi equivalence classes Culled Empty Block (label) @16 -Culled Empty Block (label) @40 Culled Empty Block (label) @43 Culled Empty Block (label) main::@15 Culled Empty Block (label) main::@18 @@ -1741,23 +1725,23 @@ main: scope:[main] from @1 [5] call print_cls to:main::@1 main::@1: scope:[main] from main main::@7 - [6] (byte*) print_line_cursor#29 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) + [6] (byte*) print_line_cursor#28 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) [6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 ) - [6] (byte*) print_char_cursor#82 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#72 ) + [6] (byte*) print_char_cursor#81 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#72 ) [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [8] (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [9] (byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#29 main::@6/(byte*) print_line_cursor#23 ) + [9] (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#28 main::@6/(byte*) print_line_cursor#23 ) [9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 ) - [9] (byte*) print_char_cursor#71 ← phi( main::@1/(byte*) print_char_cursor#82 main::@6/(byte*) print_char_cursor#72 ) + [9] (byte*) print_char_cursor#71 ← phi( main::@1/(byte*) print_char_cursor#81 main::@6/(byte*) print_char_cursor#72 ) [9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 ) [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [11] (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) to:main::@3 main::@3: scope:[main] from main::@2 main::@4 - [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#27 main::@4/(byte*) print_line_cursor#23 ) + [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#26 main::@4/(byte*) print_line_cursor#23 ) [12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 ) [12] (byte*) print_char_cursor#64 ← phi( main::@2/(byte*) print_char_cursor#71 main::@4/(byte*) print_char_cursor#72 ) [12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 ) @@ -1775,12 +1759,12 @@ main::@5: scope:[main] from main::@9 [20] call print_ln to:main::@10 main::@10: scope:[main] from main::@5 - [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 + [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 to:main::@4 main::@4: scope:[main] from main::@10 main::@9 [22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 ) [22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 ) - [22] (byte*) print_char_cursor#72 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#116 ) + [22] (byte*) print_char_cursor#72 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#115 ) [23] (byte) main::op#1 ← ++ (byte) main::op#2 [24] if((byte) main::op#1!=(byte) 6) goto main::@3 to:main::@6 @@ -2078,7 +2062,7 @@ VARIABLE REGISTER WEIGHTS (byte) print_char::ch#5 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 10001.0 -(byte*~) print_char_cursor#116 2002.0 +(byte*~) print_char_cursor#115 2002.0 (byte*) print_char_cursor#15 297.62162162162167 (byte*) print_char_cursor#2 5001.166666666666 (byte*) print_char_cursor#43 7.0 @@ -2086,14 +2070,14 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#64 36.800000000000004 (byte*) print_char_cursor#71 71.0 (byte*) print_char_cursor#72 445.0 -(byte*) print_char_cursor#82 7.333333333333333 +(byte*) print_char_cursor#81 7.333333333333333 (void()) print_cls() (byte*) print_line_cursor (byte*) print_line_cursor#1 6401.0 (byte*) print_line_cursor#19 233.8888888888889 (byte*) print_line_cursor#23 445.0 -(byte*) print_line_cursor#27 71.0 -(byte*) print_line_cursor#29 7.333333333333333 +(byte*) print_line_cursor#26 71.0 +(byte*) print_line_cursor#28 7.333333333333333 (byte*) print_line_cursor#9 20004.0 (void()) print_ln() (byte*) print_screen @@ -2118,11 +2102,11 @@ Initial phi equivalence classes [ main::j#2 main::j#1 ] [ main::op#2 main::op#1 ] [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] [ compare::ops#7 ] [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -[ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +[ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_str::str#2 print_str::str#1 print_str::str#0 ] @@ -2142,11 +2126,11 @@ Complete equivalence classes [ main::j#2 main::j#1 ] [ main::op#2 main::op#1 ] [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] [ compare::ops#7 ] [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -[ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +[ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_str::str#2 print_str::str#1 print_str::str#0 ] @@ -2165,11 +2149,11 @@ Allocated zp[1]:2 [ main::i#2 main::i#1 ] Allocated zp[1]:3 [ main::j#2 main::j#1 ] Allocated zp[1]:4 [ main::op#2 main::op#1 ] Allocated zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Allocated zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +Allocated zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] Allocated zp[2]:8 [ compare::ops#7 ] Allocated zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] Allocated zp[1]:11 [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Allocated zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +Allocated zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] Allocated zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] Allocated zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] @@ -2238,7 +2222,7 @@ main: { jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [6] phi (byte*) print_line_cursor#29 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + // [6] phi (byte*) print_line_cursor#28 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor lda #>$400 @@ -2246,7 +2230,7 @@ main: { // [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [6] phi (byte*) print_char_cursor#82 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + // [6] phi (byte*) print_char_cursor#81 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta.z print_char_cursor lda #>$400 @@ -2257,9 +2241,9 @@ main: { jmp __b1 // [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] __b1_from___b7: - // [6] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy + // [6] phi (byte*) print_line_cursor#28 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy // [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - // [6] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#72 [phi:main::@7->main::@1#2] -- register_copy + // [6] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#72 [phi:main::@7->main::@1#2] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy jmp __b1 // main::@1 @@ -2276,16 +2260,16 @@ main: { sta.z w1+1 // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#29 [phi:main::@1->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#28 [phi:main::@1->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#82 [phi:main::@1->main::@2#2] -- register_copy + // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#81 [phi:main::@1->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta.z j jmp __b2 // [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] __b2_from___b6: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#72 [phi:main::@6->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy @@ -2304,7 +2288,7 @@ main: { sta.z w2+1 // [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: - // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#27 [phi:main::@2->main::@3#0] -- register_copy + // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#71 [phi:main::@2->main::@3#2] -- register_copy // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 @@ -2356,7 +2340,7 @@ main: { jmp __b10 // main::@10 __b10: - // [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -2367,7 +2351,7 @@ main: { // [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [22] phi (byte*) print_char_cursor#72 = (byte*~) print_char_cursor#116 [phi:main::@10->main::@4#2] -- register_copy + // [22] phi (byte*) print_char_cursor#72 = (byte*~) print_char_cursor#115 [phi:main::@10->main::@4#2] -- register_copy jmp __b4 // [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] __b4_from___b9: @@ -3074,17 +3058,17 @@ memset: { swords: .word -$6fed, $12, $7fed REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::$8 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::$9 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::w2#0 ] ) always clobbers reg byte a +Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::op#2 main::op#1 ] Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#116 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#116 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ) always clobbers reg byte a Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@19 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a @@ -3116,13 +3100,13 @@ Statement [99] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ pr Statement [101] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y Statement [109] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] ) always clobbers reg byte a Statement [111] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:105 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::$8 ] ) always clobbers reg byte a -Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#82 main::s#7 print_line_cursor#29 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::$9 ] ) always clobbers reg byte a -Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#27 main::w2#0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a +Statement [8] (signed word) main::w1#0 ← *((const signed word[]) swords + (byte~) main::$8) [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#81 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a +Statement [11] (signed word) main::w2#0 ← *((const signed word[]) swords + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#71 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a Statement [13] (signed word) compare::w1#0 ← (signed word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a Statement [14] (signed word) compare::w2#0 ← (signed word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#64 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#116 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#116 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#115 print_line_cursor#1 ] ) always clobbers reg byte a Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#15 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#15 ] ) always clobbers reg byte a Statement [41] if((signed word) compare::w1#0==(signed word) compare::w2#0) goto compare::@19 [ print_char_cursor#64 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#64 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a @@ -3150,11 +3134,11 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ main::op#2 main::op#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] : zp[1]:5 , reg byte x , -Potential registers zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] : zp[2]:6 , +Potential registers zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] : zp[2]:6 , Potential registers zp[2]:8 [ compare::ops#7 ] : zp[2]:8 , Potential registers zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] : zp[1]:10 , reg byte x , Potential registers zp[1]:11 [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] : zp[2]:12 , +Potential registers zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] : zp[2]:12 , Potential registers zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] : zp[2]:14 , Potential registers zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:16 , reg byte x , Potential registers zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] : zp[2]:17 , @@ -3171,7 +3155,7 @@ Potential registers zp[1]:34 [ print_byte::$0 ] : zp[1]:34 , reg byte a , reg by Potential registers zp[1]:35 [ print_byte::$2 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 27,162.22: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] 17,870.92: zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +Uplift Scope [] 27,162.22: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] 17,870.92: zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] Uplift Scope [print_str] 30,005.5: zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Uplift Scope [main] 2,302.43: zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 1,774.5: zp[1]:4 [ main::op#2 main::op#1 ] 202: zp[1]:24 [ main::$9 ] 170.44: zp[1]:3 [ main::j#2 main::j#1 ] 78.71: zp[2]:25 [ main::w2#0 ] 53.26: zp[2]:22 [ main::w1#0 ] 22: zp[1]:21 [ main::$8 ] 18.07: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [compare] 168.83: zp[1]:31 [ compare::op#0 ] 36.25: zp[2]:27 [ compare::w1#0 ] 32.74: zp[2]:29 [ compare::w2#0 ] 14: zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] 0.67: zp[2]:8 [ compare::ops#7 ] @@ -3184,7 +3168,7 @@ Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 1156365 combination zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +Uplifting [] best 1156365 combination zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] zp[2]:12 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] Uplifting [print_str] best 1156365 combination zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Uplifting [main] best 1143925 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] reg byte x [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp[1]:3 [ main::j#2 main::j#1 ] zp[2]:25 [ main::w2#0 ] zp[2]:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp[1]:2 [ main::i#2 main::i#1 ] Limited combination testing to 100 combinations of 256 possible. @@ -3211,14 +3195,14 @@ Coalescing zero page register [ zp[2]:8 [ compare::ops#7 ] ] with [ zp[2]:17 [ p Coalescing zero page register [ zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp[2]:27 [ compare::w1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:14 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 ] ] with [ zp[2]:32 [ print_word::w#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:25 [ main::w2#0 ] ] with [ zp[2]:29 [ compare::w2#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] ] +Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] ] Allocated (was zp[1]:5) zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Allocated (was zp[2]:8) zp[2]:5 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp[1]:10) zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] -Allocated (was zp[2]:12) zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +Allocated (was zp[2]:12) zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] Allocated (was zp[2]:14) zp[2]:10 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] Allocated (was zp[1]:16) zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp[2]:19) zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +Allocated (was zp[2]:19) zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] Allocated (was zp[2]:22) zp[2]:15 [ main::w1#0 ] Allocated (was zp[2]:25) zp[2]:17 [ main::w2#0 compare::w2#0 ] @@ -3271,7 +3255,7 @@ main: { jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [6] phi (byte*) print_line_cursor#29 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + // [6] phi (byte*) print_line_cursor#28 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor lda #>$400 @@ -3279,7 +3263,7 @@ main: { // [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [6] phi (byte*) print_char_cursor#82 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + // [6] phi (byte*) print_char_cursor#81 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta.z print_char_cursor lda #>$400 @@ -3290,9 +3274,9 @@ main: { jmp __b1 // [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] __b1_from___b7: - // [6] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy + // [6] phi (byte*) print_line_cursor#28 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy // [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - // [6] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#72 [phi:main::@7->main::@1#2] -- register_copy + // [6] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#72 [phi:main::@7->main::@1#2] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy jmp __b1 // main::@1 @@ -3308,16 +3292,16 @@ main: { sta.z w1+1 // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#29 [phi:main::@1->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#28 [phi:main::@1->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#82 [phi:main::@1->main::@2#2] -- register_copy + // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#81 [phi:main::@1->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta.z j jmp __b2 // [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] __b2_from___b6: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#72 [phi:main::@6->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy @@ -3335,7 +3319,7 @@ main: { sta.z w2+1 // [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: - // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#27 [phi:main::@2->main::@3#0] -- register_copy + // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#71 [phi:main::@2->main::@3#2] -- register_copy // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 @@ -3380,7 +3364,7 @@ main: { jmp __b10 // main::@10 __b10: - // [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -3391,7 +3375,7 @@ main: { // [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [22] phi (byte*) print_char_cursor#72 = (byte*~) print_char_cursor#116 [phi:main::@10->main::@4#2] -- register_copy + // [22] phi (byte*) print_char_cursor#72 = (byte*~) print_char_cursor#115 [phi:main::@10->main::@4#2] -- register_copy jmp __b4 // [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] __b4_from___b9: @@ -4383,7 +4367,7 @@ FINAL SYMBOL TABLE (byte) print_char::ch#5 reg byte a 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp[2]:8 10001.0 -(byte*~) print_char_cursor#116 print_char_cursor zp[2]:8 2002.0 +(byte*~) print_char_cursor#115 print_char_cursor zp[2]:8 2002.0 (byte*) print_char_cursor#15 print_char_cursor zp[2]:8 297.62162162162167 (byte*) print_char_cursor#2 print_char_cursor zp[2]:8 5001.166666666666 (byte*) print_char_cursor#43 print_char_cursor zp[2]:8 7.0 @@ -4391,7 +4375,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#64 print_char_cursor zp[2]:8 36.800000000000004 (byte*) print_char_cursor#71 print_char_cursor zp[2]:8 71.0 (byte*) print_char_cursor#72 print_char_cursor zp[2]:8 445.0 -(byte*) print_char_cursor#82 print_char_cursor zp[2]:8 7.333333333333333 +(byte*) print_char_cursor#81 print_char_cursor zp[2]:8 7.333333333333333 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -4399,8 +4383,8 @@ FINAL SYMBOL TABLE (byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0 (byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889 (byte*) print_line_cursor#23 print_line_cursor zp[2]:13 445.0 -(byte*) print_line_cursor#27 print_line_cursor zp[2]:13 71.0 -(byte*) print_line_cursor#29 print_line_cursor zp[2]:13 7.333333333333333 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:13 71.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:13 7.333333333333333 (byte*) print_line_cursor#9 print_line_cursor zp[2]:13 20004.0 (void()) print_ln() (label) print_ln::@1 @@ -4440,10 +4424,10 @@ zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] zp[2]:5 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] zp[2]:10 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] @@ -4494,7 +4478,7 @@ main: { // [104] phi from main to print_cls [phi:main->print_cls] jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] - // [6] phi (byte*) print_line_cursor#29 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + // [6] phi (byte*) print_line_cursor#28 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor lda #>$400 @@ -4502,7 +4486,7 @@ main: { // [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [6] phi (byte*) print_char_cursor#82 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + // [6] phi (byte*) print_char_cursor#81 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta.z print_char_cursor lda #>$400 @@ -4511,9 +4495,9 @@ main: { lda #0 sta.z i // [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - // [6] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy + // [6] phi (byte*) print_line_cursor#28 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy // [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - // [6] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#72 [phi:main::@7->main::@1#2] -- register_copy + // [6] phi (byte*) print_char_cursor#81 = (byte*) print_char_cursor#72 [phi:main::@7->main::@1#2] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy // main::@1 __b1: @@ -4528,14 +4512,14 @@ main: { lda swords+1,y sta.z w1+1 // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#29 [phi:main::@1->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#28 [phi:main::@1->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#82 [phi:main::@1->main::@2#2] -- register_copy + // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#81 [phi:main::@1->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta.z j // [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy // [9] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#72 [phi:main::@6->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy @@ -4552,7 +4536,7 @@ main: { lda swords+1,y sta.z w2+1 // [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#27 [phi:main::@2->main::@3#0] -- register_copy + // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#64 = (byte*) print_char_cursor#71 [phi:main::@2->main::@3#2] -- register_copy // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 @@ -4589,7 +4573,7 @@ main: { // [30] phi from main::@5 to print_ln [phi:main::@5->print_ln] jsr print_ln // main::@10 - // [21] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [21] (byte*~) print_char_cursor#115 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -4599,7 +4583,7 @@ main: { // [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [22] phi (byte*) print_char_cursor#72 = (byte*~) print_char_cursor#116 [phi:main::@10->main::@4#2] -- register_copy + // [22] phi (byte*) print_char_cursor#72 = (byte*~) print_char_cursor#115 [phi:main::@10->main::@4#2] -- register_copy // [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] // [22] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#19 [phi:main::@9->main::@4#0] -- register_copy // [22] phi (byte) main::s#10 = (byte) main::s#1 [phi:main::@9->main::@4#1] -- register_copy diff --git a/src/test/ref/test-comparisons-sword.sym b/src/test/ref/test-comparisons-sword.sym index 6374cc4eb..b2977a963 100644 --- a/src/test/ref/test-comparisons-sword.sym +++ b/src/test/ref/test-comparisons-sword.sym @@ -130,7 +130,7 @@ (byte) print_char::ch#5 reg byte a 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp[2]:8 10001.0 -(byte*~) print_char_cursor#116 print_char_cursor zp[2]:8 2002.0 +(byte*~) print_char_cursor#115 print_char_cursor zp[2]:8 2002.0 (byte*) print_char_cursor#15 print_char_cursor zp[2]:8 297.62162162162167 (byte*) print_char_cursor#2 print_char_cursor zp[2]:8 5001.166666666666 (byte*) print_char_cursor#43 print_char_cursor zp[2]:8 7.0 @@ -138,7 +138,7 @@ (byte*) print_char_cursor#64 print_char_cursor zp[2]:8 36.800000000000004 (byte*) print_char_cursor#71 print_char_cursor zp[2]:8 71.0 (byte*) print_char_cursor#72 print_char_cursor zp[2]:8 445.0 -(byte*) print_char_cursor#82 print_char_cursor zp[2]:8 7.333333333333333 +(byte*) print_char_cursor#81 print_char_cursor zp[2]:8 7.333333333333333 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -146,8 +146,8 @@ (byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0 (byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889 (byte*) print_line_cursor#23 print_line_cursor zp[2]:13 445.0 -(byte*) print_line_cursor#27 print_line_cursor zp[2]:13 71.0 -(byte*) print_line_cursor#29 print_line_cursor zp[2]:13 7.333333333333333 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:13 71.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:13 7.333333333333333 (byte*) print_line_cursor#9 print_line_cursor zp[2]:13 20004.0 (void()) print_ln() (label) print_ln::@1 @@ -187,10 +187,10 @@ zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] zp[2]:5 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#5 print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#82 print_char_cursor#72 print_char_cursor#15 print_char_cursor#116 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] +zp[2]:8 [ print_char_cursor#43 print_char_cursor#64 print_char_cursor#71 print_char_cursor#81 print_char_cursor#72 print_char_cursor#15 print_char_cursor#115 print_char_cursor#58 print_char_cursor#2 print_char_cursor#1 ] zp[2]:10 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ] zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] diff --git a/src/test/ref/test-comparisons-word.cfg b/src/test/ref/test-comparisons-word.cfg index 862a5ebe9..bf0c4586c 100644 --- a/src/test/ref/test-comparisons-word.cfg +++ b/src/test/ref/test-comparisons-word.cfg @@ -14,23 +14,23 @@ main: scope:[main] from @1 [5] call print_cls to:main::@1 main::@1: scope:[main] from main main::@7 - [6] (byte*) print_line_cursor#29 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) + [6] (byte*) print_line_cursor#28 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) [6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 ) - [6] (byte*) print_char_cursor#72 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#62 ) + [6] (byte*) print_char_cursor#71 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#62 ) [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [8] (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [9] (byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#29 main::@6/(byte*) print_line_cursor#23 ) + [9] (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#28 main::@6/(byte*) print_line_cursor#23 ) [9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 ) - [9] (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#72 main::@6/(byte*) print_char_cursor#62 ) + [9] (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#71 main::@6/(byte*) print_char_cursor#62 ) [9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 ) [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [11] (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) to:main::@3 main::@3: scope:[main] from main::@2 main::@4 - [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#27 main::@4/(byte*) print_line_cursor#23 ) + [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#26 main::@4/(byte*) print_line_cursor#23 ) [12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 ) [12] (byte*) print_char_cursor#55 ← phi( main::@2/(byte*) print_char_cursor#61 main::@4/(byte*) print_char_cursor#62 ) [12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 ) @@ -48,12 +48,12 @@ main::@5: scope:[main] from main::@9 [20] call print_ln to:main::@10 main::@10: scope:[main] from main::@5 - [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 + [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 to:main::@4 main::@4: scope:[main] from main::@10 main::@9 [22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 ) [22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 ) - [22] (byte*) print_char_cursor#62 ← phi( main::@9/(byte*) print_char_cursor#11 main::@10/(byte*~) print_char_cursor#107 ) + [22] (byte*) print_char_cursor#62 ← phi( main::@9/(byte*) print_char_cursor#11 main::@10/(byte*~) print_char_cursor#106 ) [23] (byte) main::op#1 ← ++ (byte) main::op#2 [24] if((byte) main::op#1!=(byte) 6) goto main::@3 to:main::@6 diff --git a/src/test/ref/test-comparisons-word.log b/src/test/ref/test-comparisons-word.log index d84651fe6..9602cce5c 100644 --- a/src/test/ref/test-comparisons-word.log +++ b/src/test/ref/test-comparisons-word.log @@ -3,8 +3,8 @@ Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + 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) -Fixing pointer array-indexing *((word[]) words + (byte) main::i) -Fixing pointer array-indexing *((word[]) words + (byte) main::j) +Fixing pointer array-indexing *((const word[]) words + (byte) main::i) +Fixing pointer array-indexing *((const word[]) words + (byte) main::j) Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) 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 @@ -60,6 +60,7 @@ 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) main::@8 Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@12 @@ -129,7 +130,7 @@ memset::@return: scope:[memset] from memset::@1 (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:@40 + to:@42 (void()) print_str((byte*) print_str::str) print_str: scope:[print_str] from compare::@35 @@ -266,12 +267,6 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#38 return to:@return -@40: scope:[] from @16 - (byte*) print_screen#5 ← phi( @16/(byte*) print_screen#0 ) - (byte*) print_char_cursor#71 ← phi( @16/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#24 ← phi( @16/(byte*) print_line_cursor#0 ) - (word[]) words ← { (number) $12, (number) $3f34, (number) $cfed } - to:@42 (void()) main() main: scope:[main] from @42 @@ -289,28 +284,28 @@ main::@15: scope:[main] from main (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main::@15 main::@7 - (byte*) print_line_cursor#29 ← phi( main::@15/(byte*) print_line_cursor#5 main::@7/(byte*) print_line_cursor#23 ) + (byte*) print_line_cursor#28 ← phi( main::@15/(byte*) print_line_cursor#5 main::@7/(byte*) print_line_cursor#23 ) (byte) main::s#7 ← phi( main::@15/(byte) main::s#0 main::@7/(byte) main::s#10 ) - (byte*) print_char_cursor#72 ← phi( main::@15/(byte*) print_char_cursor#15 main::@7/(byte*) print_char_cursor#63 ) + (byte*) print_char_cursor#71 ← phi( main::@15/(byte*) print_char_cursor#15 main::@7/(byte*) print_char_cursor#63 ) (byte) main::i#2 ← phi( main::@15/(byte) main::i#0 main::@7/(byte) main::i#1 ) (byte~) main::$8 ← (byte) main::i#2 * (const byte) SIZEOF_WORD - (word) main::w1#0 ← *((word[]) words + (byte~) main::$8) + (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) (byte) main::j#0 ← (byte) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@6 (byte) main::i#10 ← phi( main::@1/(byte) main::i#2 main::@6/(byte) main::i#4 ) - (byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#29 main::@6/(byte*) print_line_cursor#26 ) + (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#28 main::@6/(byte*) print_line_cursor#25 ) (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#8 ) - (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#72 main::@6/(byte*) print_char_cursor#73 ) + (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#71 main::@6/(byte*) print_char_cursor#72 ) (word) main::w1#2 ← phi( main::@1/(word) main::w1#0 main::@6/(word) main::w1#4 ) (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@6/(byte) main::j#1 ) (byte~) main::$9 ← (byte) main::j#2 * (const byte) SIZEOF_WORD - (word) main::w2#0 ← *((word[]) words + (byte~) main::$9) + (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) (byte) main::op#0 ← (byte) 0 to:main::@3 main::@3: scope:[main] from main::@2 main::@4 (byte) main::i#8 ← phi( main::@2/(byte) main::i#10 main::@4/(byte) main::i#5 ) - (byte*) print_line_cursor#25 ← phi( main::@2/(byte*) print_line_cursor#27 main::@4/(byte*) print_line_cursor#28 ) + (byte*) print_line_cursor#24 ← phi( main::@2/(byte*) print_line_cursor#26 main::@4/(byte*) print_line_cursor#27 ) (byte) main::j#7 ← phi( main::@2/(byte) main::j#2 main::@4/(byte) main::j#4 ) (byte) main::s#4 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#6 ) (byte*) print_char_cursor#55 ← phi( main::@2/(byte*) print_char_cursor#61 main::@4/(byte*) print_char_cursor#62 ) @@ -324,7 +319,7 @@ main::@3: scope:[main] from main::@2 main::@4 to:main::@16 main::@16: scope:[main] from main::@3 (byte) main::i#6 ← phi( main::@3/(byte) main::i#8 ) - (byte*) print_line_cursor#22 ← phi( main::@3/(byte*) print_line_cursor#25 ) + (byte*) print_line_cursor#22 ← phi( main::@3/(byte*) print_line_cursor#24 ) (byte) main::j#5 ← phi( main::@3/(byte) main::j#7 ) (word) main::w2#3 ← phi( main::@3/(word) main::w2#1 ) (word) main::w1#5 ← phi( main::@3/(word) main::w1#1 ) @@ -338,7 +333,7 @@ main::@16: scope:[main] from main::@3 if((bool~) main::$3) goto main::@4 to:main::@5 main::@4: scope:[main] from main::@16 main::@17 - (byte*) print_line_cursor#28 ← phi( main::@16/(byte*) print_line_cursor#22 main::@17/(byte*) print_line_cursor#6 ) + (byte*) print_line_cursor#27 ← phi( main::@16/(byte*) print_line_cursor#22 main::@17/(byte*) print_line_cursor#6 ) (byte) main::i#5 ← phi( main::@16/(byte) main::i#6 main::@17/(byte) main::i#7 ) (byte) main::s#6 ← phi( main::@16/(byte) main::s#1 main::@17/(byte) main::s#9 ) (byte*) print_char_cursor#62 ← phi( main::@16/(byte*) print_char_cursor#16 main::@17/(byte*) print_char_cursor#17 ) @@ -374,9 +369,9 @@ main::@17: scope:[main] from main::@5 (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#41 to:main::@4 main::@6: scope:[main] from main::@4 - (byte*) print_line_cursor#26 ← phi( main::@4/(byte*) print_line_cursor#28 ) + (byte*) print_line_cursor#25 ← phi( main::@4/(byte*) print_line_cursor#27 ) (byte) main::s#8 ← phi( main::@4/(byte) main::s#6 ) - (byte*) print_char_cursor#73 ← phi( main::@4/(byte*) print_char_cursor#62 ) + (byte*) print_char_cursor#72 ← phi( main::@4/(byte*) print_char_cursor#62 ) (word) main::w1#4 ← phi( main::@4/(word) main::w1#3 ) (byte) main::i#4 ← phi( main::@4/(byte) main::i#5 ) (byte) main::j#3 ← phi( main::@4/(byte) main::j#4 ) @@ -386,8 +381,8 @@ main::@6: scope:[main] from main::@4 to:main::@7 main::@7: scope:[main] from main::@6 (byte) main::s#10 ← phi( main::@6/(byte) main::s#8 ) - (byte*) print_char_cursor#63 ← phi( main::@6/(byte*) print_char_cursor#73 ) - (byte*) print_line_cursor#23 ← phi( main::@6/(byte*) print_line_cursor#26 ) + (byte*) print_char_cursor#63 ← phi( main::@6/(byte*) print_char_cursor#72 ) + (byte*) print_line_cursor#23 ← phi( main::@6/(byte*) print_line_cursor#25 ) (byte) main::i#3 ← phi( main::@6/(byte) main::i#4 ) (byte) main::i#1 ← (byte) main::i#3 + rangenext(0,2) (bool~) main::$7 ← (byte) main::i#1 != rangelast(0,2) @@ -408,7 +403,7 @@ main::@return: scope:[main] from main::@9 (void()) compare((word) compare::w1 , (word) compare::w2 , (byte) compare::op) compare: scope:[compare] from main::@3 - (byte*) print_char_cursor#87 ← phi( main::@3/(byte*) print_char_cursor#55 ) + (byte*) print_char_cursor#86 ← phi( main::@3/(byte*) print_char_cursor#55 ) (word) compare::w2#8 ← phi( main::@3/(word) compare::w2#0 ) (word) compare::w1#8 ← phi( main::@3/(word) compare::w1#0 ) (byte) compare::op#1 ← phi( main::@3/(byte) compare::op#0 ) @@ -419,7 +414,7 @@ compare: scope:[compare] from main::@3 to:compare::@12 compare::@1: scope:[compare] from compare (byte) compare::r#24 ← phi( compare/(byte) compare::r#0 ) - (byte*) print_char_cursor#85 ← phi( compare/(byte*) print_char_cursor#87 ) + (byte*) print_char_cursor#84 ← phi( compare/(byte*) print_char_cursor#86 ) (word) compare::w2#1 ← phi( compare/(word) compare::w2#8 ) (word) compare::w1#1 ← phi( compare/(word) compare::w1#8 ) (bool~) compare::$22 ← (word) compare::w1#1 < (word) compare::w2#1 @@ -429,7 +424,7 @@ compare::@1: scope:[compare] from compare compare::@12: scope:[compare] from compare (byte*) compare::ops#13 ← phi( compare/(byte*) compare::ops#0 ) (byte) compare::r#25 ← phi( compare/(byte) compare::r#0 ) - (byte*) print_char_cursor#88 ← phi( compare/(byte*) print_char_cursor#87 ) + (byte*) print_char_cursor#87 ← phi( compare/(byte*) print_char_cursor#86 ) (word) compare::w2#9 ← phi( compare/(word) compare::w2#8 ) (word) compare::w1#9 ← phi( compare/(word) compare::w1#8 ) (byte) compare::op#2 ← phi( compare/(byte) compare::op#1 ) @@ -438,7 +433,7 @@ compare::@12: scope:[compare] from compare to:compare::@13 compare::@2: scope:[compare] from compare::@12 (byte) compare::r#23 ← phi( compare::@12/(byte) compare::r#25 ) - (byte*) print_char_cursor#83 ← phi( compare::@12/(byte*) print_char_cursor#88 ) + (byte*) print_char_cursor#82 ← phi( compare::@12/(byte*) print_char_cursor#87 ) (word) compare::w2#2 ← phi( compare::@12/(word) compare::w2#9 ) (word) compare::w1#2 ← phi( compare::@12/(word) compare::w1#9 ) (bool~) compare::$20 ← (word) compare::w1#2 <= (word) compare::w2#2 @@ -448,7 +443,7 @@ compare::@2: scope:[compare] from compare::@12 compare::@13: scope:[compare] from compare::@12 (byte) compare::r#26 ← phi( compare::@12/(byte) compare::r#25 ) (byte*) compare::ops#12 ← phi( compare::@12/(byte*) compare::ops#13 ) - (byte*) print_char_cursor#89 ← phi( compare::@12/(byte*) print_char_cursor#88 ) + (byte*) print_char_cursor#88 ← phi( compare::@12/(byte*) print_char_cursor#87 ) (word) compare::w2#10 ← phi( compare::@12/(word) compare::w2#9 ) (word) compare::w1#10 ← phi( compare::@12/(word) compare::w1#9 ) (byte) compare::op#3 ← phi( compare::@12/(byte) compare::op#2 ) @@ -457,7 +452,7 @@ compare::@13: scope:[compare] from compare::@12 to:compare::@14 compare::@3: scope:[compare] from compare::@13 (byte) compare::r#22 ← phi( compare::@13/(byte) compare::r#26 ) - (byte*) print_char_cursor#82 ← phi( compare::@13/(byte*) print_char_cursor#89 ) + (byte*) print_char_cursor#81 ← phi( compare::@13/(byte*) print_char_cursor#88 ) (word) compare::w2#3 ← phi( compare::@13/(word) compare::w2#10 ) (word) compare::w1#3 ← phi( compare::@13/(word) compare::w1#10 ) (bool~) compare::$18 ← (word) compare::w1#3 > (word) compare::w2#3 @@ -467,7 +462,7 @@ compare::@3: scope:[compare] from compare::@13 compare::@14: scope:[compare] from compare::@13 (byte) compare::r#27 ← phi( compare::@13/(byte) compare::r#26 ) (byte*) compare::ops#11 ← phi( compare::@13/(byte*) compare::ops#12 ) - (byte*) print_char_cursor#90 ← phi( compare::@13/(byte*) print_char_cursor#89 ) + (byte*) print_char_cursor#89 ← phi( compare::@13/(byte*) print_char_cursor#88 ) (word) compare::w2#11 ← phi( compare::@13/(word) compare::w2#10 ) (word) compare::w1#11 ← phi( compare::@13/(word) compare::w1#10 ) (byte) compare::op#4 ← phi( compare::@13/(byte) compare::op#3 ) @@ -476,7 +471,7 @@ compare::@14: scope:[compare] from compare::@13 to:compare::@15 compare::@4: scope:[compare] from compare::@14 (byte) compare::r#21 ← phi( compare::@14/(byte) compare::r#27 ) - (byte*) print_char_cursor#80 ← phi( compare::@14/(byte*) print_char_cursor#90 ) + (byte*) print_char_cursor#79 ← phi( compare::@14/(byte*) print_char_cursor#89 ) (word) compare::w2#4 ← phi( compare::@14/(word) compare::w2#11 ) (word) compare::w1#4 ← phi( compare::@14/(word) compare::w1#11 ) (bool~) compare::$16 ← (word) compare::w1#4 >= (word) compare::w2#4 @@ -486,7 +481,7 @@ compare::@4: scope:[compare] from compare::@14 compare::@15: scope:[compare] from compare::@14 (byte) compare::r#18 ← phi( compare::@14/(byte) compare::r#27 ) (byte*) compare::ops#10 ← phi( compare::@14/(byte*) compare::ops#11 ) - (byte*) print_char_cursor#74 ← phi( compare::@14/(byte*) print_char_cursor#90 ) + (byte*) print_char_cursor#73 ← phi( compare::@14/(byte*) print_char_cursor#89 ) (word) compare::w2#12 ← phi( compare::@14/(word) compare::w2#11 ) (word) compare::w1#12 ← phi( compare::@14/(word) compare::w1#11 ) (byte) compare::op#5 ← phi( compare::@14/(byte) compare::op#4 ) @@ -495,7 +490,7 @@ compare::@15: scope:[compare] from compare::@14 to:compare::@16 compare::@5: scope:[compare] from compare::@15 (byte) compare::r#20 ← phi( compare::@15/(byte) compare::r#18 ) - (byte*) print_char_cursor#78 ← phi( compare::@15/(byte*) print_char_cursor#74 ) + (byte*) print_char_cursor#77 ← phi( compare::@15/(byte*) print_char_cursor#73 ) (word) compare::w2#5 ← phi( compare::@15/(word) compare::w2#12 ) (word) compare::w1#5 ← phi( compare::@15/(word) compare::w1#12 ) (bool~) compare::$14 ← (word) compare::w1#5 == (word) compare::w2#5 @@ -505,7 +500,7 @@ compare::@5: scope:[compare] from compare::@15 compare::@16: scope:[compare] from compare::@15 (byte) compare::r#11 ← phi( compare::@15/(byte) compare::r#18 ) (byte*) compare::ops#9 ← phi( compare::@15/(byte*) compare::ops#10 ) - (byte*) print_char_cursor#64 ← phi( compare::@15/(byte*) print_char_cursor#74 ) + (byte*) print_char_cursor#64 ← phi( compare::@15/(byte*) print_char_cursor#73 ) (word) compare::w2#13 ← phi( compare::@15/(word) compare::w2#12 ) (word) compare::w1#13 ← phi( compare::@15/(word) compare::w1#12 ) (byte) compare::op#6 ← phi( compare::@15/(byte) compare::op#5 ) @@ -515,7 +510,7 @@ compare::@16: scope:[compare] from compare::@15 to:compare::@17 compare::@17: scope:[compare] from compare::@16 (byte) compare::r#19 ← phi( compare::@16/(byte) compare::r#11 ) - (byte*) print_char_cursor#75 ← phi( compare::@16/(byte*) print_char_cursor#64 ) + (byte*) print_char_cursor#74 ← phi( compare::@16/(byte*) print_char_cursor#64 ) (word) compare::w2#6 ← phi( compare::@16/(word) compare::w2#13 ) (word) compare::w1#6 ← phi( compare::@16/(word) compare::w1#13 ) (bool~) compare::$12 ← (word) compare::w1#6 != (word) compare::w2#6 @@ -525,65 +520,65 @@ compare::@17: scope:[compare] from compare::@16 compare::@29: scope:[compare] from compare::@17 compare::@18 (byte) compare::r#12 ← phi( compare::@17/(byte) compare::r#19 compare::@18/(byte) compare::r#1 ) (word) compare::w2#16 ← phi( compare::@17/(word) compare::w2#6 compare::@18/(word) compare::w2#22 ) - (byte*) print_char_cursor#65 ← phi( compare::@17/(byte*) print_char_cursor#75 compare::@18/(byte*) print_char_cursor#76 ) + (byte*) print_char_cursor#65 ← phi( compare::@17/(byte*) print_char_cursor#74 compare::@18/(byte*) print_char_cursor#75 ) (word) compare::w1#14 ← phi( compare::@17/(word) compare::w1#6 compare::@18/(word) compare::w1#20 ) (byte*) compare::ops#1 ← (const string) compare::$24 to:compare::@11 compare::@18: scope:[compare] from compare::@17 (word) compare::w2#22 ← phi( compare::@17/(word) compare::w2#6 ) - (byte*) print_char_cursor#76 ← phi( compare::@17/(byte*) print_char_cursor#75 ) + (byte*) print_char_cursor#75 ← phi( compare::@17/(byte*) print_char_cursor#74 ) (word) compare::w1#20 ← phi( compare::@17/(word) compare::w1#6 ) (byte) compare::r#1 ← (const byte) TT to:compare::@29 compare::@30: scope:[compare] from compare::@20 compare::@5 (byte) compare::r#13 ← phi( compare::@20/(byte) compare::r#2 compare::@5/(byte) compare::r#20 ) (word) compare::w2#17 ← phi( compare::@20/(word) compare::w2#23 compare::@5/(word) compare::w2#5 ) - (byte*) print_char_cursor#66 ← phi( compare::@20/(byte*) print_char_cursor#77 compare::@5/(byte*) print_char_cursor#78 ) + (byte*) print_char_cursor#66 ← phi( compare::@20/(byte*) print_char_cursor#76 compare::@5/(byte*) print_char_cursor#77 ) (word) compare::w1#15 ← phi( compare::@20/(word) compare::w1#21 compare::@5/(word) compare::w1#5 ) (byte*) compare::ops#2 ← (const string) compare::$25 to:compare::@11 compare::@20: scope:[compare] from compare::@5 (word) compare::w2#23 ← phi( compare::@5/(word) compare::w2#5 ) - (byte*) print_char_cursor#77 ← phi( compare::@5/(byte*) print_char_cursor#78 ) + (byte*) print_char_cursor#76 ← phi( compare::@5/(byte*) print_char_cursor#77 ) (word) compare::w1#21 ← phi( compare::@5/(word) compare::w1#5 ) (byte) compare::r#2 ← (const byte) TT to:compare::@30 compare::@31: scope:[compare] from compare::@22 compare::@4 (byte) compare::r#14 ← phi( compare::@22/(byte) compare::r#3 compare::@4/(byte) compare::r#21 ) (word) compare::w2#18 ← phi( compare::@22/(word) compare::w2#24 compare::@4/(word) compare::w2#4 ) - (byte*) print_char_cursor#67 ← phi( compare::@22/(byte*) print_char_cursor#79 compare::@4/(byte*) print_char_cursor#80 ) + (byte*) print_char_cursor#67 ← phi( compare::@22/(byte*) print_char_cursor#78 compare::@4/(byte*) print_char_cursor#79 ) (word) compare::w1#16 ← phi( compare::@22/(word) compare::w1#22 compare::@4/(word) compare::w1#4 ) (byte*) compare::ops#3 ← (const string) compare::$26 to:compare::@11 compare::@22: scope:[compare] from compare::@4 (word) compare::w2#24 ← phi( compare::@4/(word) compare::w2#4 ) - (byte*) print_char_cursor#79 ← phi( compare::@4/(byte*) print_char_cursor#80 ) + (byte*) print_char_cursor#78 ← phi( compare::@4/(byte*) print_char_cursor#79 ) (word) compare::w1#22 ← phi( compare::@4/(word) compare::w1#4 ) (byte) compare::r#3 ← (const byte) TT to:compare::@31 compare::@32: scope:[compare] from compare::@24 compare::@3 (byte) compare::r#15 ← phi( compare::@24/(byte) compare::r#4 compare::@3/(byte) compare::r#22 ) (word) compare::w2#19 ← phi( compare::@24/(word) compare::w2#25 compare::@3/(word) compare::w2#3 ) - (byte*) print_char_cursor#68 ← phi( compare::@24/(byte*) print_char_cursor#81 compare::@3/(byte*) print_char_cursor#82 ) + (byte*) print_char_cursor#68 ← phi( compare::@24/(byte*) print_char_cursor#80 compare::@3/(byte*) print_char_cursor#81 ) (word) compare::w1#17 ← phi( compare::@24/(word) compare::w1#23 compare::@3/(word) compare::w1#3 ) (byte*) compare::ops#4 ← (const string) compare::$27 to:compare::@11 compare::@24: scope:[compare] from compare::@3 (word) compare::w2#25 ← phi( compare::@3/(word) compare::w2#3 ) - (byte*) print_char_cursor#81 ← phi( compare::@3/(byte*) print_char_cursor#82 ) + (byte*) print_char_cursor#80 ← phi( compare::@3/(byte*) print_char_cursor#81 ) (word) compare::w1#23 ← phi( compare::@3/(word) compare::w1#3 ) (byte) compare::r#4 ← (const byte) TT to:compare::@32 compare::@33: scope:[compare] from compare::@2 compare::@26 (byte) compare::r#16 ← phi( compare::@2/(byte) compare::r#23 compare::@26/(byte) compare::r#5 ) (word) compare::w2#20 ← phi( compare::@2/(word) compare::w2#2 compare::@26/(word) compare::w2#26 ) - (byte*) print_char_cursor#69 ← phi( compare::@2/(byte*) print_char_cursor#83 compare::@26/(byte*) print_char_cursor#84 ) + (byte*) print_char_cursor#69 ← phi( compare::@2/(byte*) print_char_cursor#82 compare::@26/(byte*) print_char_cursor#83 ) (word) compare::w1#18 ← phi( compare::@2/(word) compare::w1#2 compare::@26/(word) compare::w1#24 ) (byte*) compare::ops#5 ← (const string) compare::$28 to:compare::@11 compare::@26: scope:[compare] from compare::@2 (word) compare::w2#26 ← phi( compare::@2/(word) compare::w2#2 ) - (byte*) print_char_cursor#84 ← phi( compare::@2/(byte*) print_char_cursor#83 ) + (byte*) print_char_cursor#83 ← phi( compare::@2/(byte*) print_char_cursor#82 ) (word) compare::w1#24 ← phi( compare::@2/(word) compare::w1#2 ) (byte) compare::r#5 ← (const byte) TT to:compare::@33 @@ -633,13 +628,13 @@ compare::@39: scope:[compare] from compare::@38 compare::@34: scope:[compare] from compare::@1 compare::@28 (byte) compare::r#17 ← phi( compare::@1/(byte) compare::r#24 compare::@28/(byte) compare::r#6 ) (word) compare::w2#21 ← phi( compare::@1/(word) compare::w2#1 compare::@28/(word) compare::w2#27 ) - (byte*) print_char_cursor#70 ← phi( compare::@1/(byte*) print_char_cursor#85 compare::@28/(byte*) print_char_cursor#86 ) + (byte*) print_char_cursor#70 ← phi( compare::@1/(byte*) print_char_cursor#84 compare::@28/(byte*) print_char_cursor#85 ) (word) compare::w1#19 ← phi( compare::@1/(word) compare::w1#1 compare::@28/(word) compare::w1#25 ) (byte*) compare::ops#6 ← (const string) compare::$29 to:compare::@11 compare::@28: scope:[compare] from compare::@1 (word) compare::w2#27 ← phi( compare::@1/(word) compare::w2#1 ) - (byte*) print_char_cursor#86 ← phi( compare::@1/(byte*) print_char_cursor#85 ) + (byte*) print_char_cursor#85 ← phi( compare::@1/(byte*) print_char_cursor#84 ) (word) compare::w1#25 ← phi( compare::@1/(word) compare::w1#1 ) (byte) compare::r#6 ← (const byte) TT to:compare::@34 @@ -648,10 +643,10 @@ compare::@return: scope:[compare] from compare::@39 (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#48 return to:@return -@42: scope:[] from @40 - (byte*) print_screen#4 ← phi( @40/(byte*) print_screen#5 ) - (byte*) print_char_cursor#59 ← phi( @40/(byte*) print_char_cursor#71 ) - (byte*) print_line_cursor#21 ← phi( @40/(byte*) print_line_cursor#24 ) +@42: scope:[] from @16 + (byte*) print_screen#4 ← phi( @16/(byte*) print_screen#0 ) + (byte*) print_char_cursor#59 ← phi( @16/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#21 ← phi( @16/(byte*) print_line_cursor#0 ) call main to:@43 @43: scope:[] from @42 @@ -664,7 +659,6 @@ compare::@return: scope:[compare] from compare::@39 SYMBOL TABLE SSA (label) @16 -(label) @40 (label) @42 (label) @43 (label) @begin @@ -1070,7 +1064,6 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#88 (byte*) print_char_cursor#89 (byte*) print_char_cursor#9 -(byte*) print_char_cursor#90 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -1098,7 +1091,6 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#26 (byte*) print_line_cursor#27 (byte*) print_line_cursor#28 -(byte*) print_line_cursor#29 (byte*) print_line_cursor#3 (byte*) print_line_cursor#4 (byte*) print_line_cursor#5 @@ -1118,7 +1110,6 @@ SYMBOL TABLE SSA (byte*) print_screen#2 (byte*) print_screen#3 (byte*) print_screen#4 -(byte*) print_screen#5 (void()) print_str((byte*) print_str::str) (bool~) print_str::$0 (label) print_str::@1 @@ -1141,7 +1132,7 @@ SYMBOL TABLE SSA (word) print_word::w#1 (word) print_word::w#2 (word) print_word::w#3 -(word[]) words +(const word[]) words = { (word)(number) $12, (word)(number) $3f34, (word)(number) $cfed } Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0 Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#2) @@ -1160,8 +1151,6 @@ Adding number conversion cast (unumber) 3 in (bool~) compare::$3 ← (byte) comp Adding number conversion cast (unumber) 4 in (bool~) compare::$4 ← (byte) compare::op#5 == (number) 4 Adding number conversion cast (unumber) 5 in (bool~) compare::$5 ← (byte) compare::op#6 == (number) 5 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) words ← (word[]){ (word)(number) $12, (word)(number) $3f34, (word)(number) $cfed } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -1169,6 +1158,9 @@ Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8 Inlining cast (byte) main::s#0 ← (unumber)(number) 0 Inlining cast (byte) main::s#2 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast $12 +Simplifying constant integer cast $3f34 +Simplifying constant integer cast $cfed Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 @@ -1176,9 +1168,6 @@ Simplifying constant integer cast $28 Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast $3e8 -Simplifying constant integer cast $12 -Simplifying constant integer cast $3f34 -Simplifying constant integer cast $cfed Simplifying constant integer cast 0 Simplifying constant integer cast 3 Simplifying constant integer cast 0 @@ -1207,14 +1196,14 @@ Finalized unsigned number type (byte) 5 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [119] (bool~) main::$3 ← (byte) main::s#1 != (byte) 3 from [118] (bool~) main::$2 ← (byte) main::s#1 == (byte) 3 -Inversing boolean not [152] (bool~) compare::$23 ← (word) compare::w1#1 >= (word) compare::w2#1 from [151] (bool~) compare::$22 ← (word) compare::w1#1 < (word) compare::w2#1 -Inversing boolean not [159] (bool~) compare::$21 ← (word) compare::w1#2 > (word) compare::w2#2 from [158] (bool~) compare::$20 ← (word) compare::w1#2 <= (word) compare::w2#2 -Inversing boolean not [166] (bool~) compare::$19 ← (word) compare::w1#3 <= (word) compare::w2#3 from [165] (bool~) compare::$18 ← (word) compare::w1#3 > (word) compare::w2#3 -Inversing boolean not [173] (bool~) compare::$17 ← (word) compare::w1#4 < (word) compare::w2#4 from [172] (bool~) compare::$16 ← (word) compare::w1#4 >= (word) compare::w2#4 -Inversing boolean not [180] (bool~) compare::$15 ← (word) compare::w1#5 != (word) compare::w2#5 from [179] (bool~) compare::$14 ← (word) compare::w1#5 == (word) compare::w2#5 -Inversing boolean not [184] (bool~) compare::$6 ← (byte) compare::op#6 != (byte) 5 from [183] (bool~) compare::$5 ← (byte) compare::op#6 == (byte) 5 -Inversing boolean not [188] (bool~) compare::$13 ← (word) compare::w1#6 == (word) compare::w2#6 from [187] (bool~) compare::$12 ← (word) compare::w1#6 != (word) compare::w2#6 +Inversing boolean not [117] (bool~) main::$3 ← (byte) main::s#1 != (byte) 3 from [116] (bool~) main::$2 ← (byte) main::s#1 == (byte) 3 +Inversing boolean not [150] (bool~) compare::$23 ← (word) compare::w1#1 >= (word) compare::w2#1 from [149] (bool~) compare::$22 ← (word) compare::w1#1 < (word) compare::w2#1 +Inversing boolean not [157] (bool~) compare::$21 ← (word) compare::w1#2 > (word) compare::w2#2 from [156] (bool~) compare::$20 ← (word) compare::w1#2 <= (word) compare::w2#2 +Inversing boolean not [164] (bool~) compare::$19 ← (word) compare::w1#3 <= (word) compare::w2#3 from [163] (bool~) compare::$18 ← (word) compare::w1#3 > (word) compare::w2#3 +Inversing boolean not [171] (bool~) compare::$17 ← (word) compare::w1#4 < (word) compare::w2#4 from [170] (bool~) compare::$16 ← (word) compare::w1#4 >= (word) compare::w2#4 +Inversing boolean not [178] (bool~) compare::$15 ← (word) compare::w1#5 != (word) compare::w2#5 from [177] (bool~) compare::$14 ← (word) compare::w1#5 == (word) compare::w2#5 +Inversing boolean not [182] (bool~) compare::$6 ← (byte) compare::op#6 != (byte) 5 from [181] (bool~) compare::$5 ← (byte) compare::op#6 == (byte) 5 +Inversing boolean not [186] (bool~) compare::$13 ← (word) compare::w1#6 == (word) compare::w2#6 from [185] (bool~) compare::$12 ← (word) compare::w1#6 != (word) compare::w2#6 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -1225,7 +1214,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2 Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 Alias (byte*) memset::end#1 = (byte*) memset::end#2 Alias (void*) memset::str#4 = (void*) memset::str#5 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#24 (byte*) print_char_cursor#71 (byte*) print_screen#5 (byte*) print_line_cursor#21 (byte*) print_char_cursor#59 (byte*) print_screen#4 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#59 (byte*) print_screen#4 Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#50 (byte*) print_char_cursor#27 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#29 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 @@ -1246,7 +1235,7 @@ Alias (byte) main::op#2 = (byte) main::op#4 (byte) main::op#6 (byte) main::op#5 Alias (word) main::w1#1 = (word) main::w1#5 (word) main::w1#7 (word) main::w1#6 Alias (word) main::w2#1 = (word) main::w2#3 (word) main::w2#5 (word) main::w2#4 Alias (byte) main::j#5 = (byte) main::j#7 (byte) main::j#8 (byte) main::j#6 -Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#25 +Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#24 Alias (byte) main::i#6 = (byte) main::i#8 (byte) main::i#9 (byte) main::i#7 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#56 Alias (byte) main::s#2 = (byte) main::s#9 @@ -1255,14 +1244,14 @@ Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#41 Alias (byte) main::j#3 = (byte) main::j#4 Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 Alias (word) main::w1#3 = (word) main::w1#4 -Alias (byte*) print_char_cursor#62 = (byte*) print_char_cursor#73 (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#62 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#63 Alias (byte) main::s#10 = (byte) main::s#8 (byte) main::s#6 -Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#26 (byte*) print_line_cursor#28 +Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#25 (byte*) print_line_cursor#27 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#57 Alias (word) compare::w1#1 = (word) compare::w1#8 (word) compare::w1#9 (word) compare::w1#2 (word) compare::w1#10 (word) compare::w1#3 (word) compare::w1#11 (word) compare::w1#4 (word) compare::w1#12 (word) compare::w1#5 (word) compare::w1#13 (word) compare::w1#6 (word) compare::w1#20 (word) compare::w1#21 (word) compare::w1#22 (word) compare::w1#23 (word) compare::w1#24 (word) compare::w1#25 Alias (word) compare::w2#1 = (word) compare::w2#8 (word) compare::w2#9 (word) compare::w2#2 (word) compare::w2#10 (word) compare::w2#3 (word) compare::w2#11 (word) compare::w2#4 (word) compare::w2#12 (word) compare::w2#5 (word) compare::w2#13 (word) compare::w2#6 (word) compare::w2#22 (word) compare::w2#23 (word) compare::w2#24 (word) compare::w2#25 (word) compare::w2#26 (word) compare::w2#27 -Alias (byte*) print_char_cursor#64 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#87 (byte*) print_char_cursor#88 (byte*) print_char_cursor#83 (byte*) print_char_cursor#89 (byte*) print_char_cursor#82 (byte*) print_char_cursor#90 (byte*) print_char_cursor#80 (byte*) print_char_cursor#74 (byte*) print_char_cursor#78 (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#79 (byte*) print_char_cursor#81 (byte*) print_char_cursor#84 (byte*) print_char_cursor#86 +Alias (byte*) print_char_cursor#64 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#86 (byte*) print_char_cursor#87 (byte*) print_char_cursor#82 (byte*) print_char_cursor#88 (byte*) print_char_cursor#81 (byte*) print_char_cursor#89 (byte*) print_char_cursor#79 (byte*) print_char_cursor#73 (byte*) print_char_cursor#77 (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#78 (byte*) print_char_cursor#80 (byte*) print_char_cursor#83 (byte*) print_char_cursor#85 Alias (byte) compare::r#0 = (byte) compare::r#24 (byte) compare::r#25 (byte) compare::r#23 (byte) compare::r#26 (byte) compare::r#22 (byte) compare::r#27 (byte) compare::r#21 (byte) compare::r#18 (byte) compare::r#20 (byte) compare::r#11 (byte) compare::r#19 Alias (byte) compare::op#1 = (byte) compare::op#2 (byte) compare::op#3 (byte) compare::op#4 (byte) compare::op#5 (byte) compare::op#6 Alias (byte*) compare::ops#0 = (byte*) compare::ops#13 (byte*) compare::ops#12 (byte*) compare::ops#11 (byte*) compare::ops#10 (byte*) compare::ops#9 @@ -1340,29 +1329,26 @@ Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_str::$0 [26] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 Simple Condition (bool~) print_ln::$1 [39] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 -Simple Condition (bool~) main::$3 [120] if((byte) main::s#1!=(byte) 3) goto main::@4 -Simple Condition (bool~) main::$5 [124] if((byte) main::op#1!=rangelast(0,5)) goto main::@3 -Simple Condition (bool~) main::$6 [134] if((byte) main::j#1!=rangelast(0,2)) goto main::@2 -Simple Condition (bool~) main::$7 [138] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 -Simple Condition (bool~) compare::$0 [149] if((byte) compare::op#0==(byte) 0) goto compare::@1 -Simple Condition (bool~) compare::$23 [153] if((word) compare::w1#0>=(word) compare::w2#0) goto compare::@34 -Simple Condition (bool~) compare::$1 [156] if((byte) compare::op#0==(byte) 1) goto compare::@2 -Simple Condition (bool~) compare::$21 [160] if((word) compare::w1#0>(word) compare::w2#0) goto compare::@33 -Simple Condition (bool~) compare::$2 [163] if((byte) compare::op#0==(byte) 2) goto compare::@3 -Simple Condition (bool~) compare::$19 [167] if((word) compare::w1#0<=(word) compare::w2#0) goto compare::@32 -Simple Condition (bool~) compare::$3 [170] if((byte) compare::op#0==(byte) 3) goto compare::@4 -Simple Condition (bool~) compare::$17 [174] if((word) compare::w1#0<(word) compare::w2#0) goto compare::@31 -Simple Condition (bool~) compare::$4 [177] if((byte) compare::op#0==(byte) 4) goto compare::@5 -Simple Condition (bool~) compare::$15 [181] if((word) compare::w1#0!=(word) compare::w2#0) goto compare::@30 -Simple Condition (bool~) compare::$6 [185] if((byte) compare::op#0!=(byte) 5) goto compare::@11 -Simple Condition (bool~) compare::$13 [189] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@29 +Simple Condition (bool~) main::$3 [118] if((byte) main::s#1!=(byte) 3) goto main::@4 +Simple Condition (bool~) main::$5 [122] if((byte) main::op#1!=rangelast(0,5)) goto main::@3 +Simple Condition (bool~) main::$6 [132] if((byte) main::j#1!=rangelast(0,2)) goto main::@2 +Simple Condition (bool~) main::$7 [136] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Simple Condition (bool~) compare::$0 [147] if((byte) compare::op#0==(byte) 0) goto compare::@1 +Simple Condition (bool~) compare::$23 [151] if((word) compare::w1#0>=(word) compare::w2#0) goto compare::@34 +Simple Condition (bool~) compare::$1 [154] if((byte) compare::op#0==(byte) 1) goto compare::@2 +Simple Condition (bool~) compare::$21 [158] if((word) compare::w1#0>(word) compare::w2#0) goto compare::@33 +Simple Condition (bool~) compare::$2 [161] if((byte) compare::op#0==(byte) 2) goto compare::@3 +Simple Condition (bool~) compare::$19 [165] if((word) compare::w1#0<=(word) compare::w2#0) goto compare::@32 +Simple Condition (bool~) compare::$3 [168] if((byte) compare::op#0==(byte) 3) goto compare::@4 +Simple Condition (bool~) compare::$17 [172] if((word) compare::w1#0<(word) compare::w2#0) goto compare::@31 +Simple Condition (bool~) compare::$4 [175] if((byte) compare::op#0==(byte) 4) goto compare::@5 +Simple Condition (bool~) compare::$15 [179] if((word) compare::w1#0!=(word) compare::w2#0) goto compare::@30 +Simple Condition (bool~) compare::$6 [183] if((byte) compare::op#0!=(byte) 5) goto compare::@11 +Simple Condition (bool~) compare::$13 [187] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@29 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (word[]) { (word) $12, (word) $3f34, (word) $cfed } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 -Constant (const word[]) words = { $12, $3f34, $cfed } Constant (const byte) main::s#0 = 0 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 0 @@ -1391,14 +1377,14 @@ Constant (const byte*) memset::dst#0 = (byte*)memset::str#0 Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -if() condition always true - replacing block destination [140] if(true) goto main::@9 +if() condition always true - replacing block destination [138] if(true) goto main::@9 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [122] main::op#1 ← ++ main::op#2 to ++ -Resolved ranged comparison value [124] if(main::op#1!=rangelast(0,5)) goto main::@3 to (number) 6 -Resolved ranged next value [132] main::j#1 ← ++ main::j#2 to ++ -Resolved ranged comparison value [134] if(main::j#1!=rangelast(0,2)) goto main::@2 to (number) 3 -Resolved ranged next value [136] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [138] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 +Resolved ranged next value [120] main::op#1 ← ++ main::op#2 to ++ +Resolved ranged comparison value [122] if(main::op#1!=rangelast(0,5)) goto main::@3 to (number) 6 +Resolved ranged next value [130] main::j#1 ← ++ main::j#2 to ++ +Resolved ranged comparison value [132] if(main::j#1!=rangelast(0,2)) goto main::@2 to (number) 3 +Resolved ranged next value [134] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [136] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 Eliminating unused constant (const void*) memset::return#2 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return @@ -1489,7 +1475,6 @@ Added new block during phi lifting main::@20(between main::@4 and main::@3) Added new block during phi lifting main::@21(between main::@16 and main::@4) Adding NOP phi() at start of @begin Adding NOP phi() at start of @16 -Adding NOP phi() at start of @40 Adding NOP phi() at start of @42 Adding NOP phi() at start of @43 Adding NOP phi() at start of @end @@ -1513,68 +1498,67 @@ Adding NOP phi() at start of memset Adding NOP phi() at start of memset::@2 Adding NOP phi() at start of memset::@1 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to print_cls:8 compare:26 print_ln:30 -Calls in [compare] to print_word:77 print_str:79 print_word:83 print_char:87 print_char:89 -Calls in [print_word] to print_byte:120 print_byte:124 -Calls in [print_byte] to print_char:132 print_char:137 -Calls in [print_cls] to memset:151 +Calls in [] to main:3 +Calls in [main] to print_cls:7 compare:25 print_ln:29 +Calls in [compare] to print_word:76 print_str:78 print_word:82 print_char:86 print_char:88 +Calls in [print_word] to print_byte:119 print_byte:123 +Calls in [print_byte] to print_char:131 print_char:136 +Calls in [print_cls] to memset:150 Created 33 initial phi equivalence classes -Coalesced [13] print_char_cursor#102 ← print_char_cursor#72 -Coalesced [14] main::s#12 ← main::s#7 -Coalesced [15] print_line_cursor#33 ← print_line_cursor#29 -Coalesced [19] print_char_cursor#104 ← print_char_cursor#61 -Coalesced [20] main::s#14 ← main::s#5 -Coalesced [21] print_line_cursor#35 ← print_line_cursor#27 -Not coalescing [31] print_char_cursor#107 ← print_line_cursor#1 -Coalesced [32] print_line_cursor#38 ← print_line_cursor#1 -Coalesced [41] main::i#11 ← main::i#1 -Coalesced [42] print_char_cursor#101 ← print_char_cursor#62 -Coalesced [43] main::s#11 ← main::s#10 -Coalesced [44] print_line_cursor#32 ← print_line_cursor#23 -Coalesced [45] main::j#9 ← main::j#1 -Coalesced (already) [46] print_char_cursor#103 ← print_char_cursor#62 -Coalesced (already) [47] main::s#13 ← main::s#10 -Coalesced (already) [48] print_line_cursor#34 ← print_line_cursor#23 -Coalesced [49] main::op#7 ← main::op#1 -Coalesced (already) [50] print_char_cursor#105 ← print_char_cursor#62 -Coalesced (already) [51] main::s#15 ← main::s#10 -Coalesced (already) [52] print_line_cursor#36 ← print_line_cursor#23 -Coalesced [53] print_char_cursor#106 ← print_char_cursor#11 -Coalesced [54] main::s#16 ← main::s#1 -Coalesced (already) [55] print_line_cursor#37 ← print_line_cursor#19 -Coalesced [56] print_line_cursor#30 ← print_line_cursor#19 -Coalesced (already) [62] print_line_cursor#31 ← print_line_cursor#1 -Coalesced [72] compare::r#28 ← compare::r#12 -Coalesced [75] print_word::w#4 ← print_word::w#0 -Coalesced [76] print_char_cursor#93 ← print_char_cursor#55 -Coalesced [81] print_word::w#5 ← print_word::w#1 -Coalesced [82] print_char_cursor#94 ← print_char_cursor#2 -Coalesced [85] print_char::ch#5 ← print_char::ch#2 -Coalesced [86] print_char_cursor#97 ← print_char_cursor#11 -Coalesced (already) [88] print_char_cursor#98 ← print_char_cursor#11 -Coalesced [95] compare::r#29 ← compare::r#13 -Coalesced [99] compare::r#30 ← compare::r#14 -Coalesced [103] compare::r#31 ← compare::r#15 -Coalesced [107] compare::r#32 ← compare::r#16 -Coalesced [111] compare::r#33 ← compare::r#17 -Coalesced [118] print_byte::b#4 ← print_byte::b#0 -Coalesced [119] print_char_cursor#95 ← print_char_cursor#52 -Coalesced [122] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [123] print_char_cursor#96 ← print_char_cursor#11 -Coalesced [130] print_char::ch#6 ← print_char::ch#0 -Coalesced (already) [131] print_char_cursor#99 ← print_char_cursor#53 -Coalesced [135] print_char::ch#7 ← print_char::ch#1 -Coalesced (already) [136] print_char_cursor#100 ← print_char_cursor#11 -Coalesced [140] print_str::str#5 ← print_str::str#1 -Coalesced (already) [141] print_char_cursor#91 ← print_char_cursor#11 -Coalesced [148] print_str::str#6 ← print_str::str#0 -Coalesced [149] print_char_cursor#92 ← print_char_cursor#1 -Coalesced [162] memset::dst#4 ← memset::dst#1 +Coalesced [12] print_char_cursor#101 ← print_char_cursor#71 +Coalesced [13] main::s#12 ← main::s#7 +Coalesced [14] print_line_cursor#32 ← print_line_cursor#28 +Coalesced [18] print_char_cursor#103 ← print_char_cursor#61 +Coalesced [19] main::s#14 ← main::s#5 +Coalesced [20] print_line_cursor#34 ← print_line_cursor#26 +Not coalescing [30] print_char_cursor#106 ← print_line_cursor#1 +Coalesced [31] print_line_cursor#37 ← print_line_cursor#1 +Coalesced [40] main::i#11 ← main::i#1 +Coalesced [41] print_char_cursor#100 ← print_char_cursor#62 +Coalesced [42] main::s#11 ← main::s#10 +Coalesced [43] print_line_cursor#31 ← print_line_cursor#23 +Coalesced [44] main::j#9 ← main::j#1 +Coalesced (already) [45] print_char_cursor#102 ← print_char_cursor#62 +Coalesced (already) [46] main::s#13 ← main::s#10 +Coalesced (already) [47] print_line_cursor#33 ← print_line_cursor#23 +Coalesced [48] main::op#7 ← main::op#1 +Coalesced (already) [49] print_char_cursor#104 ← print_char_cursor#62 +Coalesced (already) [50] main::s#15 ← main::s#10 +Coalesced (already) [51] print_line_cursor#35 ← print_line_cursor#23 +Coalesced [52] print_char_cursor#105 ← print_char_cursor#11 +Coalesced [53] main::s#16 ← main::s#1 +Coalesced (already) [54] print_line_cursor#36 ← print_line_cursor#19 +Coalesced [55] print_line_cursor#29 ← print_line_cursor#19 +Coalesced (already) [61] print_line_cursor#30 ← print_line_cursor#1 +Coalesced [71] compare::r#28 ← compare::r#12 +Coalesced [74] print_word::w#4 ← print_word::w#0 +Coalesced [75] print_char_cursor#92 ← print_char_cursor#55 +Coalesced [80] print_word::w#5 ← print_word::w#1 +Coalesced [81] print_char_cursor#93 ← print_char_cursor#2 +Coalesced [84] print_char::ch#5 ← print_char::ch#2 +Coalesced [85] print_char_cursor#96 ← print_char_cursor#11 +Coalesced (already) [87] print_char_cursor#97 ← print_char_cursor#11 +Coalesced [94] compare::r#29 ← compare::r#13 +Coalesced [98] compare::r#30 ← compare::r#14 +Coalesced [102] compare::r#31 ← compare::r#15 +Coalesced [106] compare::r#32 ← compare::r#16 +Coalesced [110] compare::r#33 ← compare::r#17 +Coalesced [117] print_byte::b#4 ← print_byte::b#0 +Coalesced [118] print_char_cursor#94 ← print_char_cursor#52 +Coalesced [121] print_byte::b#5 ← print_byte::b#1 +Coalesced (already) [122] print_char_cursor#95 ← print_char_cursor#11 +Coalesced [129] print_char::ch#6 ← print_char::ch#0 +Coalesced (already) [130] print_char_cursor#98 ← print_char_cursor#53 +Coalesced [134] print_char::ch#7 ← print_char::ch#1 +Coalesced (already) [135] print_char_cursor#99 ← print_char_cursor#11 +Coalesced [139] print_str::str#5 ← print_str::str#1 +Coalesced (already) [140] print_char_cursor#90 ← print_char_cursor#11 +Coalesced [147] print_str::str#6 ← print_str::str#0 +Coalesced [148] print_char_cursor#91 ← print_char_cursor#1 +Coalesced [161] memset::dst#4 ← memset::dst#1 Coalesced down to 13 phi equivalence classes Culled Empty Block (label) @16 -Culled Empty Block (label) @40 Culled Empty Block (label) @43 Culled Empty Block (label) main::@15 Culled Empty Block (label) main::@18 @@ -1653,23 +1637,23 @@ main: scope:[main] from @1 [5] call print_cls to:main::@1 main::@1: scope:[main] from main main::@7 - [6] (byte*) print_line_cursor#29 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) + [6] (byte*) print_line_cursor#28 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 ) [6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 ) - [6] (byte*) print_char_cursor#72 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#62 ) + [6] (byte*) print_char_cursor#71 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#62 ) [6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [8] (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [9] (byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#29 main::@6/(byte*) print_line_cursor#23 ) + [9] (byte*) print_line_cursor#26 ← phi( main::@1/(byte*) print_line_cursor#28 main::@6/(byte*) print_line_cursor#23 ) [9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 ) - [9] (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#72 main::@6/(byte*) print_char_cursor#62 ) + [9] (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#71 main::@6/(byte*) print_char_cursor#62 ) [9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 ) [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [11] (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) to:main::@3 main::@3: scope:[main] from main::@2 main::@4 - [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#27 main::@4/(byte*) print_line_cursor#23 ) + [12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#26 main::@4/(byte*) print_line_cursor#23 ) [12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 ) [12] (byte*) print_char_cursor#55 ← phi( main::@2/(byte*) print_char_cursor#61 main::@4/(byte*) print_char_cursor#62 ) [12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 ) @@ -1687,12 +1671,12 @@ main::@5: scope:[main] from main::@9 [20] call print_ln to:main::@10 main::@10: scope:[main] from main::@5 - [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 + [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 to:main::@4 main::@4: scope:[main] from main::@10 main::@9 [22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 ) [22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 ) - [22] (byte*) print_char_cursor#62 ← phi( main::@9/(byte*) print_char_cursor#11 main::@10/(byte*~) print_char_cursor#107 ) + [22] (byte*) print_char_cursor#62 ← phi( main::@9/(byte*) print_char_cursor#11 main::@10/(byte*~) print_char_cursor#106 ) [23] (byte) main::op#1 ← ++ (byte) main::op#2 [24] if((byte) main::op#1!=(byte) 6) goto main::@3 to:main::@6 @@ -1971,7 +1955,7 @@ VARIABLE REGISTER WEIGHTS (byte) print_char::ch#4 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 10001.0 -(byte*~) print_char_cursor#107 2002.0 +(byte*~) print_char_cursor#106 2002.0 (byte*) print_char_cursor#11 393.3571428571428 (byte*) print_char_cursor#2 5001.166666666666 (byte*) print_char_cursor#36 6.0 @@ -1980,14 +1964,14 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#55 36.800000000000004 (byte*) print_char_cursor#61 71.0 (byte*) print_char_cursor#62 445.0 -(byte*) print_char_cursor#72 7.333333333333333 +(byte*) print_char_cursor#71 7.333333333333333 (void()) print_cls() (byte*) print_line_cursor (byte*) print_line_cursor#1 6401.0 (byte*) print_line_cursor#19 233.8888888888889 (byte*) print_line_cursor#23 445.0 -(byte*) print_line_cursor#27 71.0 -(byte*) print_line_cursor#29 7.333333333333333 +(byte*) print_line_cursor#26 71.0 +(byte*) print_line_cursor#28 7.333333333333333 (byte*) print_line_cursor#9 20004.0 (void()) print_ln() (byte*) print_screen @@ -2007,12 +1991,12 @@ Initial phi equivalence classes [ main::j#2 main::j#1 ] [ main::op#2 main::op#1 ] [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] [ compare::ops#7 ] [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] [ print_word::w#2 print_word::w#0 print_word::w#1 ] -[ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +[ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_str::str#2 print_str::str#1 print_str::str#0 ] [ memset::dst#2 memset::dst#1 ] @@ -2030,12 +2014,12 @@ Complete equivalence classes [ main::j#2 main::j#1 ] [ main::op#2 main::op#1 ] [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +[ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] [ compare::ops#7 ] [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] [ print_word::w#2 print_word::w#0 print_word::w#1 ] -[ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +[ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_str::str#2 print_str::str#1 print_str::str#0 ] [ memset::dst#2 memset::dst#1 ] @@ -2052,12 +2036,12 @@ Allocated zp[1]:2 [ main::i#2 main::i#1 ] Allocated zp[1]:3 [ main::j#2 main::j#1 ] Allocated zp[1]:4 [ main::op#2 main::op#1 ] Allocated zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Allocated zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +Allocated zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] Allocated zp[2]:8 [ compare::ops#7 ] Allocated zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] Allocated zp[1]:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] Allocated zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] -Allocated zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +Allocated zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] Allocated zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated zp[2]:19 [ memset::dst#2 memset::dst#1 ] @@ -2117,7 +2101,7 @@ main: { jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [6] phi (byte*) print_line_cursor#29 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + // [6] phi (byte*) print_line_cursor#28 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor lda #>$400 @@ -2125,7 +2109,7 @@ main: { // [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [6] phi (byte*) print_char_cursor#72 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + // [6] phi (byte*) print_char_cursor#71 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta.z print_char_cursor lda #>$400 @@ -2136,9 +2120,9 @@ main: { jmp __b1 // [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] __b1_from___b7: - // [6] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy + // [6] phi (byte*) print_line_cursor#28 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy // [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - // [6] phi (byte*) print_char_cursor#72 = (byte*) print_char_cursor#62 [phi:main::@7->main::@1#2] -- register_copy + // [6] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#62 [phi:main::@7->main::@1#2] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy jmp __b1 // main::@1 @@ -2155,16 +2139,16 @@ main: { sta.z w1+1 // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#29 [phi:main::@1->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#28 [phi:main::@1->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#72 [phi:main::@1->main::@2#2] -- register_copy + // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#71 [phi:main::@1->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta.z j jmp __b2 // [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] __b2_from___b6: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#62 [phi:main::@6->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy @@ -2183,7 +2167,7 @@ main: { sta.z w2+1 // [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: - // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#27 [phi:main::@2->main::@3#0] -- register_copy + // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#55 = (byte*) print_char_cursor#61 [phi:main::@2->main::@3#2] -- register_copy // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuz1=vbuc1 @@ -2235,7 +2219,7 @@ main: { jmp __b10 // main::@10 __b10: - // [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -2246,7 +2230,7 @@ main: { // [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [22] phi (byte*) print_char_cursor#62 = (byte*~) print_char_cursor#107 [phi:main::@10->main::@4#2] -- register_copy + // [22] phi (byte*) print_char_cursor#62 = (byte*~) print_char_cursor#106 [phi:main::@10->main::@4#2] -- register_copy jmp __b4 // [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] __b4_from___b9: @@ -2900,17 +2884,17 @@ memset: { words: .word $12, $3f34, $cfed REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::$8 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] -Statement [8] (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::$9 ] ) always clobbers reg byte a +Statement [8] (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::j#2 main::j#1 ] -Statement [11] (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::w2#0 ] ) always clobbers reg byte a +Statement [11] (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a Statement [13] (word) compare::w1#0 ← (word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::op#2 main::op#1 ] Statement [14] (word) compare::w2#0 ← (word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#107 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#107 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ) always clobbers reg byte a Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a Statement [41] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@19 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a @@ -2939,13 +2923,13 @@ Statement [91] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ pr Statement [93] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2) [ print_char_cursor#2 print_str::str#2 ] ( main:2::compare:16::print_str:48 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 compare::w2#0 compare::r#10 print_char_cursor#2 print_str::str#2 ] ) always clobbers reg byte a reg byte y Statement [101] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] ) always clobbers reg byte a Statement [103] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:5::memset:97 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::$8 ] ) always clobbers reg byte a -Statement [8] (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#72 main::s#7 print_line_cursor#29 main::w1#0 ] ) always clobbers reg byte a -Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::$9 ] ) always clobbers reg byte a -Statement [11] (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#27 main::w2#0 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::$8 ] ) always clobbers reg byte a +Statement [8] (word) main::w1#0 ← *((const word[]) words + (byte~) main::$8) [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ( main:2 [ main::i#2 print_char_cursor#71 main::s#7 print_line_cursor#28 main::w1#0 ] ) always clobbers reg byte a +Statement [10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::$9 ] ) always clobbers reg byte a +Statement [11] (word) main::w2#0 ← *((const word[]) words + (byte~) main::$9) [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 print_char_cursor#61 main::s#5 print_line_cursor#26 main::w2#0 ] ) always clobbers reg byte a Statement [13] (word) compare::w1#0 ← (word) main::w1#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 ] ) always clobbers reg byte a Statement [14] (word) compare::w2#0 ← (word) main::w2#0 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#55 main::s#3 print_line_cursor#19 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a -Statement [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#107 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#107 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ( main:2 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_char_cursor#106 print_line_cursor#1 ] ) always clobbers reg byte a Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#11) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#11 ] ( main:2::print_ln:20 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 print_line_cursor#1 print_char_cursor#11 ] ) always clobbers reg byte a Statement [41] if((word) compare::w1#0==(word) compare::w2#0) goto compare::@19 [ print_char_cursor#55 compare::w1#0 compare::w2#0 ] ( main:2::compare:16 [ main::i#2 main::w1#0 main::j#2 main::w2#0 main::op#2 main::s#3 print_line_cursor#19 print_char_cursor#55 compare::w1#0 compare::w2#0 ] ) always clobbers reg byte a @@ -2970,12 +2954,12 @@ Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte x , Potential registers zp[1]:4 [ main::op#2 main::op#1 ] : zp[1]:4 , reg byte x , Potential registers zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] : zp[1]:5 , reg byte x , -Potential registers zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] : zp[2]:6 , +Potential registers zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] : zp[2]:6 , Potential registers zp[2]:8 [ compare::ops#7 ] : zp[2]:8 , Potential registers zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] : zp[1]:10 , reg byte x , Potential registers zp[1]:11 [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] : zp[2]:12 , -Potential registers zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] : zp[2]:14 , +Potential registers zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] : zp[2]:14 , Potential registers zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:16 , reg byte x , Potential registers zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] : zp[2]:17 , Potential registers zp[2]:19 [ memset::dst#2 memset::dst#1 ] : zp[2]:19 , @@ -2990,7 +2974,7 @@ Potential registers zp[1]:32 [ print_byte::$0 ] : zp[1]:32 , reg byte a , reg by Potential registers zp[1]:33 [ print_byte::$2 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 27,162.22: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] 17,968.66: zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +Uplift Scope [] 27,162.22: zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] 17,968.66: zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] Uplift Scope [print_str] 30,005.5: zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Uplift Scope [main] 2,302.43: zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] 1,774.5: zp[1]:4 [ main::op#2 main::op#1 ] 202: zp[1]:24 [ main::$9 ] 170.44: zp[1]:3 [ main::j#2 main::j#1 ] 78.71: zp[2]:25 [ main::w2#0 ] 53.26: zp[2]:22 [ main::w1#0 ] 22: zp[1]:21 [ main::$8 ] 18.07: zp[1]:2 [ main::i#2 main::i#1 ] Uplift Scope [compare] 168.83: zp[1]:31 [ compare::op#0 ] 36.25: zp[2]:27 [ compare::w1#0 ] 32.74: zp[2]:29 [ compare::w2#0 ] 14: zp[1]:10 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] 0.67: zp[2]:8 [ compare::ops#7 ] @@ -3002,7 +2986,7 @@ Uplift Scope [RADIX] Uplift Scope [print_ln] Uplift Scope [print_cls] -Uplifting [] best 1156292 combination zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +Uplifting [] best 1156292 combination zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] zp[2]:14 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] Uplifting [print_str] best 1156292 combination zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] Uplifting [main] best 1143852 combination zp[1]:5 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] reg byte x [ main::op#2 main::op#1 ] reg byte a [ main::$9 ] zp[1]:3 [ main::j#2 main::j#1 ] zp[2]:25 [ main::w2#0 ] zp[2]:22 [ main::w1#0 ] reg byte a [ main::$8 ] zp[1]:2 [ main::i#2 main::i#1 ] Limited combination testing to 100 combinations of 256 possible. @@ -3027,14 +3011,14 @@ Uplifting [print_byte] best 1140811 combination zp[1]:16 [ print_byte::b#2 print Coalescing zero page register [ zp[2]:8 [ compare::ops#7 ] ] with [ zp[2]:17 [ print_str::str#2 print_str::str#1 print_str::str#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:12 [ print_word::w#2 print_word::w#0 print_word::w#1 ] ] with [ zp[2]:27 [ compare::w1#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:25 [ main::w2#0 ] ] with [ zp[2]:29 [ compare::w2#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] ] +Coalescing zero page register [ zp[2]:19 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] ] Allocated (was zp[1]:5) zp[1]:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ] Allocated (was zp[2]:8) zp[2]:5 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp[1]:10) zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] Allocated (was zp[2]:12) zp[2]:8 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] -Allocated (was zp[2]:14) zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +Allocated (was zp[2]:14) zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] Allocated (was zp[1]:16) zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp[2]:19) zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +Allocated (was zp[2]:19) zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] Allocated (was zp[2]:22) zp[2]:15 [ main::w1#0 ] Allocated (was zp[2]:25) zp[2]:17 [ main::w2#0 compare::w2#0 ] @@ -3080,7 +3064,7 @@ main: { jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: - // [6] phi (byte*) print_line_cursor#29 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + // [6] phi (byte*) print_line_cursor#28 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor lda #>$400 @@ -3088,7 +3072,7 @@ main: { // [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [6] phi (byte*) print_char_cursor#72 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + // [6] phi (byte*) print_char_cursor#71 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta.z print_char_cursor lda #>$400 @@ -3099,9 +3083,9 @@ main: { jmp __b1 // [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] __b1_from___b7: - // [6] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy + // [6] phi (byte*) print_line_cursor#28 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy // [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - // [6] phi (byte*) print_char_cursor#72 = (byte*) print_char_cursor#62 [phi:main::@7->main::@1#2] -- register_copy + // [6] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#62 [phi:main::@7->main::@1#2] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy jmp __b1 // main::@1 @@ -3117,16 +3101,16 @@ main: { sta.z w1+1 // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#29 [phi:main::@1->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#28 [phi:main::@1->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#72 [phi:main::@1->main::@2#2] -- register_copy + // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#71 [phi:main::@1->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta.z j jmp __b2 // [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] __b2_from___b6: - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#62 [phi:main::@6->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy @@ -3144,7 +3128,7 @@ main: { sta.z w2+1 // [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: - // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#27 [phi:main::@2->main::@3#0] -- register_copy + // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#55 = (byte*) print_char_cursor#61 [phi:main::@2->main::@3#2] -- register_copy // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 @@ -3189,7 +3173,7 @@ main: { jmp __b10 // main::@10 __b10: - // [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -3200,7 +3184,7 @@ main: { // [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [22] phi (byte*) print_char_cursor#62 = (byte*~) print_char_cursor#107 [phi:main::@10->main::@4#2] -- register_copy + // [22] phi (byte*) print_char_cursor#62 = (byte*~) print_char_cursor#106 [phi:main::@10->main::@4#2] -- register_copy jmp __b4 // [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] __b4_from___b9: @@ -4127,7 +4111,7 @@ FINAL SYMBOL TABLE (byte) print_char::ch#4 reg byte a 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp[2]:10 10001.0 -(byte*~) print_char_cursor#107 print_char_cursor zp[2]:10 2002.0 +(byte*~) print_char_cursor#106 print_char_cursor zp[2]:10 2002.0 (byte*) print_char_cursor#11 print_char_cursor zp[2]:10 393.3571428571428 (byte*) print_char_cursor#2 print_char_cursor zp[2]:10 5001.166666666666 (byte*) print_char_cursor#36 print_char_cursor zp[2]:10 6.0 @@ -4136,7 +4120,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#55 print_char_cursor zp[2]:10 36.800000000000004 (byte*) print_char_cursor#61 print_char_cursor zp[2]:10 71.0 (byte*) print_char_cursor#62 print_char_cursor zp[2]:10 445.0 -(byte*) print_char_cursor#72 print_char_cursor zp[2]:10 7.333333333333333 +(byte*) print_char_cursor#71 print_char_cursor zp[2]:10 7.333333333333333 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -4144,8 +4128,8 @@ FINAL SYMBOL TABLE (byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0 (byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889 (byte*) print_line_cursor#23 print_line_cursor zp[2]:13 445.0 -(byte*) print_line_cursor#27 print_line_cursor zp[2]:13 71.0 -(byte*) print_line_cursor#29 print_line_cursor zp[2]:13 7.333333333333333 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:13 71.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:13 7.333333333333333 (byte*) print_line_cursor#9 print_line_cursor zp[2]:13 20004.0 (void()) print_ln() (label) print_ln::@1 @@ -4176,9 +4160,9 @@ zp[2]:5 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp[2]:8 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] -zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] @@ -4222,7 +4206,7 @@ main: { // [96] phi from main to print_cls [phi:main->print_cls] jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] - // [6] phi (byte*) print_line_cursor#29 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 + // [6] phi (byte*) print_line_cursor#28 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400 sta.z print_line_cursor lda #>$400 @@ -4230,7 +4214,7 @@ main: { // [6] phi (byte) main::s#7 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [6] phi (byte*) print_char_cursor#72 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 + // [6] phi (byte*) print_char_cursor#71 = (byte*) 1024 [phi:main->main::@1#2] -- pbuz1=pbuc1 lda #<$400 sta.z print_char_cursor lda #>$400 @@ -4239,9 +4223,9 @@ main: { lda #0 sta.z i // [6] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - // [6] phi (byte*) print_line_cursor#29 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy + // [6] phi (byte*) print_line_cursor#28 = (byte*) print_line_cursor#23 [phi:main::@7->main::@1#0] -- register_copy // [6] phi (byte) main::s#7 = (byte) main::s#10 [phi:main::@7->main::@1#1] -- register_copy - // [6] phi (byte*) print_char_cursor#72 = (byte*) print_char_cursor#62 [phi:main::@7->main::@1#2] -- register_copy + // [6] phi (byte*) print_char_cursor#71 = (byte*) print_char_cursor#62 [phi:main::@7->main::@1#2] -- register_copy // [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#3] -- register_copy // main::@1 __b1: @@ -4256,14 +4240,14 @@ main: { lda words+1,y sta.z w1+1 // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#29 [phi:main::@1->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#28 [phi:main::@1->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#7 [phi:main::@1->main::@2#1] -- register_copy - // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#72 [phi:main::@1->main::@2#2] -- register_copy + // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#71 [phi:main::@1->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#3] -- vbuz1=vbuc1 lda #0 sta.z j // [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - // [9] phi (byte*) print_line_cursor#27 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy + // [9] phi (byte*) print_line_cursor#26 = (byte*) print_line_cursor#23 [phi:main::@6->main::@2#0] -- register_copy // [9] phi (byte) main::s#5 = (byte) main::s#10 [phi:main::@6->main::@2#1] -- register_copy // [9] phi (byte*) print_char_cursor#61 = (byte*) print_char_cursor#62 [phi:main::@6->main::@2#2] -- register_copy // [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#3] -- register_copy @@ -4280,7 +4264,7 @@ main: { lda words+1,y sta.z w2+1 // [12] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#27 [phi:main::@2->main::@3#0] -- register_copy + // [12] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#26 [phi:main::@2->main::@3#0] -- register_copy // [12] phi (byte) main::s#3 = (byte) main::s#5 [phi:main::@2->main::@3#1] -- register_copy // [12] phi (byte*) print_char_cursor#55 = (byte*) print_char_cursor#61 [phi:main::@2->main::@3#2] -- register_copy // [12] phi (byte) main::op#2 = (byte) 0 [phi:main::@2->main::@3#3] -- vbuxx=vbuc1 @@ -4317,7 +4301,7 @@ main: { // [30] phi from main::@5 to print_ln [phi:main::@5->print_ln] jsr print_ln // main::@10 - // [21] (byte*~) print_char_cursor#107 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [21] (byte*~) print_char_cursor#106 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda.z print_line_cursor sta.z print_char_cursor lda.z print_line_cursor+1 @@ -4327,7 +4311,7 @@ main: { // [22] phi (byte) main::s#10 = (byte) 0 [phi:main::@10->main::@4#1] -- vbuz1=vbuc1 lda #0 sta.z s - // [22] phi (byte*) print_char_cursor#62 = (byte*~) print_char_cursor#107 [phi:main::@10->main::@4#2] -- register_copy + // [22] phi (byte*) print_char_cursor#62 = (byte*~) print_char_cursor#106 [phi:main::@10->main::@4#2] -- register_copy // [22] phi from main::@9 to main::@4 [phi:main::@9->main::@4] // [22] phi (byte*) print_line_cursor#23 = (byte*) print_line_cursor#19 [phi:main::@9->main::@4#0] -- register_copy // [22] phi (byte) main::s#10 = (byte) main::s#1 [phi:main::@9->main::@4#1] -- register_copy diff --git a/src/test/ref/test-comparisons-word.sym b/src/test/ref/test-comparisons-word.sym index 09f990da6..c3fffc84e 100644 --- a/src/test/ref/test-comparisons-word.sym +++ b/src/test/ref/test-comparisons-word.sym @@ -125,7 +125,7 @@ (byte) print_char::ch#4 reg byte a 8.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp[2]:10 10001.0 -(byte*~) print_char_cursor#107 print_char_cursor zp[2]:10 2002.0 +(byte*~) print_char_cursor#106 print_char_cursor zp[2]:10 2002.0 (byte*) print_char_cursor#11 print_char_cursor zp[2]:10 393.3571428571428 (byte*) print_char_cursor#2 print_char_cursor zp[2]:10 5001.166666666666 (byte*) print_char_cursor#36 print_char_cursor zp[2]:10 6.0 @@ -134,7 +134,7 @@ (byte*) print_char_cursor#55 print_char_cursor zp[2]:10 36.800000000000004 (byte*) print_char_cursor#61 print_char_cursor zp[2]:10 71.0 (byte*) print_char_cursor#62 print_char_cursor zp[2]:10 445.0 -(byte*) print_char_cursor#72 print_char_cursor zp[2]:10 7.333333333333333 +(byte*) print_char_cursor#71 print_char_cursor zp[2]:10 7.333333333333333 (void()) print_cls() (label) print_cls::@return (const byte[]) print_hextab = (string) "0123456789abcdef"z @@ -142,8 +142,8 @@ (byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0 (byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889 (byte*) print_line_cursor#23 print_line_cursor zp[2]:13 445.0 -(byte*) print_line_cursor#27 print_line_cursor zp[2]:13 71.0 -(byte*) print_line_cursor#29 print_line_cursor zp[2]:13 7.333333333333333 +(byte*) print_line_cursor#26 print_line_cursor zp[2]:13 71.0 +(byte*) print_line_cursor#28 print_line_cursor zp[2]:13 7.333333333333333 (byte*) print_line_cursor#9 print_line_cursor zp[2]:13 20004.0 (void()) print_ln() (label) print_ln::@1 @@ -174,9 +174,9 @@ zp[2]:5 [ compare::ops#7 print_str::str#2 print_str::str#1 print_str::str#0 ] zp[1]:7 [ compare::r#10 compare::r#12 compare::r#13 compare::r#14 compare::r#15 compare::r#16 compare::r#17 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp[2]:8 [ print_word::w#2 print_word::w#0 print_word::w#1 compare::w1#0 ] -zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#72 print_char_cursor#62 print_char_cursor#11 print_char_cursor#107 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] +zp[2]:10 [ print_char_cursor#52 print_char_cursor#36 print_char_cursor#55 print_char_cursor#61 print_char_cursor#71 print_char_cursor#62 print_char_cursor#11 print_char_cursor#106 print_char_cursor#53 print_char_cursor#2 print_char_cursor#1 ] zp[1]:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#27 print_line_cursor#29 print_line_cursor#23 print_line_cursor#1 ] +zp[2]:13 [ memset::dst#2 memset::dst#1 print_line_cursor#9 print_line_cursor#19 print_line_cursor#26 print_line_cursor#28 print_line_cursor#23 print_line_cursor#1 ] reg byte a [ main::$8 ] zp[2]:15 [ main::w1#0 ] reg byte a [ main::$9 ] diff --git a/src/test/ref/test-comparisons.asm b/src/test/ref/test-comparisons.asm index bdaa3a4f9..ee89e0fd4 100644 --- a/src/test/ref/test-comparisons.asm +++ b/src/test/ref/test-comparisons.asm @@ -371,6 +371,7 @@ main: { lda.z print_line_cursor+1 sta.z print_char_cursor+1 jmp __b1 + cs: .byte 7, $c7, $37, $97, $67 op: .text "< " .byte 0 op4: .text "> " @@ -381,7 +382,6 @@ main: { .byte 0 op16: .text "==" .byte 0 - cs: .byte 7, $c7, $37, $97, $67 } // Print a newline print_ln: { diff --git a/src/test/ref/test-comparisons.log b/src/test/ref/test-comparisons.log index a8652ff30..d9fdcfe43 100644 --- a/src/test/ref/test-comparisons.log +++ b/src/test/ref/test-comparisons.log @@ -244,7 +244,6 @@ main::@1: scope:[main] from main::@45 main::@70 (byte) main::r#0 ← (byte) 0 (number~) main::$1 ← (number) $ce - (byte) main::a#2 (byte) main::b#0 ← (number~) main::$1 - (byte[5]) main::cs ← { (number) 7, (number) $c7, (number) $37, (number) $97, (number) $67 } (byte) main::r#1 ← (byte) '-' (bool~) main::$2 ← (byte) main::a#2 < (byte) main::b#0 (bool~) main::$3 ← ! (bool~) main::$2 @@ -304,7 +303,7 @@ main::@47: scope:[main] from main::@3 (byte*) print_char_cursor#59 ← phi( main::@3/(byte*) print_char_cursor#45 ) (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#59 (byte) main::r#4 ← (byte) '-' - (bool~) main::$8 ← (byte) main::a#6 < *((byte[5]) main::cs + (byte) main::i#2) + (bool~) main::$8 ← (byte) main::a#6 < *((const byte[5]) main::cs + (byte) main::i#2) (bool~) main::$9 ← ! (bool~) main::$8 if((bool~) main::$9) goto main::@4 to:main::@24 @@ -325,7 +324,7 @@ main::@4: scope:[main] from main::@24 main::@47 (byte) main::a#7 ← phi( main::@24/(byte) main::a#45 main::@47/(byte) main::a#6 ) (byte) printu::a#2 ← (byte) main::a#7 (byte*) printu::op#2 ← (const string) main::op2 - (byte) printu::b#2 ← *((byte[5]) main::cs + (byte) main::i#3) + (byte) printu::b#2 ← *((const byte[5]) main::cs + (byte) main::i#3) (byte) printu::res#2 ← (byte) main::r#43 call printu to:main::@48 @@ -446,7 +445,7 @@ main::@52: scope:[main] from main::@7 (byte*) print_char_cursor#64 ← phi( main::@7/(byte*) print_char_cursor#45 ) (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#64 (byte) main::r#12 ← (byte) '-' - (bool~) main::$21 ← (byte) main::a#14 > *((byte[5]) main::cs + (byte) main::i#4) + (bool~) main::$21 ← (byte) main::a#14 > *((const byte[5]) main::cs + (byte) main::i#4) (bool~) main::$22 ← ! (bool~) main::$21 if((bool~) main::$22) goto main::@8 to:main::@28 @@ -467,7 +466,7 @@ main::@8: scope:[main] from main::@28 main::@52 (byte) main::a#15 ← phi( main::@28/(byte) main::a#50 main::@52/(byte) main::a#14 ) (byte) printu::a#6 ← (byte) main::a#15 (byte*) printu::op#6 ← (const string) main::op6 - (byte) printu::b#6 ← *((byte[5]) main::cs + (byte) main::i#5) + (byte) printu::b#6 ← *((const byte[5]) main::cs + (byte) main::i#5) (byte) printu::res#6 ← (byte) main::r#47 call printu to:main::@53 @@ -588,7 +587,7 @@ main::@57: scope:[main] from main::@11 (byte*) print_char_cursor#69 ← phi( main::@11/(byte*) print_char_cursor#45 ) (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#69 (byte) main::r#20 ← (byte) '-' - (bool~) main::$34 ← (byte) main::a#22 <= *((byte[5]) main::cs + (byte) main::i#6) + (bool~) main::$34 ← (byte) main::a#22 <= *((const byte[5]) main::cs + (byte) main::i#6) (bool~) main::$35 ← ! (bool~) main::$34 if((bool~) main::$35) goto main::@12 to:main::@32 @@ -609,7 +608,7 @@ main::@12: scope:[main] from main::@32 main::@57 (byte) main::a#23 ← phi( main::@32/(byte) main::a#55 main::@57/(byte) main::a#22 ) (byte) printu::a#10 ← (byte) main::a#23 (byte*) printu::op#10 ← (const string) main::op10 - (byte) printu::b#10 ← *((byte[5]) main::cs + (byte) main::i#7) + (byte) printu::b#10 ← *((const byte[5]) main::cs + (byte) main::i#7) (byte) printu::res#10 ← (byte) main::r#51 call printu to:main::@58 @@ -730,7 +729,7 @@ main::@62: scope:[main] from main::@15 (byte*) print_char_cursor#74 ← phi( main::@15/(byte*) print_char_cursor#45 ) (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#74 (byte) main::r#28 ← (byte) '-' - (bool~) main::$47 ← (byte) main::a#30 >= *((byte[5]) main::cs + (byte) main::i#8) + (bool~) main::$47 ← (byte) main::a#30 >= *((const byte[5]) main::cs + (byte) main::i#8) (bool~) main::$48 ← ! (bool~) main::$47 if((bool~) main::$48) goto main::@16 to:main::@36 @@ -751,7 +750,7 @@ main::@16: scope:[main] from main::@36 main::@62 (byte) main::a#31 ← phi( main::@36/(byte) main::a#60 main::@62/(byte) main::a#30 ) (byte) printu::a#14 ← (byte) main::a#31 (byte*) printu::op#14 ← (const string) main::op14 - (byte) printu::b#14 ← *((byte[5]) main::cs + (byte) main::i#9) + (byte) printu::b#14 ← *((const byte[5]) main::cs + (byte) main::i#9) (byte) printu::res#14 ← (byte) main::r#55 call printu to:main::@63 @@ -869,7 +868,7 @@ main::@67: scope:[main] from main::@19 (byte*) print_char_cursor#79 ← phi( main::@19/(byte*) print_char_cursor#45 ) (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#79 (byte) main::r#36 ← (byte) '-' - (bool~) main::$60 ← (byte) main::a#38 == *((byte[5]) main::cs + (byte) main::i#10) + (bool~) main::$60 ← (byte) main::a#38 == *((const byte[5]) main::cs + (byte) main::i#10) (bool~) main::$61 ← ! (bool~) main::$60 if((bool~) main::$61) goto main::@20 to:main::@40 @@ -888,7 +887,7 @@ main::@20: scope:[main] from main::@40 main::@67 (byte) main::a#39 ← phi( main::@40/(byte) main::a#65 main::@67/(byte) main::a#38 ) (byte) printu::a#18 ← (byte) main::a#39 (byte*) printu::op#18 ← (const string) main::op18 - (byte) printu::b#18 ← *((byte[5]) main::cs + (byte) main::i#11) + (byte) printu::b#18 ← *((const byte[5]) main::cs + (byte) main::i#11) (byte) printu::res#18 ← (byte) main::r#59 call printu to:main::@68 @@ -1285,7 +1284,7 @@ SYMBOL TABLE SSA (byte) main::b#7 (byte) main::b#8 (byte) main::b#9 -(byte[5]) main::cs +(const byte[5]) main::cs = { (byte)(number) 7, (byte)(number) $c7, (byte)(number) $37, (byte)(number) $97, (byte)(number) $67 } (byte) main::i (byte) main::i#0 (byte) main::i#1 @@ -1890,8 +1889,6 @@ Adding number conversion cast (unumber) $37 in (byte) printu::b#17 ← (number) Adding number conversion cast (unumber) $30 in (number~) main::$67 ← (byte) main::a#42 + (number) $30 Adding number conversion cast (unumber) main::$67 in (number~) main::$67 ← (byte) main::a#42 + (unumber)(number) $30 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[5]) main::cs ← (byte[5]){ (byte)(number) 7, (byte)(number) $c7, (byte)(number) $37, (byte)(number) $97, (byte)(number) $67 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -1903,6 +1900,11 @@ Inlining cast (byte) printu::b#9 ← (unumber)(number) $37 Inlining cast (byte) printu::b#13 ← (unumber)(number) $37 Inlining cast (byte) printu::b#17 ← (unumber)(number) $37 Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 7 +Simplifying constant integer cast $c7 +Simplifying constant integer cast $37 +Simplifying constant integer cast $97 +Simplifying constant integer cast $67 Simplifying constant integer cast 0 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 @@ -1912,11 +1914,6 @@ Simplifying constant integer cast $f Simplifying constant integer cast $3e8 Simplifying constant integer cast 7 Simplifying constant integer cast $ce -Simplifying constant integer cast 7 -Simplifying constant integer cast $c7 -Simplifying constant integer cast $37 -Simplifying constant integer cast $97 -Simplifying constant integer cast $67 Simplifying constant integer cast $37 Simplifying constant integer cast $37 Simplifying constant integer cast $37 @@ -1953,26 +1950,26 @@ Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte Inferred type updated to byte in (unumber~) main::$1 ← (byte) $ce - (byte) main::a#2 Inferred type updated to byte in (unumber~) main::$67 ← (byte) main::a#42 + (byte) $30 Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0 -Inversing boolean not [93] (bool~) main::$3 ← (byte) main::a#2 >= (byte) main::b#0 from [92] (bool~) main::$2 ← (byte) main::a#2 < (byte) main::b#0 -Inversing boolean not [105] (bool~) main::$6 ← (byte) main::a#4 >= (byte) $37 from [104] (bool~) main::$5 ← (byte) main::a#4 < (byte) $37 -Inversing boolean not [119] (bool~) main::$9 ← (byte) main::a#6 >= *((byte[5]) main::cs + (byte) main::i#2) from [118] (bool~) main::$8 ← (byte) main::a#6 < *((byte[5]) main::cs + (byte) main::i#2) -Inversing boolean not [133] (bool~) main::$12 ← (byte) main::a#8 >= (byte) main::a#8 from [132] (bool~) main::$11 ← (byte) main::a#8 < (byte) main::a#8 -Inversing boolean not [151] (bool~) main::$16 ← (byte) main::a#10 <= (byte) main::b#2 from [150] (bool~) main::$15 ← (byte) main::a#10 > (byte) main::b#2 -Inversing boolean not [165] (bool~) main::$19 ← (byte) main::a#12 <= (byte) $37 from [164] (bool~) main::$18 ← (byte) main::a#12 > (byte) $37 -Inversing boolean not [179] (bool~) main::$22 ← (byte) main::a#14 <= *((byte[5]) main::cs + (byte) main::i#4) from [178] (bool~) main::$21 ← (byte) main::a#14 > *((byte[5]) main::cs + (byte) main::i#4) -Inversing boolean not [193] (bool~) main::$25 ← (byte) main::a#16 <= (byte) main::a#16 from [192] (bool~) main::$24 ← (byte) main::a#16 > (byte) main::a#16 -Inversing boolean not [211] (bool~) main::$29 ← (byte) main::a#18 > (byte) main::b#4 from [210] (bool~) main::$28 ← (byte) main::a#18 <= (byte) main::b#4 -Inversing boolean not [225] (bool~) main::$32 ← (byte) main::a#20 > (byte) $37 from [224] (bool~) main::$31 ← (byte) main::a#20 <= (byte) $37 -Inversing boolean not [239] (bool~) main::$35 ← (byte) main::a#22 > *((byte[5]) main::cs + (byte) main::i#6) from [238] (bool~) main::$34 ← (byte) main::a#22 <= *((byte[5]) main::cs + (byte) main::i#6) -Inversing boolean not [253] (bool~) main::$38 ← (byte) main::a#24 > (byte) main::a#24 from [252] (bool~) main::$37 ← (byte) main::a#24 <= (byte) main::a#24 -Inversing boolean not [271] (bool~) main::$42 ← (byte) main::a#26 < (byte) main::b#6 from [270] (bool~) main::$41 ← (byte) main::a#26 >= (byte) main::b#6 -Inversing boolean not [285] (bool~) main::$45 ← (byte) main::a#28 < (byte) $37 from [284] (bool~) main::$44 ← (byte) main::a#28 >= (byte) $37 -Inversing boolean not [299] (bool~) main::$48 ← (byte) main::a#30 < *((byte[5]) main::cs + (byte) main::i#8) from [298] (bool~) main::$47 ← (byte) main::a#30 >= *((byte[5]) main::cs + (byte) main::i#8) -Inversing boolean not [313] (bool~) main::$51 ← (byte) main::a#32 < (byte) main::a#32 from [312] (bool~) main::$50 ← (byte) main::a#32 >= (byte) main::a#32 -Inversing boolean not [331] (bool~) main::$55 ← (byte) main::a#34 != (byte) main::b#8 from [330] (bool~) main::$54 ← (byte) main::a#34 == (byte) main::b#8 -Inversing boolean not [345] (bool~) main::$58 ← (byte) main::a#36 != (byte) $37 from [344] (bool~) main::$57 ← (byte) main::a#36 == (byte) $37 -Inversing boolean not [359] (bool~) main::$61 ← (byte) main::a#38 != *((byte[5]) main::cs + (byte) main::i#10) from [358] (bool~) main::$60 ← (byte) main::a#38 == *((byte[5]) main::cs + (byte) main::i#10) -Inversing boolean not [373] (bool~) main::$64 ← (byte) main::a#40 != (byte) main::a#40 from [372] (bool~) main::$63 ← (byte) main::a#40 == (byte) main::a#40 +Inversing boolean not [92] (bool~) main::$3 ← (byte) main::a#2 >= (byte) main::b#0 from [91] (bool~) main::$2 ← (byte) main::a#2 < (byte) main::b#0 +Inversing boolean not [104] (bool~) main::$6 ← (byte) main::a#4 >= (byte) $37 from [103] (bool~) main::$5 ← (byte) main::a#4 < (byte) $37 +Inversing boolean not [118] (bool~) main::$9 ← (byte) main::a#6 >= *((const byte[5]) main::cs + (byte) main::i#2) from [117] (bool~) main::$8 ← (byte) main::a#6 < *((const byte[5]) main::cs + (byte) main::i#2) +Inversing boolean not [132] (bool~) main::$12 ← (byte) main::a#8 >= (byte) main::a#8 from [131] (bool~) main::$11 ← (byte) main::a#8 < (byte) main::a#8 +Inversing boolean not [150] (bool~) main::$16 ← (byte) main::a#10 <= (byte) main::b#2 from [149] (bool~) main::$15 ← (byte) main::a#10 > (byte) main::b#2 +Inversing boolean not [164] (bool~) main::$19 ← (byte) main::a#12 <= (byte) $37 from [163] (bool~) main::$18 ← (byte) main::a#12 > (byte) $37 +Inversing boolean not [178] (bool~) main::$22 ← (byte) main::a#14 <= *((const byte[5]) main::cs + (byte) main::i#4) from [177] (bool~) main::$21 ← (byte) main::a#14 > *((const byte[5]) main::cs + (byte) main::i#4) +Inversing boolean not [192] (bool~) main::$25 ← (byte) main::a#16 <= (byte) main::a#16 from [191] (bool~) main::$24 ← (byte) main::a#16 > (byte) main::a#16 +Inversing boolean not [210] (bool~) main::$29 ← (byte) main::a#18 > (byte) main::b#4 from [209] (bool~) main::$28 ← (byte) main::a#18 <= (byte) main::b#4 +Inversing boolean not [224] (bool~) main::$32 ← (byte) main::a#20 > (byte) $37 from [223] (bool~) main::$31 ← (byte) main::a#20 <= (byte) $37 +Inversing boolean not [238] (bool~) main::$35 ← (byte) main::a#22 > *((const byte[5]) main::cs + (byte) main::i#6) from [237] (bool~) main::$34 ← (byte) main::a#22 <= *((const byte[5]) main::cs + (byte) main::i#6) +Inversing boolean not [252] (bool~) main::$38 ← (byte) main::a#24 > (byte) main::a#24 from [251] (bool~) main::$37 ← (byte) main::a#24 <= (byte) main::a#24 +Inversing boolean not [270] (bool~) main::$42 ← (byte) main::a#26 < (byte) main::b#6 from [269] (bool~) main::$41 ← (byte) main::a#26 >= (byte) main::b#6 +Inversing boolean not [284] (bool~) main::$45 ← (byte) main::a#28 < (byte) $37 from [283] (bool~) main::$44 ← (byte) main::a#28 >= (byte) $37 +Inversing boolean not [298] (bool~) main::$48 ← (byte) main::a#30 < *((const byte[5]) main::cs + (byte) main::i#8) from [297] (bool~) main::$47 ← (byte) main::a#30 >= *((const byte[5]) main::cs + (byte) main::i#8) +Inversing boolean not [312] (bool~) main::$51 ← (byte) main::a#32 < (byte) main::a#32 from [311] (bool~) main::$50 ← (byte) main::a#32 >= (byte) main::a#32 +Inversing boolean not [330] (bool~) main::$55 ← (byte) main::a#34 != (byte) main::b#8 from [329] (bool~) main::$54 ← (byte) main::a#34 == (byte) main::b#8 +Inversing boolean not [344] (bool~) main::$58 ← (byte) main::a#36 != (byte) $37 from [343] (bool~) main::$57 ← (byte) main::a#36 == (byte) $37 +Inversing boolean not [358] (bool~) main::$61 ← (byte) main::a#38 != *((const byte[5]) main::cs + (byte) main::i#10) from [357] (bool~) main::$60 ← (byte) main::a#38 == *((const byte[5]) main::cs + (byte) main::i#10) +Inversing boolean not [372] (bool~) main::$64 ← (byte) main::a#40 != (byte) main::a#40 from [371] (bool~) main::$63 ← (byte) main::a#40 == (byte) main::a#40 Successful SSA optimization Pass2UnaryNotSimplification Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 Alias (void*) memset::str#2 = (void*) memset::str#3 @@ -2215,37 +2212,34 @@ Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 Simple Condition (bool~) print_str::$0 [26] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 Simple Condition (bool~) print_ln::$1 [39] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#55) goto print_ln::@1 -Simple Condition (bool~) main::$3 [94] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 -Simple Condition (bool~) main::$6 [106] if((byte) main::a#10>=(byte) $37) goto main::@3 -Simple Condition (bool~) main::$9 [120] if((byte) main::a#10>=*((byte[5]) main::cs + (byte) main::i#10)) goto main::@4 -Simple Condition (bool~) main::$12 [134] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 -Simple Condition (bool~) main::$16 [152] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 -Simple Condition (bool~) main::$19 [166] if((byte) main::a#10<=(byte) $37) goto main::@7 -Simple Condition (bool~) main::$22 [180] if((byte) main::a#10<=*((byte[5]) main::cs + (byte) main::i#10)) goto main::@8 -Simple Condition (bool~) main::$25 [194] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 -Simple Condition (bool~) main::$29 [212] if((byte) main::a#10>(byte) main::b#0) goto main::@10 -Simple Condition (bool~) main::$32 [226] if((byte) main::a#10>(byte) $37) goto main::@11 -Simple Condition (bool~) main::$35 [240] if((byte) main::a#10>*((byte[5]) main::cs + (byte) main::i#10)) goto main::@12 -Simple Condition (bool~) main::$38 [254] if((byte) main::a#10>(byte) main::a#10) goto main::@13 -Simple Condition (bool~) main::$42 [272] if((byte) main::a#10<(byte) main::b#0) goto main::@14 -Simple Condition (bool~) main::$45 [286] if((byte) main::a#10<(byte) $37) goto main::@15 -Simple Condition (bool~) main::$48 [300] if((byte) main::a#10<*((byte[5]) main::cs + (byte) main::i#10)) goto main::@16 -Simple Condition (bool~) main::$51 [314] if((byte) main::a#10<(byte) main::a#10) goto main::@17 -Simple Condition (bool~) main::$55 [332] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 -Simple Condition (bool~) main::$58 [346] if((byte) main::a#10!=(byte) $37) goto main::@19 -Simple Condition (bool~) main::$61 [360] if((byte) main::a#10!=*((byte[5]) main::cs + (byte) main::i#10)) goto main::@20 -Simple Condition (bool~) main::$64 [374] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 -Simple Condition (bool~) main::$68 [393] if((byte) main::i#1!=rangelast(0,4)) goto main::@1 +Simple Condition (bool~) main::$3 [93] if((byte) main::a#10>=(byte) main::b#0) goto main::@2 +Simple Condition (bool~) main::$6 [105] if((byte) main::a#10>=(byte) $37) goto main::@3 +Simple Condition (bool~) main::$9 [119] if((byte) main::a#10>=*((const byte[5]) main::cs + (byte) main::i#10)) goto main::@4 +Simple Condition (bool~) main::$12 [133] if((byte) main::a#10>=(byte) main::a#10) goto main::@5 +Simple Condition (bool~) main::$16 [151] if((byte) main::a#10<=(byte) main::b#0) goto main::@6 +Simple Condition (bool~) main::$19 [165] if((byte) main::a#10<=(byte) $37) goto main::@7 +Simple Condition (bool~) main::$22 [179] if((byte) main::a#10<=*((const byte[5]) main::cs + (byte) main::i#10)) goto main::@8 +Simple Condition (bool~) main::$25 [193] if((byte) main::a#10<=(byte) main::a#10) goto main::@9 +Simple Condition (bool~) main::$29 [211] if((byte) main::a#10>(byte) main::b#0) goto main::@10 +Simple Condition (bool~) main::$32 [225] if((byte) main::a#10>(byte) $37) goto main::@11 +Simple Condition (bool~) main::$35 [239] if((byte) main::a#10>*((const byte[5]) main::cs + (byte) main::i#10)) goto main::@12 +Simple Condition (bool~) main::$38 [253] if((byte) main::a#10>(byte) main::a#10) goto main::@13 +Simple Condition (bool~) main::$42 [271] if((byte) main::a#10<(byte) main::b#0) goto main::@14 +Simple Condition (bool~) main::$45 [285] if((byte) main::a#10<(byte) $37) goto main::@15 +Simple Condition (bool~) main::$48 [299] if((byte) main::a#10<*((const byte[5]) main::cs + (byte) main::i#10)) goto main::@16 +Simple Condition (bool~) main::$51 [313] if((byte) main::a#10<(byte) main::a#10) goto main::@17 +Simple Condition (bool~) main::$55 [331] if((byte) main::a#10!=(byte) main::b#0) goto main::@18 +Simple Condition (bool~) main::$58 [345] if((byte) main::a#10!=(byte) $37) goto main::@19 +Simple Condition (bool~) main::$61 [359] if((byte) main::a#10!=*((const byte[5]) main::cs + (byte) main::i#10)) goto main::@20 +Simple Condition (bool~) main::$64 [373] if((byte) main::a#10!=(byte) main::a#10) goto main::@21 +Simple Condition (bool~) main::$68 [392] if((byte) main::i#1!=rangelast(0,4)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[5]) { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = $3e8 Constant (const byte) main::a#0 = 7 Constant (const byte) main::i#0 = 0 Constant (const byte) main::r#0 = 0 -Constant (const byte[5]) main::cs = { 7, $c7, $37, $97, $67 } Constant (const byte) main::r#1 = '-' Constant (const byte*) printu::op#0 = main::op Constant (const byte) main::r#2 = '-' @@ -2321,13 +2315,13 @@ Constant (const byte*) memset::dst#0 = (byte*)memset::str#0 Constant (const void*) memset::return#2 = memset::str#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating [3] if((const word) memset::num#0<=(byte) 0) goto memset::@1 -if() condition always true - replacing block destination [397] if(true) goto main::@43 +if() condition always true - replacing block destination [396] if(true) goto main::@43 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantStringConsolidation -Resolved ranged next value [391] main::i#1 ← ++ main::i#10 to ++ -Resolved ranged comparison value [393] if(main::i#1!=rangelast(0,4)) goto main::@1 to (number) 5 -Rewriting conditional comparison [166] if((byte) main::a#10<=(byte) $37) goto main::@7 -Rewriting conditional comparison [226] if((byte) main::a#10>(byte) $37) goto main::@11 +Resolved ranged next value [390] main::i#1 ← ++ main::i#10 to ++ +Resolved ranged comparison value [392] if(main::i#1!=rangelast(0,4)) goto main::@1 to (number) 5 +Rewriting conditional comparison [165] if((byte) main::a#10<=(byte) $37) goto main::@7 +Rewriting conditional comparison [225] if((byte) main::a#10>(byte) $37) goto main::@11 Eliminating unused constant (const void*) memset::return#2 Eliminating unused constant (const byte) main::r#0 Successful SSA optimization PassNEliminateUnusedVars @@ -4566,6 +4560,7 @@ main: { // [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#150 [phi:main::@68->main::@1#2] -- register_copy // [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@68->main::@1#3] -- register_copy jmp __b1 + cs: .byte 7, $c7, $37, $97, $67 op: .text "< " .byte 0 op4: .text "> " @@ -4576,7 +4571,6 @@ main: { .byte 0 op16: .text "==" .byte 0 - cs: .byte 7, $c7, $37, $97, $67 } // print_ln // Print a newline @@ -6134,6 +6128,7 @@ main: { // [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#150 [phi:main::@68->main::@1#2] -- register_copy // [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@68->main::@1#3] -- register_copy jmp __b1 + cs: .byte 7, $c7, $37, $97, $67 op: .text "< " .byte 0 op4: .text "> " @@ -6144,7 +6139,6 @@ main: { .byte 0 op16: .text "==" .byte 0 - cs: .byte 7, $c7, $37, $97, $67 } // print_ln // Print a newline @@ -7840,6 +7834,7 @@ main: { // [6] phi (byte*) print_char_cursor#120 = (byte*~) print_char_cursor#150 [phi:main::@68->main::@1#2] -- register_copy // [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@68->main::@1#3] -- register_copy jmp __b1 + cs: .byte 7, $c7, $37, $97, $67 op: .text "< " .byte 0 op4: .text "> " @@ -7850,7 +7845,6 @@ main: { .byte 0 op16: .text "==" .byte 0 - cs: .byte 7, $c7, $37, $97, $67 } // print_ln // Print a newline diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index fa8b478c6..97995876b 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -3,10 +3,10 @@ Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + 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) -Fixing pointer array-indexing *((word[]) test_16u::dividends + (byte) test_16u::i) -Fixing pointer array-indexing *((word[]) test_16u::divisors + (byte) test_16u::i) -Fixing pointer array-indexing *((signed word[]) test_16s::dividends + (byte) test_16s::i) -Fixing pointer array-indexing *((signed word[]) test_16s::divisors + (byte) test_16s::i) +Fixing pointer array-indexing *((const word[]) test_16u::dividends + (byte) test_16u::i) +Fixing pointer array-indexing *((const word[]) test_16u::divisors + (byte) test_16u::i) +Fixing pointer array-indexing *((const signed word[]) test_16s::dividends + (byte) test_16s::i) +Fixing pointer array-indexing *((const signed word[]) test_16s::divisors + (byte) test_16s::i) Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) 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 @@ -960,8 +960,6 @@ test_8u: scope:[test_8u] from main::@1 (byte*) print_line_cursor#82 ← phi( main::@1/(byte*) print_line_cursor#5 ) (byte*) print_char_cursor#155 ← phi( main::@1/(byte*) print_char_cursor#23 ) (byte) rem8u#45 ← phi( main::@1/(byte) rem8u#33 ) - (byte[]) test_8u::dividends ← { (number) $ff, (number) $ff, (number) $ff, (number) $ff, (number) $ff, (number) $ff } - (byte[]) test_8u::divisors ← { (number) 5, (number) 7, (number) $b, (number) $d, (number) $11, (number) $13 } (byte) test_8u::i#0 ← (byte) 0 to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 @@ -969,8 +967,8 @@ test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 (byte*) print_char_cursor#149 ← phi( test_8u/(byte*) print_char_cursor#155 test_8u::@11/(byte*) print_char_cursor#36 ) (byte) rem8u#36 ← phi( test_8u/(byte) rem8u#45 test_8u::@11/(byte) rem8u#38 ) (byte) test_8u::i#2 ← phi( test_8u/(byte) test_8u::i#0 test_8u::@11/(byte) test_8u::i#1 ) - (byte) test_8u::dividend#0 ← *((byte[]) test_8u::dividends + (byte) test_8u::i#2) - (byte) test_8u::divisor#0 ← *((byte[]) test_8u::divisors + (byte) test_8u::i#2) + (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends + (byte) test_8u::i#2) + (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors + (byte) test_8u::i#2) (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 call div8u @@ -1084,8 +1082,6 @@ test_16u: scope:[test_16u] from main::@2 (byte*) print_line_cursor#83 ← phi( main::@2/(byte*) print_line_cursor#6 ) (byte*) print_char_cursor#156 ← phi( main::@2/(byte*) print_char_cursor#24 ) (word) rem16u#49 ← phi( main::@2/(word) rem16u#38 ) - (word[]) test_16u::dividends ← { (number) $ffff, (number) $ffff, (number) $ffff, (number) $ffff, (number) $ffff, (number) $ffff } - (word[]) test_16u::divisors ← { (number) 5, (number) 7, (number) $b, (number) $d, (number) $11, (number) $13 } (byte) test_16u::i#0 ← (byte) 0 to:test_16u::@1 test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 @@ -1094,9 +1090,9 @@ test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 (word) rem16u#40 ← phi( test_16u/(word) rem16u#49 test_16u::@11/(word) rem16u#42 ) (byte) test_16u::i#2 ← phi( test_16u/(byte) test_16u::i#0 test_16u::@11/(byte) test_16u::i#1 ) (byte~) test_16u::$10 ← (byte) test_16u::i#2 * (const byte) SIZEOF_WORD - (word) test_16u::dividend#0 ← *((word[]) test_16u::dividends + (byte~) test_16u::$10) + (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends + (byte~) test_16u::$10) (byte~) test_16u::$11 ← (byte) test_16u::i#2 * (const byte) SIZEOF_WORD - (word) test_16u::divisor#0 ← *((word[]) test_16u::divisors + (byte~) test_16u::$11) + (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors + (byte~) test_16u::$11) (word) div16u::dividend#0 ← (word) test_16u::dividend#0 (word) div16u::divisor#0 ← (word) test_16u::divisor#0 call div16u @@ -1211,8 +1207,6 @@ test_8s: scope:[test_8s] from main::@3 (byte*) print_char_cursor#157 ← phi( main::@3/(byte*) print_char_cursor#25 ) (signed byte) rem8s#23 ← phi( main::@3/(signed byte) rem8s#16 ) (byte) rem8u#48 ← phi( main::@3/(byte) rem8u#34 ) - (signed byte[]) test_8s::dividends ← { (number) $7f, (number) -$7f, (number) -$7f, (number) $7f, (number) $7f, (number) $7f } - (signed byte[]) test_8s::divisors ← { (number) 5, (number) 7, (number) -$b, (number) -$d, (number) $11, (number) $13 } (byte) test_8s::i#0 ← (byte) 0 to:test_8s::@1 test_8s::@1: scope:[test_8s] from test_8s test_8s::@11 @@ -1221,8 +1215,8 @@ test_8s::@1: scope:[test_8s] from test_8s test_8s::@11 (signed byte) rem8s#18 ← phi( test_8s/(signed byte) rem8s#23 test_8s::@11/(signed byte) rem8s#20 ) (byte) rem8u#39 ← phi( test_8s/(byte) rem8u#48 test_8s::@11/(byte) rem8u#40 ) (byte) test_8s::i#2 ← phi( test_8s/(byte) test_8s::i#0 test_8s::@11/(byte) test_8s::i#1 ) - (signed byte) test_8s::dividend#0 ← *((signed byte[]) test_8s::dividends + (byte) test_8s::i#2) - (signed byte) test_8s::divisor#0 ← *((signed byte[]) test_8s::divisors + (byte) test_8s::i#2) + (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends + (byte) test_8s::i#2) + (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors + (byte) test_8s::i#2) (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 call div8s @@ -1349,8 +1343,6 @@ test_16s: scope:[test_16s] from main::@4 (byte*) print_char_cursor#158 ← phi( main::@4/(byte*) print_char_cursor#26 ) (signed word) rem16s#27 ← phi( main::@4/(signed word) rem16s#21 ) (word) rem16u#52 ← phi( main::@4/(word) rem16u#39 ) - (signed word[]) test_16s::dividends ← { (number) $7fff, (number) $7fff, (number) -$7fff, (number) -$7fff, (number) $7fff, (number) -$7fff } - (signed word[]) test_16s::divisors ← { (number) 5, (number) -7, (number) $b, (number) -$d, (number) -$11, (number) $13 } (byte) test_16s::i#0 ← (byte) 0 to:test_16s::@1 test_16s::@1: scope:[test_16s] from test_16s test_16s::@11 @@ -1360,9 +1352,9 @@ test_16s::@1: scope:[test_16s] from test_16s test_16s::@11 (word) rem16u#43 ← phi( test_16s/(word) rem16u#52 test_16s::@11/(word) rem16u#44 ) (byte) test_16s::i#2 ← phi( test_16s/(byte) test_16s::i#0 test_16s::@11/(byte) test_16s::i#1 ) (byte~) test_16s::$10 ← (byte) test_16s::i#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word) test_16s::dividend#0 ← *((signed word[]) test_16s::dividends + (byte~) test_16s::$10) + (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends + (byte~) test_16s::$10) (byte~) test_16s::$11 ← (byte) test_16s::i#2 * (const byte) SIZEOF_SIGNED_WORD - (signed word) test_16s::divisor#0 ← *((signed word[]) test_16s::divisors + (byte~) test_16s::$11) + (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors + (byte~) test_16s::$11) (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 call div16s @@ -2547,13 +2539,13 @@ SYMBOL TABLE SSA (signed word) test_16s::dividend (signed word) test_16s::dividend#0 (signed word) test_16s::dividend#1 -(signed word[]) test_16s::dividends +(const signed word[]) test_16s::dividends = { (signed word)(number) $7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff, (signed word)(number) -$7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff } (signed word) test_16s::divisor (signed word) test_16s::divisor#0 (signed word) test_16s::divisor#1 (signed word) test_16s::divisor#2 (signed word) test_16s::divisor#3 -(signed word[]) test_16s::divisors +(const signed word[]) test_16s::divisors = { (signed word)(number) 5, (signed word)(number) -7, (signed word)(number) $b, (signed word)(number) -$d, (signed word)(number) -$11, (signed word)(number) $13 } (byte) test_16s::i (byte) test_16s::i#0 (byte) test_16s::i#1 @@ -2595,13 +2587,13 @@ SYMBOL TABLE SSA (word) test_16u::dividend (word) test_16u::dividend#0 (word) test_16u::dividend#1 -(word[]) test_16u::dividends +(const word[]) test_16u::dividends = { (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff } (word) test_16u::divisor (word) test_16u::divisor#0 (word) test_16u::divisor#1 (word) test_16u::divisor#2 (word) test_16u::divisor#3 -(word[]) test_16u::divisors +(const word[]) test_16u::divisors = { (word)(number) 5, (word)(number) 7, (word)(number) $b, (word)(number) $d, (word)(number) $11, (word)(number) $13 } (byte) test_16u::i (byte) test_16u::i#0 (byte) test_16u::i#1 @@ -2641,13 +2633,13 @@ SYMBOL TABLE SSA (signed byte) test_8s::dividend (signed byte) test_8s::dividend#0 (signed byte) test_8s::dividend#1 -(signed byte[]) test_8s::dividends +(const signed byte[]) test_8s::dividends = { (signed byte)(number) $7f, (signed byte)(number) -$7f, (signed byte)(number) -$7f, (signed byte)(number) $7f, (signed byte)(number) $7f, (signed byte)(number) $7f } (signed byte) test_8s::divisor (signed byte) test_8s::divisor#0 (signed byte) test_8s::divisor#1 (signed byte) test_8s::divisor#2 (signed byte) test_8s::divisor#3 -(signed byte[]) test_8s::divisors +(const signed byte[]) test_8s::divisors = { (signed byte)(number) 5, (signed byte)(number) 7, (signed byte)(number) -$b, (signed byte)(number) -$d, (signed byte)(number) $11, (signed byte)(number) $13 } (byte) test_8s::i (byte) test_8s::i#0 (byte) test_8s::i#1 @@ -2687,13 +2679,13 @@ SYMBOL TABLE SSA (byte) test_8u::dividend (byte) test_8u::dividend#0 (byte) test_8u::dividend#1 -(byte[]) test_8u::dividends +(const byte[]) test_8u::dividends = { (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff } (byte) test_8u::divisor (byte) test_8u::divisor#0 (byte) test_8u::divisor#1 (byte) test_8u::divisor#2 (byte) test_8u::divisor#3 -(byte[]) test_8u::divisors +(const byte[]) test_8u::divisors = { (byte)(number) 5, (byte)(number) 7, (byte)(number) $b, (byte)(number) $d, (byte)(number) $11, (byte)(number) $13 } (byte) test_8u::i (byte) test_8u::i#0 (byte) test_8u::i#1 @@ -2772,15 +2764,6 @@ Adding number conversion cast (unumber) divr16s::$15 in (number~) divr16s::$15 Adding number conversion cast (unumber) 0 in (bool~) divr16s::$5 ← (byte) divr16s::neg#4 == (number) 0 Adding number conversion cast (snumber) 0 in (signed word) divr16s::rem#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) test_8u::dividends ← (byte[]){ (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff } -Added casts to value list in (byte[]) test_8u::divisors ← (byte[]){ (byte)(number) 5, (byte)(number) 7, (byte)(number) $b, (byte)(number) $d, (byte)(number) $11, (byte)(number) $13 } -Added casts to value list in (word[]) test_16u::dividends ← (word[]){ (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff } -Added casts to value list in (word[]) test_16u::divisors ← (word[]){ (word)(number) 5, (word)(number) 7, (word)(number) $b, (word)(number) $d, (word)(number) $11, (word)(number) $13 } -Added casts to value list in (signed byte[]) test_8s::dividends ← (signed byte[]){ (signed byte)(number) $7f, (signed byte)(number) -$7f, (signed byte)(number) -$7f, (signed byte)(number) $7f, (signed byte)(number) $7f, (signed byte)(number) $7f } -Added casts to value list in (signed byte[]) test_8s::divisors ← (signed byte[]){ (signed byte)(number) 5, (signed byte)(number) 7, (signed byte)(number) -$b, (signed byte)(number) -$d, (signed byte)(number) $11, (signed byte)(number) $13 } -Added casts to value list in (signed word[]) test_16s::dividends ← (signed word[]){ (signed word)(number) $7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff, (signed word)(number) -$7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff } -Added casts to value list in (signed word[]) test_16s::divisors ← (signed word[]){ (signed word)(number) 5, (signed word)(number) -7, (signed word)(number) $b, (signed word)(number) -$d, (signed word)(number) -$11, (signed word)(number) $13 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 @@ -2824,54 +2807,6 @@ Inlining cast (signed word~) divr16s::$16 ← (signed word)(word) rem16u#22 Inlining cast (signed word~) divr16s::$18 ← (signed word)(word) divr16s::resultu#2 Inlining cast (signed word) divr16s::rem#0 ← (snumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant integer cast 0 -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant integer cast 0 -Simplifying constant integer cast $28 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 4 -Simplifying constant integer cast $f -Simplifying constant integer cast $3e8 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast $80 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 -Simplifying constant integer cast 1 -Simplifying constant integer cast 0 -Simplifying constant integer cast 0 Simplifying constant integer cast $ff Simplifying constant integer cast $ff Simplifying constant integer cast $ff @@ -2920,6 +2855,54 @@ Simplifying constant integer cast $b Simplifying constant integer cast -$d Simplifying constant integer cast -$11 Simplifying constant integer cast $13 +Simplifying constant integer cast 0 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast $28 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Simplifying constant integer cast $3e8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast $80 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 @@ -3375,8 +3358,8 @@ Identical Phi Values (word) rem16u#43 (word) rem16u#1 Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination -Identified duplicate assignment right side [480] (byte~) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD -Identified duplicate assignment right side [594] (byte~) test_16s::$11 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD +Identified duplicate assignment right side [476] (byte~) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD +Identified duplicate assignment right side [586] (byte~) test_16s::$11 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) memset::$1 [3] if((word) memset::num#0<=(byte) 0) goto memset::@1 Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5 @@ -3395,22 +3378,13 @@ Simple Condition (bool~) div8s::$1 [264] if((signed byte) div8s::divisor#0<(sign Simple Condition (bool~) div8s::$3 [284] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5 Simple Condition (bool~) divr16s::$3 [328] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3 Simple Condition (bool~) divr16s::$5 [349] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5 -Simple Condition (bool~) test_8u::$9 [467] if((byte) test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 -Simple Condition (bool~) test_16u::$9 [524] if((byte) test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 -Simple Condition (bool~) test_8s::$9 [580] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 -Simple Condition (bool~) test_16s::$9 [639] if((byte) test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 +Simple Condition (bool~) test_8u::$9 [465] if((byte) test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 +Simple Condition (bool~) test_16u::$9 [520] if((byte) test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 +Simple Condition (bool~) test_8s::$9 [574] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 +Simple Condition (bool~) test_16s::$9 [631] if((byte) test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting || if()-condition to two if()s [310] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 Successful SSA optimization Pass2ConditionalAndOrRewriting -Identified constant from value list (byte[]) { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff } -Identified constant from value list (byte[]) { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 } -Identified constant from value list (word[]) { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff } -Identified constant from value list (word[]) { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 } -Identified constant from value list (signed byte[]) { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f } -Identified constant from value list (signed byte[]) { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 } -Identified constant from value list (signed word[]) { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff } -Identified constant from value list (signed word[]) { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 } -Successful SSA optimization Pass2ConstantInitializerValueLists Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = ' ' @@ -3438,26 +3412,18 @@ Constant (const word) divr16s::remu#0 = 0 Constant (const byte) divr16s::neg#1 = 1 Constant (const word) divr16s::divisoru#0 = 0 Constant (const signed word) divr16s::rem#0 = 0 -Constant (const byte[]) test_8u::dividends = { $ff, $ff, $ff, $ff, $ff, $ff } -Constant (const byte[]) test_8u::divisors = { 5, 7, $b, $d, $11, $13 } Constant (const byte) test_8u::i#0 = 0 Constant (const byte*) print_str::str#1 = test_8u::str Constant (const byte*) print_str::str#2 = test_8u::str1 Constant (const byte*) print_str::str#3 = test_8u::str2 -Constant (const word[]) test_16u::dividends = { $ffff, $ffff, $ffff, $ffff, $ffff, $ffff } -Constant (const word[]) test_16u::divisors = { 5, 7, $b, $d, $11, $13 } Constant (const byte) test_16u::i#0 = 0 Constant (const byte*) print_str::str#4 = test_16u::str Constant (const byte*) print_str::str#5 = test_16u::str1 Constant (const byte*) print_str::str#6 = test_16u::str2 -Constant (const signed byte[]) test_8s::dividends = { $7f, -$7f, -$7f, $7f, $7f, $7f } -Constant (const signed byte[]) test_8s::divisors = { 5, 7, -$b, -$d, $11, $13 } Constant (const byte) test_8s::i#0 = 0 Constant (const byte*) print_str::str#7 = test_8s::str Constant (const byte*) print_str::str#8 = test_8s::str1 Constant (const byte*) print_str::str#9 = test_8s::str2 -Constant (const signed word[]) test_16s::dividends = { $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff } -Constant (const signed word[]) test_16s::divisors = { 5, -7, $b, -$d, -$11, $13 } Constant (const byte) test_16s::i#0 = 0 Constant (const byte*) print_str::str#10 = test_16s::str Constant (const byte*) print_str::str#11 = test_16s::str1 @@ -3477,14 +3443,14 @@ Resolved ranged next value [179] divr8u::i#1 ← ++ divr8u::i#2 to ++ Resolved ranged comparison value [181] if(divr8u::i#1!=rangelast(0,7)) goto divr8u::@1 to (number) 8 Resolved ranged next value [218] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [220] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 -Resolved ranged next value [465] test_8u::i#1 ← ++ test_8u::i#10 to ++ -Resolved ranged comparison value [467] if(test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 to (number) 6 -Resolved ranged next value [522] test_16u::i#1 ← ++ test_16u::i#10 to ++ -Resolved ranged comparison value [524] if(test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 to (number) 6 -Resolved ranged next value [578] test_8s::i#1 ← ++ test_8s::i#10 to ++ -Resolved ranged comparison value [580] if(test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 to (number) 6 -Resolved ranged next value [637] test_16s::i#1 ← ++ test_16s::i#10 to ++ -Resolved ranged comparison value [639] if(test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 to (number) 6 +Resolved ranged next value [463] test_8u::i#1 ← ++ test_8u::i#10 to ++ +Resolved ranged comparison value [465] if(test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 to (number) 6 +Resolved ranged next value [518] test_16u::i#1 ← ++ test_16u::i#10 to ++ +Resolved ranged comparison value [520] if(test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 to (number) 6 +Resolved ranged next value [572] test_8s::i#1 ← ++ test_8s::i#10 to ++ +Resolved ranged comparison value [574] if(test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 to (number) 6 +Resolved ranged next value [629] test_16s::i#1 ← ++ test_16s::i#10 to ++ +Resolved ranged comparison value [631] if(test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 to (number) 6 Simplifying constant evaluating to zero (word)(const signed word) divr16s::rem#0 in Successful SSA optimization PassNSimplifyConstantZero Eliminating unused variable - keeping the phi block (byte) rem8u#31 diff --git a/src/test/ref/test-keyboard-space.log b/src/test/ref/test-keyboard-space.log index 927e8bcd8..e13092e93 100644 --- a/src/test/ref/test-keyboard-space.log +++ b/src/test/ref/test-keyboard-space.log @@ -2,6 +2,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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) keyboard_matrix_read::@1 Culled Empty Block (label) @6 @@ -21,10 +22,6 @@ Culled Empty Block (label) main::@12 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } to:@12 (void()) keyboard_init() @@ -39,7 +36,7 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#1) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -65,7 +62,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 ) (byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 ) (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4 - (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) + (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3 to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2 @@ -107,7 +104,7 @@ main::@6: scope:[main] from main::@14 main::@return: scope:[main] from main::@1 return to:@return -@12: scope:[] from @4 +@12: scope:[] from @begin call main to:@13 @13: scope:[] from @12 @@ -117,7 +114,6 @@ main::@return: scope:[main] from main::@1 SYMBOL TABLE SSA (label) @12 (label) @13 -(label) @4 (label) @begin (label) @end (const byte*) BGCOL = (byte*)(number) $d021 @@ -152,7 +148,7 @@ SYMBOL TABLE SSA (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::rowidx (byte) keyboard_key_pressed::rowidx#0 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -167,7 +163,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() (bool~) main::$1 (byte~) main::$2 @@ -189,9 +185,6 @@ Adding number conversion cast (unumber) 3 in (byte~) keyboard_key_pressed::$1 Adding number conversion cast (unumber) $ff in (bool~) main::$1 ← *((const byte*) RASTER) != (number) $ff Adding number conversion cast (unumber) 0 in (bool~) main::$3 ← (byte~) main::$2 != (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) CIA1_PORT_A_DDR) ← (unumber)(number) $ff Inlining cast *((const byte*) CIA1_PORT_B_DDR) ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast @@ -242,17 +235,12 @@ Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 Identical Phi Values (byte) keyboard_key_pressed::key#1 (byte) keyboard_key_pressed::key#0 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) main::$1 [31] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 -Simple Condition (bool~) main::$3 [38] if((byte~) main::$2!=(byte) 0) goto main::@8 +Simple Condition (bool~) main::$1 [29] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@4 +Simple Condition (bool~) main::$3 [36] if((byte~) main::$2!=(byte) 0) goto main::@8 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte) keyboard_key_pressed::key#0 = KEY_SPACE Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [29] if(true) goto main::@4 +if() condition always true - replacing block destination [27] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -271,7 +259,6 @@ Consolidated array index constant in *(keyboard_matrix_row_bitmask+keyboard_key_ Consolidated array index constant in *(keyboard_matrix_col_bitmask+keyboard_key_pressed::colidx#0) Successful SSA optimization Pass2ConstantAdditionElimination Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @12 Adding NOP phi() at start of @13 Adding NOP phi() at start of @end @@ -281,13 +268,12 @@ Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@5 Adding NOP phi() at start of keyboard_key_pressed CALL GRAPH -Calls in [] to main:3 -Calls in [main] to keyboard_init:7 keyboard_key_pressed:12 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:19 +Calls in [] to main:2 +Calls in [main] to keyboard_init:6 keyboard_key_pressed:11 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:18 Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes -Culled Empty Block (label) @4 Culled Empty Block (label) @13 Culled Empty Block (label) main::@13 Culled Empty Block (label) main::@1 diff --git a/src/test/ref/test-keyboard.log b/src/test/ref/test-keyboard.log index fe0849403..ef75fb9f7 100644 --- a/src/test/ref/test-keyboard.log +++ b/src/test/ref/test-keyboard.log @@ -2,6 +2,7 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa 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) keyboard_matrix_read::@1 Culled Empty Block (label) @6 @@ -27,11 +28,6 @@ Culled Empty Block (label) main::@28 CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@4 -@4: scope:[] from @begin - (byte[]) keyboard_char_keycodes ← { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (number) $3f, (const byte) KEY_POUND, (number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (number) $3f, (const byte) KEY_EQUALS, (number) $3f, (number) $3f } - (byte[8]) keyboard_matrix_row_bitmask ← { (number) $fe, (number) $fd, (number) $fb, (number) $f7, (number) $ef, (number) $df, (number) $bf, (number) $7f } - (byte[8]) keyboard_matrix_col_bitmask ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 } to:@12 (void()) keyboard_init() @@ -46,7 +42,7 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed main::@12 (byte) keyboard_matrix_read::rowid#2 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 main::@12/(byte) keyboard_matrix_read::rowid#1 ) - *((const byte*) CIA1_PORT_A) ← *((byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) + *((const byte*) CIA1_PORT_A) ← *((const byte[8]) keyboard_matrix_row_bitmask + (byte) keyboard_matrix_read::rowid#2) (byte~) keyboard_matrix_read::$0 ← ~ *((const byte*) CIA1_PORT_B) (byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#0 ← (byte) keyboard_matrix_read::row_pressed_bits#0 @@ -72,7 +68,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 ) (byte) keyboard_matrix_read::return#5 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 ) (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#5 - (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) + (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx#1) (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3 to:keyboard_key_pressed::@return keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2 @@ -84,7 +80,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) keyboard_get_keycode: scope:[keyboard_get_keycode] from main::@20 (byte) keyboard_get_keycode::ch#1 ← phi( main::@20/(byte) keyboard_get_keycode::ch#0 ) - (byte) keyboard_get_keycode::return#0 ← *((byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#1) + (byte) keyboard_get_keycode::return#0 ← *((const byte[]) keyboard_char_keycodes + (byte) keyboard_get_keycode::ch#1) to:keyboard_get_keycode::@return keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_keycode (byte) keyboard_get_keycode::return#3 ← phi( keyboard_get_keycode/(byte) keyboard_get_keycode::return#0 ) @@ -251,7 +247,7 @@ main::@26: scope:[main] from main::@21 main::@26 main::@return: scope:[main] from main::@7 return to:@return -@12: scope:[] from @4 +@12: scope:[] from @begin call main to:@13 @13: scope:[] from @12 @@ -261,7 +257,6 @@ main::@return: scope:[main] from main::@7 SYMBOL TABLE SSA (label) @12 (label) @13 -(label) @4 (label) @begin (label) @end (const byte*) CIA1_PORT_A = (byte*)(number) $dc00 @@ -319,7 +314,7 @@ SYMBOL TABLE SSA (const byte) KEY_Y = (number) $19 (const byte) KEY_Z = (number) $c (const byte*) RASTER = (byte*)(number) $d012 -(byte[]) keyboard_char_keycodes +(const byte[]) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f } (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -354,7 +349,7 @@ SYMBOL TABLE SSA (byte) keyboard_key_pressed::return#4 (byte) keyboard_key_pressed::rowidx (byte) keyboard_key_pressed::rowidx#0 -(byte[8]) keyboard_matrix_col_bitmask +(const byte[8]) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) (byte~) keyboard_matrix_read::$0 (label) keyboard_matrix_read::@return @@ -372,7 +367,7 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#0 (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#2 -(byte[8]) keyboard_matrix_row_bitmask +(const byte[8]) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } (void()) main() (bool~) main::$1 (byte*~) main::$10 @@ -506,10 +501,6 @@ Adding number conversion cast (unumber) $3f in (bool~) main::$12 ← (byte) main Adding number conversion cast (unumber) 0 in (bool~) main::$15 ← (byte~) main::$14 != (number) 0 Adding number conversion cast (unumber) 5 in (bool~) main::$18 ← (byte) main::i#2 < (number) 5 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) keyboard_char_keycodes ← (byte[]){ (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f } -Added casts to value list in (byte[8]) keyboard_matrix_row_bitmask ← (byte[8]){ (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f } -Added casts to value list in (byte[8]) keyboard_matrix_col_bitmask ← (byte[8]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast *((const byte*) CIA1_PORT_A_DDR) ← (unumber)(number) $ff Inlining cast *((const byte*) CIA1_PORT_B_DDR) ← (unumber)(number) 0 Inlining cast (byte*) main::sc#0 ← (byte*)(number) $400 @@ -586,8 +577,8 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#1 & (byte) 7 Inferred type updated to byte in (unumber~) main::$4 ← (byte) main::row_pressed_bits#2 & (byte) $80 Inferred type updated to byte in (unumber~) main::$6 ← (byte) main::row_pressed_bits#3 * (byte) 2 -Inversing boolean not [88] (bool~) main::$13 ← (byte) main::key#0 == (byte) $3f from [87] (bool~) main::$12 ← (byte) main::key#0 != (byte) $3f -Inversing boolean not [101] (bool~) main::$16 ← (byte~) main::$14 == (byte) 0 from [100] (bool~) main::$15 ← (byte~) main::$14 != (byte) 0 +Inversing boolean not [85] (bool~) main::$13 ← (byte) main::key#0 == (byte) $3f from [84] (bool~) main::$12 ← (byte) main::key#0 != (byte) $3f +Inversing boolean not [98] (bool~) main::$16 ← (byte~) main::$14 == (byte) 0 from [97] (bool~) main::$15 ← (byte~) main::$14 != (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#4 (byte) keyboard_matrix_read::return#1 Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 @@ -630,23 +621,16 @@ Identical Phi Values (byte) main::row#3 (byte) main::row#2 Identical Phi Values (byte*) main::screen#11 (byte*) main::screen#2 Identical Phi Values (byte*) main::screen#8 (byte*) main::screen#11 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) main::$1 [37] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 -Simple Condition (bool~) main::$2 [44] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@10 -Simple Condition (bool~) main::$5 [58] if((byte~) main::$4!=(byte) 0) goto main::@14 -Simple Condition (bool~) main::$7 [68] if((byte) main::col#1!=rangelast(0,7)) goto main::@13 -Simple Condition (bool~) main::$9 [74] if((byte) main::row#1!=rangelast(0,7)) goto main::@12 -Simple Condition (bool~) main::$13 [89] if((byte) main::key#0==(byte) $3f) goto main::@21 -Simple Condition (bool~) main::$17 [93] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@20 -Simple Condition (bool~) main::$16 [102] if((byte~) main::$14==(byte) 0) goto main::@21 -Simple Condition (bool~) main::$18 [110] if((byte) main::i#2<(byte) 5) goto main::@26 +Simple Condition (bool~) main::$1 [34] if((byte*) main::sc#2<(word)(number) $400+(number) $3e8) goto main::@2 +Simple Condition (bool~) main::$2 [41] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@10 +Simple Condition (bool~) main::$5 [55] if((byte~) main::$4!=(byte) 0) goto main::@14 +Simple Condition (bool~) main::$7 [65] if((byte) main::col#1!=rangelast(0,7)) goto main::@13 +Simple Condition (bool~) main::$9 [71] if((byte) main::row#1!=rangelast(0,7)) goto main::@12 +Simple Condition (bool~) main::$13 [86] if((byte) main::key#0==(byte) $3f) goto main::@21 +Simple Condition (bool~) main::$17 [90] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@20 +Simple Condition (bool~) main::$16 [99] if((byte~) main::$14==(byte) 0) goto main::@21 +Simple Condition (bool~) main::$18 [107] if((byte) main::i#2<(byte) 5) goto main::@26 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (byte[]) { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f } -Identified constant from value list (byte[8]) { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f } -Identified constant from value list (byte[8]) { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) keyboard_char_keycodes = { KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f } -Constant (const byte[8]) keyboard_matrix_row_bitmask = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f } -Constant (const byte[8]) keyboard_matrix_col_bitmask = { 1, 2, 4, 8, $10, $20, $40, $80 } Constant (const byte*) main::sc#0 = (byte*) 1024 Constant (const byte*) main::screen#0 = (byte*) 1024 Constant (const byte) main::row#0 = 0 @@ -654,14 +638,14 @@ Constant (const byte) main::col#0 = 0 Constant (const byte) main::i#0 = 0 Constant (const byte) main::ch#0 = 0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [42] if(true) goto main::@10 +if() condition always true - replacing block destination [39] if(true) goto main::@10 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [66] main::col#1 ← ++ main::col#2 to ++ -Resolved ranged comparison value [68] if(main::col#1!=rangelast(0,7)) goto main::@13 to (number) 8 -Resolved ranged next value [72] main::row#1 ← ++ main::row#2 to ++ -Resolved ranged comparison value [74] if(main::row#1!=rangelast(0,7)) goto main::@12 to (number) 8 -Resolved ranged next value [91] main::ch#1 ← ++ main::ch#2 to ++ -Resolved ranged comparison value [93] if(main::ch#1!=rangelast(0,$3f)) goto main::@20 to (number) $40 +Resolved ranged next value [63] main::col#1 ← ++ main::col#2 to ++ +Resolved ranged comparison value [65] if(main::col#1!=rangelast(0,7)) goto main::@13 to (number) 8 +Resolved ranged next value [69] main::row#1 ← ++ main::row#2 to ++ +Resolved ranged comparison value [71] if(main::row#1!=rangelast(0,7)) goto main::@12 to (number) 8 +Resolved ranged next value [88] main::ch#1 ← ++ main::ch#2 to ++ +Resolved ranged comparison value [90] if(main::ch#1!=rangelast(0,$3f)) goto main::@20 to (number) $40 Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Adding number conversion cast (unumber) 8 in if((byte) main::col#1!=(number) 8) goto main::@13 @@ -699,7 +683,6 @@ Added new block during phi lifting main::@39(between main::@34 and main::@21) Added new block during phi lifting main::@40(between main::@21 and main::@26) Added new block during phi lifting main::@41(between main::@26 and main::@26) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @4 Adding NOP phi() at start of @12 Adding NOP phi() at start of @13 Adding NOP phi() at start of @end @@ -709,28 +692,27 @@ Adding NOP phi() at start of main::@31 Adding NOP phi() at start of main::@7 Adding NOP phi() at start of main::@11 CALL GRAPH -Calls in [] to main:3 -Calls in [main] to keyboard_init:10 keyboard_matrix_read:18 keyboard_get_keycode:35 keyboard_key_pressed:40 -Calls in [keyboard_key_pressed] to keyboard_matrix_read:72 +Calls in [] to main:2 +Calls in [main] to keyboard_init:9 keyboard_matrix_read:17 keyboard_get_keycode:34 keyboard_key_pressed:39 +Calls in [keyboard_key_pressed] to keyboard_matrix_read:71 Created 10 initial phi equivalence classes -Coalesced [17] keyboard_matrix_read::rowid#4 ← keyboard_matrix_read::rowid#1 -Coalesced [21] main::row_pressed_bits#7 ← main::row_pressed_bits#0 -Coalesced [46] main::i#11 ← main::i#1 -Coalesced [50] main::i#14 ← main::i#6 -Coalesced [55] main::i#15 ← main::i#2 -Coalesced [56] main::ch#8 ← main::ch#1 -Coalesced [57] main::i#10 ← main::i#6 -Coalesced (already) [58] main::i#13 ← main::i#3 -Coalesced (already) [59] main::i#12 ← main::i#3 -Coalesced [60] main::row#9 ← main::row#1 -Coalesced [61] main::screen#18 ← main::screen#1 -Coalesced [62] main::row_pressed_bits#6 ← main::row_pressed_bits#1 -Coalesced [63] main::col#6 ← main::col#1 -Coalesced [67] main::sc#4 ← main::sc#1 -Coalesced [71] keyboard_matrix_read::rowid#3 ← keyboard_matrix_read::rowid#0 +Coalesced [16] keyboard_matrix_read::rowid#4 ← keyboard_matrix_read::rowid#1 +Coalesced [20] main::row_pressed_bits#7 ← main::row_pressed_bits#0 +Coalesced [45] main::i#11 ← main::i#1 +Coalesced [49] main::i#14 ← main::i#6 +Coalesced [54] main::i#15 ← main::i#2 +Coalesced [55] main::ch#8 ← main::ch#1 +Coalesced [56] main::i#10 ← main::i#6 +Coalesced (already) [57] main::i#13 ← main::i#3 +Coalesced (already) [58] main::i#12 ← main::i#3 +Coalesced [59] main::row#9 ← main::row#1 +Coalesced [60] main::screen#18 ← main::screen#1 +Coalesced [61] main::row_pressed_bits#6 ← main::row_pressed_bits#1 +Coalesced [62] main::col#6 ← main::col#1 +Coalesced [66] main::sc#4 ← main::sc#1 +Coalesced [70] keyboard_matrix_read::rowid#3 ← keyboard_matrix_read::rowid#0 Coalesced down to 8 phi equivalence classes -Culled Empty Block (label) @4 Culled Empty Block (label) @13 Culled Empty Block (label) main::@31 Culled Empty Block (label) main::@7 diff --git a/src/test/ref/voronoi.log b/src/test/ref/voronoi.log index fac267e93..0fa9c6cf7 100644 --- a/src/test/ref/voronoi.log +++ b/src/test/ref/voronoi.log @@ -25,9 +25,6 @@ Culled Empty Block (label) findcol::@22 CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) XPOS ← { (number) 5, (number) $f, (number) 6, (number) $22, (number) $15, (number) $1f } - (byte[]) YPOS ← { (number) 5, (number) 8, (number) $e, (number) 2, (number) $11, (number) $16 } - (byte[]) COLS ← { (number) 1, (number) 2, (number) 3, (number) 4, (number) 5, (number) 7 } to:@5 (void()) main() @@ -51,63 +48,63 @@ main::@return: scope:[main] from main::@5 (void()) animate() animate: scope:[animate] from main::@4 - (number~) animate::$0 ← *((byte[]) XPOS + (number) 0) + (number) 1 - *((byte[]) XPOS + (number) 0) ← (number~) animate::$0 - (bool~) animate::$1 ← *((byte[]) XPOS + (number) 0) == (number) $28 + (number~) animate::$0 ← *((const byte[]) XPOS + (number) 0) + (number) 1 + *((const byte[]) XPOS + (number) 0) ← (number~) animate::$0 + (bool~) animate::$1 ← *((const byte[]) XPOS + (number) 0) == (number) $28 (bool~) animate::$2 ← ! (bool~) animate::$1 if((bool~) animate::$2) goto animate::@1 to:animate::@6 animate::@1: scope:[animate] from animate animate::@6 - (number~) animate::$3 ← *((byte[]) YPOS + (number) 0) + (number) 1 - *((byte[]) YPOS + (number) 0) ← (number~) animate::$3 - (bool~) animate::$4 ← *((byte[]) YPOS + (number) 0) == (number) $19 + (number~) animate::$3 ← *((const byte[]) YPOS + (number) 0) + (number) 1 + *((const byte[]) YPOS + (number) 0) ← (number~) animate::$3 + (bool~) animate::$4 ← *((const byte[]) YPOS + (number) 0) == (number) $19 (bool~) animate::$5 ← ! (bool~) animate::$4 if((bool~) animate::$5) goto animate::@2 to:animate::@7 animate::@6: scope:[animate] from animate - *((byte[]) XPOS + (number) 0) ← (number) 0 + *((const byte[]) XPOS + (number) 0) ← (number) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@7 - (number~) animate::$6 ← *((byte[]) XPOS + (number) 1) - (number) 1 - *((byte[]) XPOS + (number) 1) ← (number~) animate::$6 - (bool~) animate::$7 ← *((byte[]) XPOS + (number) 1) == (number) $ff + (number~) animate::$6 ← *((const byte[]) XPOS + (number) 1) - (number) 1 + *((const byte[]) XPOS + (number) 1) ← (number~) animate::$6 + (bool~) animate::$7 ← *((const byte[]) XPOS + (number) 1) == (number) $ff (bool~) animate::$8 ← ! (bool~) animate::$7 if((bool~) animate::$8) goto animate::@3 to:animate::@8 animate::@7: scope:[animate] from animate::@1 - *((byte[]) YPOS + (number) 0) ← (number) 0 + *((const byte[]) YPOS + (number) 0) ← (number) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@8 - (number~) animate::$9 ← *((byte[]) YPOS + (number) 2) + (number) 1 - *((byte[]) YPOS + (number) 2) ← (number~) animate::$9 - (bool~) animate::$10 ← *((byte[]) YPOS + (number) 2) == (number) $19 + (number~) animate::$9 ← *((const byte[]) YPOS + (number) 2) + (number) 1 + *((const byte[]) YPOS + (number) 2) ← (number~) animate::$9 + (bool~) animate::$10 ← *((const byte[]) YPOS + (number) 2) == (number) $19 (bool~) animate::$11 ← ! (bool~) animate::$10 if((bool~) animate::$11) goto animate::@4 to:animate::@9 animate::@8: scope:[animate] from animate::@2 - *((byte[]) XPOS + (number) 1) ← (number) $28 + *((const byte[]) XPOS + (number) 1) ← (number) $28 to:animate::@3 animate::@4: scope:[animate] from animate::@3 animate::@9 - (number~) animate::$12 ← *((byte[]) YPOS + (number) 3) - (number) 1 - *((byte[]) YPOS + (number) 3) ← (number~) animate::$12 - (bool~) animate::$13 ← *((byte[]) YPOS + (number) 3) == (number) $ff + (number~) animate::$12 ← *((const byte[]) YPOS + (number) 3) - (number) 1 + *((const byte[]) YPOS + (number) 3) ← (number~) animate::$12 + (bool~) animate::$13 ← *((const byte[]) YPOS + (number) 3) == (number) $ff (bool~) animate::$14 ← ! (bool~) animate::$13 if((bool~) animate::$14) goto animate::@return to:animate::@10 animate::@9: scope:[animate] from animate::@3 - *((byte[]) YPOS + (number) 2) ← (number) 0 + *((const byte[]) YPOS + (number) 2) ← (number) 0 to:animate::@4 animate::@10: scope:[animate] from animate::@4 - *((byte[]) YPOS + (number) 3) ← (number) $19 - (number~) animate::$15 ← *((byte[]) XPOS + (number) 3) + (number) 7 - *((byte[]) XPOS + (number) 3) ← (number~) animate::$15 - (bool~) animate::$16 ← *((byte[]) XPOS + (number) 3) >= (number) $28 + *((const byte[]) YPOS + (number) 3) ← (number) $19 + (number~) animate::$15 ← *((const byte[]) XPOS + (number) 3) + (number) 7 + *((const byte[]) XPOS + (number) 3) ← (number~) animate::$15 + (bool~) animate::$16 ← *((const byte[]) XPOS + (number) 3) >= (number) $28 (bool~) animate::$17 ← ! (bool~) animate::$16 if((bool~) animate::$17) goto animate::@return to:animate::@11 animate::@11: scope:[animate] from animate::@10 - (number~) animate::$18 ← *((byte[]) XPOS + (number) 3) - (number) $28 - *((byte[]) XPOS + (number) 3) ← (number~) animate::$18 + (number~) animate::$18 ← *((const byte[]) XPOS + (number) 3) - (number) $28 + *((const byte[]) XPOS + (number) 3) ← (number~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@10 animate::@11 animate::@4 return @@ -199,8 +196,8 @@ findcol::@2: scope:[findcol] from findcol::@1 (byte) findcol::y#5 ← phi( findcol::@1/(byte) findcol::y#8 ) (byte) findcol::x#1 ← phi( findcol::@1/(byte) findcol::x#5 ) (byte) findcol::i#3 ← phi( findcol::@1/(byte) findcol::i#2 ) - (byte) findcol::xp#0 ← *((byte[]) XPOS + (byte) findcol::i#3) - (byte) findcol::yp#0 ← *((byte[]) YPOS + (byte) findcol::i#3) + (byte) findcol::xp#0 ← *((const byte[]) XPOS + (byte) findcol::i#3) + (byte) findcol::yp#0 ← *((const byte[]) YPOS + (byte) findcol::i#3) (bool~) findcol::$1 ← (byte) findcol::x#1 == (byte) findcol::xp#0 (bool~) findcol::$2 ← ! (bool~) findcol::$1 if((bool~) findcol::$2) goto findcol::@4 @@ -323,7 +320,7 @@ findcol::@20: scope:[findcol] from findcol::@9 (byte) findcol::i#5 ← phi( findcol::@9/(byte) findcol::i#6 ) (byte) findcol::diff#8 ← phi( findcol::@9/(byte) findcol::diff#7 ) (byte) findcol::mindiff#1 ← (byte) findcol::diff#8 - (byte) findcol::mincol#1 ← *((byte[]) COLS + (byte) findcol::i#5) + (byte) findcol::mincol#1 ← *((const byte[]) COLS + (byte) findcol::i#5) to:findcol::@10 @5: scope:[] from @begin call main @@ -338,11 +335,11 @@ SYMBOL TABLE SSA (label) @begin (label) @end (const byte*) COLORS = (byte*)(number) $d800 -(byte[]) COLS +(const byte[]) COLS = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 7 } (const byte) FILL = (byte) $e6 (const byte*) SCREEN = (byte*)(number) $400 -(byte[]) XPOS -(byte[]) YPOS +(const byte[]) XPOS = { (byte)(number) 5, (byte)(number) $f, (byte)(number) 6, (byte)(number) $22, (byte)(number) $15, (byte)(number) $1f } +(const byte[]) YPOS = { (byte)(number) 5, (byte)(number) 8, (byte)(number) $e, (byte)(number) 2, (byte)(number) $11, (byte)(number) $16 } (void()) animate() (number~) animate::$0 (bool~) animate::$1 @@ -562,56 +559,56 @@ SYMBOL TABLE SSA (byte) render::y#4 (byte) render::y#5 -Adding number conversion cast (unumber) 1 in (number~) animate::$0 ← *((byte[]) XPOS + (number) 0) + (number) 1 -Adding number conversion cast (unumber) animate::$0 in (number~) animate::$0 ← *((byte[]) XPOS + (number) 0) + (unumber)(number) 1 -Adding number conversion cast (unumber) 0 in (unumber~) animate::$0 ← *((byte[]) XPOS + (number) 0) + (unumber)(number) 1 -Adding number conversion cast (unumber) 0 in *((byte[]) XPOS + (number) 0) ← (unumber~) animate::$0 -Adding number conversion cast (unumber) $28 in (bool~) animate::$1 ← *((byte[]) XPOS + (number) 0) == (number) $28 -Adding number conversion cast (unumber) 0 in (bool~) animate::$1 ← *((byte[]) XPOS + (number) 0) == (unumber)(number) $28 -Adding number conversion cast (unumber) 1 in (number~) animate::$3 ← *((byte[]) YPOS + (number) 0) + (number) 1 -Adding number conversion cast (unumber) animate::$3 in (number~) animate::$3 ← *((byte[]) YPOS + (number) 0) + (unumber)(number) 1 -Adding number conversion cast (unumber) 0 in (unumber~) animate::$3 ← *((byte[]) YPOS + (number) 0) + (unumber)(number) 1 -Adding number conversion cast (unumber) 0 in *((byte[]) YPOS + (number) 0) ← (unumber~) animate::$3 -Adding number conversion cast (unumber) $19 in (bool~) animate::$4 ← *((byte[]) YPOS + (number) 0) == (number) $19 -Adding number conversion cast (unumber) 0 in (bool~) animate::$4 ← *((byte[]) YPOS + (number) 0) == (unumber)(number) $19 -Adding number conversion cast (unumber) 0 in *((byte[]) XPOS + (number) 0) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte[]) XPOS + (number) 0) ← ((unumber)) (number) 0 -Adding number conversion cast (unumber) 1 in (number~) animate::$6 ← *((byte[]) XPOS + (number) 1) - (number) 1 -Adding number conversion cast (unumber) animate::$6 in (number~) animate::$6 ← *((byte[]) XPOS + (number) 1) - (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in (unumber~) animate::$6 ← *((byte[]) XPOS + (number) 1) - (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in *((byte[]) XPOS + (number) 1) ← (unumber~) animate::$6 -Adding number conversion cast (unumber) $ff in (bool~) animate::$7 ← *((byte[]) XPOS + (number) 1) == (number) $ff -Adding number conversion cast (unumber) 1 in (bool~) animate::$7 ← *((byte[]) XPOS + (number) 1) == (unumber)(number) $ff -Adding number conversion cast (unumber) 0 in *((byte[]) YPOS + (number) 0) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((byte[]) YPOS + (number) 0) ← ((unumber)) (number) 0 -Adding number conversion cast (unumber) 1 in (number~) animate::$9 ← *((byte[]) YPOS + (number) 2) + (number) 1 -Adding number conversion cast (unumber) animate::$9 in (number~) animate::$9 ← *((byte[]) YPOS + (number) 2) + (unumber)(number) 1 -Adding number conversion cast (unumber) 2 in (unumber~) animate::$9 ← *((byte[]) YPOS + (number) 2) + (unumber)(number) 1 -Adding number conversion cast (unumber) 2 in *((byte[]) YPOS + (number) 2) ← (unumber~) animate::$9 -Adding number conversion cast (unumber) $19 in (bool~) animate::$10 ← *((byte[]) YPOS + (number) 2) == (number) $19 -Adding number conversion cast (unumber) 2 in (bool~) animate::$10 ← *((byte[]) YPOS + (number) 2) == (unumber)(number) $19 -Adding number conversion cast (unumber) $28 in *((byte[]) XPOS + (number) 1) ← (number) $28 -Adding number conversion cast (unumber) 1 in *((byte[]) XPOS + (number) 1) ← ((unumber)) (number) $28 -Adding number conversion cast (unumber) 1 in (number~) animate::$12 ← *((byte[]) YPOS + (number) 3) - (number) 1 -Adding number conversion cast (unumber) animate::$12 in (number~) animate::$12 ← *((byte[]) YPOS + (number) 3) - (unumber)(number) 1 -Adding number conversion cast (unumber) 3 in (unumber~) animate::$12 ← *((byte[]) YPOS + (number) 3) - (unumber)(number) 1 -Adding number conversion cast (unumber) 3 in *((byte[]) YPOS + (number) 3) ← (unumber~) animate::$12 -Adding number conversion cast (unumber) $ff in (bool~) animate::$13 ← *((byte[]) YPOS + (number) 3) == (number) $ff -Adding number conversion cast (unumber) 3 in (bool~) animate::$13 ← *((byte[]) YPOS + (number) 3) == (unumber)(number) $ff -Adding number conversion cast (unumber) 0 in *((byte[]) YPOS + (number) 2) ← (number) 0 -Adding number conversion cast (unumber) 2 in *((byte[]) YPOS + (number) 2) ← ((unumber)) (number) 0 -Adding number conversion cast (unumber) $19 in *((byte[]) YPOS + (number) 3) ← (number) $19 -Adding number conversion cast (unumber) 3 in *((byte[]) YPOS + (number) 3) ← ((unumber)) (number) $19 -Adding number conversion cast (unumber) 7 in (number~) animate::$15 ← *((byte[]) XPOS + (number) 3) + (number) 7 -Adding number conversion cast (unumber) animate::$15 in (number~) animate::$15 ← *((byte[]) XPOS + (number) 3) + (unumber)(number) 7 -Adding number conversion cast (unumber) 3 in (unumber~) animate::$15 ← *((byte[]) XPOS + (number) 3) + (unumber)(number) 7 -Adding number conversion cast (unumber) 3 in *((byte[]) XPOS + (number) 3) ← (unumber~) animate::$15 -Adding number conversion cast (unumber) $28 in (bool~) animate::$16 ← *((byte[]) XPOS + (number) 3) >= (number) $28 -Adding number conversion cast (unumber) 3 in (bool~) animate::$16 ← *((byte[]) XPOS + (number) 3) >= (unumber)(number) $28 -Adding number conversion cast (unumber) $28 in (number~) animate::$18 ← *((byte[]) XPOS + (number) 3) - (number) $28 -Adding number conversion cast (unumber) animate::$18 in (number~) animate::$18 ← *((byte[]) XPOS + (number) 3) - (unumber)(number) $28 -Adding number conversion cast (unumber) 3 in (unumber~) animate::$18 ← *((byte[]) XPOS + (number) 3) - (unumber)(number) $28 -Adding number conversion cast (unumber) 3 in *((byte[]) XPOS + (number) 3) ← (unumber~) animate::$18 +Adding number conversion cast (unumber) 1 in (number~) animate::$0 ← *((const byte[]) XPOS + (number) 0) + (number) 1 +Adding number conversion cast (unumber) animate::$0 in (number~) animate::$0 ← *((const byte[]) XPOS + (number) 0) + (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in (unumber~) animate::$0 ← *((const byte[]) XPOS + (number) 0) + (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((const byte[]) XPOS + (number) 0) ← (unumber~) animate::$0 +Adding number conversion cast (unumber) $28 in (bool~) animate::$1 ← *((const byte[]) XPOS + (number) 0) == (number) $28 +Adding number conversion cast (unumber) 0 in (bool~) animate::$1 ← *((const byte[]) XPOS + (number) 0) == (unumber)(number) $28 +Adding number conversion cast (unumber) 1 in (number~) animate::$3 ← *((const byte[]) YPOS + (number) 0) + (number) 1 +Adding number conversion cast (unumber) animate::$3 in (number~) animate::$3 ← *((const byte[]) YPOS + (number) 0) + (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in (unumber~) animate::$3 ← *((const byte[]) YPOS + (number) 0) + (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((const byte[]) YPOS + (number) 0) ← (unumber~) animate::$3 +Adding number conversion cast (unumber) $19 in (bool~) animate::$4 ← *((const byte[]) YPOS + (number) 0) == (number) $19 +Adding number conversion cast (unumber) 0 in (bool~) animate::$4 ← *((const byte[]) YPOS + (number) 0) == (unumber)(number) $19 +Adding number conversion cast (unumber) 0 in *((const byte[]) XPOS + (number) 0) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((const byte[]) XPOS + (number) 0) ← ((unumber)) (number) 0 +Adding number conversion cast (unumber) 1 in (number~) animate::$6 ← *((const byte[]) XPOS + (number) 1) - (number) 1 +Adding number conversion cast (unumber) animate::$6 in (number~) animate::$6 ← *((const byte[]) XPOS + (number) 1) - (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in (unumber~) animate::$6 ← *((const byte[]) XPOS + (number) 1) - (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in *((const byte[]) XPOS + (number) 1) ← (unumber~) animate::$6 +Adding number conversion cast (unumber) $ff in (bool~) animate::$7 ← *((const byte[]) XPOS + (number) 1) == (number) $ff +Adding number conversion cast (unumber) 1 in (bool~) animate::$7 ← *((const byte[]) XPOS + (number) 1) == (unumber)(number) $ff +Adding number conversion cast (unumber) 0 in *((const byte[]) YPOS + (number) 0) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((const byte[]) YPOS + (number) 0) ← ((unumber)) (number) 0 +Adding number conversion cast (unumber) 1 in (number~) animate::$9 ← *((const byte[]) YPOS + (number) 2) + (number) 1 +Adding number conversion cast (unumber) animate::$9 in (number~) animate::$9 ← *((const byte[]) YPOS + (number) 2) + (unumber)(number) 1 +Adding number conversion cast (unumber) 2 in (unumber~) animate::$9 ← *((const byte[]) YPOS + (number) 2) + (unumber)(number) 1 +Adding number conversion cast (unumber) 2 in *((const byte[]) YPOS + (number) 2) ← (unumber~) animate::$9 +Adding number conversion cast (unumber) $19 in (bool~) animate::$10 ← *((const byte[]) YPOS + (number) 2) == (number) $19 +Adding number conversion cast (unumber) 2 in (bool~) animate::$10 ← *((const byte[]) YPOS + (number) 2) == (unumber)(number) $19 +Adding number conversion cast (unumber) $28 in *((const byte[]) XPOS + (number) 1) ← (number) $28 +Adding number conversion cast (unumber) 1 in *((const byte[]) XPOS + (number) 1) ← ((unumber)) (number) $28 +Adding number conversion cast (unumber) 1 in (number~) animate::$12 ← *((const byte[]) YPOS + (number) 3) - (number) 1 +Adding number conversion cast (unumber) animate::$12 in (number~) animate::$12 ← *((const byte[]) YPOS + (number) 3) - (unumber)(number) 1 +Adding number conversion cast (unumber) 3 in (unumber~) animate::$12 ← *((const byte[]) YPOS + (number) 3) - (unumber)(number) 1 +Adding number conversion cast (unumber) 3 in *((const byte[]) YPOS + (number) 3) ← (unumber~) animate::$12 +Adding number conversion cast (unumber) $ff in (bool~) animate::$13 ← *((const byte[]) YPOS + (number) 3) == (number) $ff +Adding number conversion cast (unumber) 3 in (bool~) animate::$13 ← *((const byte[]) YPOS + (number) 3) == (unumber)(number) $ff +Adding number conversion cast (unumber) 0 in *((const byte[]) YPOS + (number) 2) ← (number) 0 +Adding number conversion cast (unumber) 2 in *((const byte[]) YPOS + (number) 2) ← ((unumber)) (number) 0 +Adding number conversion cast (unumber) $19 in *((const byte[]) YPOS + (number) 3) ← (number) $19 +Adding number conversion cast (unumber) 3 in *((const byte[]) YPOS + (number) 3) ← ((unumber)) (number) $19 +Adding number conversion cast (unumber) 7 in (number~) animate::$15 ← *((const byte[]) XPOS + (number) 3) + (number) 7 +Adding number conversion cast (unumber) animate::$15 in (number~) animate::$15 ← *((const byte[]) XPOS + (number) 3) + (unumber)(number) 7 +Adding number conversion cast (unumber) 3 in (unumber~) animate::$15 ← *((const byte[]) XPOS + (number) 3) + (unumber)(number) 7 +Adding number conversion cast (unumber) 3 in *((const byte[]) XPOS + (number) 3) ← (unumber~) animate::$15 +Adding number conversion cast (unumber) $28 in (bool~) animate::$16 ← *((const byte[]) XPOS + (number) 3) >= (number) $28 +Adding number conversion cast (unumber) 3 in (bool~) animate::$16 ← *((const byte[]) XPOS + (number) 3) >= (unumber)(number) $28 +Adding number conversion cast (unumber) $28 in (number~) animate::$18 ← *((const byte[]) XPOS + (number) 3) - (number) $28 +Adding number conversion cast (unumber) animate::$18 in (number~) animate::$18 ← *((const byte[]) XPOS + (number) 3) - (unumber)(number) $28 +Adding number conversion cast (unumber) 3 in (unumber~) animate::$18 ← *((const byte[]) XPOS + (number) 3) - (unumber)(number) $28 +Adding number conversion cast (unumber) 3 in *((const byte[]) XPOS + (number) 3) ← (unumber~) animate::$18 Adding number conversion cast (unumber) $3e8 in (byte*~) initscreen::$0 ← (const byte*) SCREEN + (number) $3e8 Adding number conversion cast (unumber) $28 in (byte*~) render::$2 ← (byte*) render::colline#3 + (number) $28 Adding number conversion cast (unumber) $ff in (byte) findcol::mindiff#0 ← (number) $ff @@ -619,22 +616,16 @@ Adding number conversion cast (unumber) 0 in (byte) findcol::mincol#0 ← (numbe Adding number conversion cast (unumber) 0 in (byte) findcol::i#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) findcol::return#2 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (byte[]) XPOS ← (byte[]){ (byte)(number) 5, (byte)(number) $f, (byte)(number) 6, (byte)(number) $22, (byte)(number) $15, (byte)(number) $1f } -Added casts to value list in (byte[]) YPOS ← (byte[]){ (byte)(number) 5, (byte)(number) 8, (byte)(number) $e, (byte)(number) 2, (byte)(number) $11, (byte)(number) $16 } -Added casts to value list in (byte[]) COLS ← (byte[]){ (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 7 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Inlining cast *((byte[]) XPOS + (unumber)(number) 0) ← (unumber)(number) 0 -Inlining cast *((byte[]) YPOS + (unumber)(number) 0) ← (unumber)(number) 0 -Inlining cast *((byte[]) XPOS + (unumber)(number) 1) ← (unumber)(number) $28 -Inlining cast *((byte[]) YPOS + (unumber)(number) 2) ← (unumber)(number) 0 -Inlining cast *((byte[]) YPOS + (unumber)(number) 3) ← (unumber)(number) $19 +Inlining cast *((const byte[]) XPOS + (unumber)(number) 0) ← (unumber)(number) 0 +Inlining cast *((const byte[]) YPOS + (unumber)(number) 0) ← (unumber)(number) 0 +Inlining cast *((const byte[]) XPOS + (unumber)(number) 1) ← (unumber)(number) $28 +Inlining cast *((const byte[]) YPOS + (unumber)(number) 2) ← (unumber)(number) 0 +Inlining cast *((const byte[]) YPOS + (unumber)(number) 3) ← (unumber)(number) $19 Inlining cast (byte) findcol::mindiff#0 ← (unumber)(number) $ff Inlining cast (byte) findcol::mincol#0 ← (unumber)(number) 0 Inlining cast (byte) findcol::i#0 ← (unumber)(number) 0 Inlining cast (byte) findcol::return#2 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 -Simplifying constant pointer cast (byte*) 55296 Simplifying constant integer cast 5 Simplifying constant integer cast $f Simplifying constant integer cast 6 @@ -653,6 +644,8 @@ Simplifying constant integer cast 3 Simplifying constant integer cast 4 Simplifying constant integer cast 5 Simplifying constant integer cast 7 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 55296 Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 0 @@ -753,22 +746,22 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Inferred type updated to byte in (unumber~) animate::$0 ← *((byte[]) XPOS + (byte) 0) + (byte) 1 -Inferred type updated to byte in (unumber~) animate::$3 ← *((byte[]) YPOS + (byte) 0) + (byte) 1 -Inferred type updated to byte in (unumber~) animate::$6 ← *((byte[]) XPOS + (byte) 1) - (byte) 1 -Inferred type updated to byte in (unumber~) animate::$9 ← *((byte[]) YPOS + (byte) 2) + (byte) 1 -Inferred type updated to byte in (unumber~) animate::$12 ← *((byte[]) YPOS + (byte) 3) - (byte) 1 -Inferred type updated to byte in (unumber~) animate::$15 ← *((byte[]) XPOS + (byte) 3) + (byte) 7 -Inferred type updated to byte in (unumber~) animate::$18 ← *((byte[]) XPOS + (byte) 3) - (byte) $28 -Inversing boolean not [11] (bool~) animate::$2 ← *((byte[]) XPOS + (byte) 0) != (byte) $28 from [10] (bool~) animate::$1 ← *((byte[]) XPOS + (byte) 0) == (byte) $28 -Inversing boolean not [16] (bool~) animate::$5 ← *((byte[]) YPOS + (byte) 0) != (byte) $19 from [15] (bool~) animate::$4 ← *((byte[]) YPOS + (byte) 0) == (byte) $19 -Inversing boolean not [22] (bool~) animate::$8 ← *((byte[]) XPOS + (byte) 1) != (byte) $ff from [21] (bool~) animate::$7 ← *((byte[]) XPOS + (byte) 1) == (byte) $ff -Inversing boolean not [28] (bool~) animate::$11 ← *((byte[]) YPOS + (byte) 2) != (byte) $19 from [27] (bool~) animate::$10 ← *((byte[]) YPOS + (byte) 2) == (byte) $19 -Inversing boolean not [34] (bool~) animate::$14 ← *((byte[]) YPOS + (byte) 3) != (byte) $ff from [33] (bool~) animate::$13 ← *((byte[]) YPOS + (byte) 3) == (byte) $ff -Inversing boolean not [41] (bool~) animate::$17 ← *((byte[]) XPOS + (byte) 3) < (byte) $28 from [40] (bool~) animate::$16 ← *((byte[]) XPOS + (byte) 3) >= (byte) $28 -Inversing boolean not [89] (bool~) findcol::$2 ← (byte) findcol::x#1 != (byte) findcol::xp#0 from [88] (bool~) findcol::$1 ← (byte) findcol::x#1 == (byte) findcol::xp#0 -Inversing boolean not [99] (bool~) findcol::$4 ← (byte) findcol::y#1 != (byte) findcol::yp#1 from [98] (bool~) findcol::$3 ← (byte) findcol::y#1 == (byte) findcol::yp#1 -Inversing boolean not [124] (bool~) findcol::$14 ← (byte) findcol::diff#7 >= (byte) findcol::mindiff#2 from [123] (bool~) findcol::$13 ← (byte) findcol::diff#7 < (byte) findcol::mindiff#2 +Inferred type updated to byte in (unumber~) animate::$0 ← *((const byte[]) XPOS + (byte) 0) + (byte) 1 +Inferred type updated to byte in (unumber~) animate::$3 ← *((const byte[]) YPOS + (byte) 0) + (byte) 1 +Inferred type updated to byte in (unumber~) animate::$6 ← *((const byte[]) XPOS + (byte) 1) - (byte) 1 +Inferred type updated to byte in (unumber~) animate::$9 ← *((const byte[]) YPOS + (byte) 2) + (byte) 1 +Inferred type updated to byte in (unumber~) animate::$12 ← *((const byte[]) YPOS + (byte) 3) - (byte) 1 +Inferred type updated to byte in (unumber~) animate::$15 ← *((const byte[]) XPOS + (byte) 3) + (byte) 7 +Inferred type updated to byte in (unumber~) animate::$18 ← *((const byte[]) XPOS + (byte) 3) - (byte) $28 +Inversing boolean not [8] (bool~) animate::$2 ← *((const byte[]) XPOS + (byte) 0) != (byte) $28 from [7] (bool~) animate::$1 ← *((const byte[]) XPOS + (byte) 0) == (byte) $28 +Inversing boolean not [13] (bool~) animate::$5 ← *((const byte[]) YPOS + (byte) 0) != (byte) $19 from [12] (bool~) animate::$4 ← *((const byte[]) YPOS + (byte) 0) == (byte) $19 +Inversing boolean not [19] (bool~) animate::$8 ← *((const byte[]) XPOS + (byte) 1) != (byte) $ff from [18] (bool~) animate::$7 ← *((const byte[]) XPOS + (byte) 1) == (byte) $ff +Inversing boolean not [25] (bool~) animate::$11 ← *((const byte[]) YPOS + (byte) 2) != (byte) $19 from [24] (bool~) animate::$10 ← *((const byte[]) YPOS + (byte) 2) == (byte) $19 +Inversing boolean not [31] (bool~) animate::$14 ← *((const byte[]) YPOS + (byte) 3) != (byte) $ff from [30] (bool~) animate::$13 ← *((const byte[]) YPOS + (byte) 3) == (byte) $ff +Inversing boolean not [38] (bool~) animate::$17 ← *((const byte[]) XPOS + (byte) 3) < (byte) $28 from [37] (bool~) animate::$16 ← *((const byte[]) XPOS + (byte) 3) >= (byte) $28 +Inversing boolean not [86] (bool~) findcol::$2 ← (byte) findcol::x#1 != (byte) findcol::xp#0 from [85] (bool~) findcol::$1 ← (byte) findcol::x#1 == (byte) findcol::xp#0 +Inversing boolean not [96] (bool~) findcol::$4 ← (byte) findcol::y#1 != (byte) findcol::yp#1 from [95] (bool~) findcol::$3 ← (byte) findcol::y#1 == (byte) findcol::yp#1 +Inversing boolean not [121] (bool~) findcol::$14 ← (byte) findcol::diff#7 >= (byte) findcol::mindiff#2 from [120] (bool~) findcol::$13 ← (byte) findcol::diff#7 < (byte) findcol::mindiff#2 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) initscreen::screen#2 = (byte*) initscreen::screen#3 Alias (byte) findcol::return#0 = (byte) findcol::return#4 @@ -823,31 +816,24 @@ Identical Phi Values (byte) findcol::y#10 (byte) findcol::y#0 Identical Phi Values (byte) findcol::x#1 (byte) findcol::x#7 Identical Phi Values (byte) findcol::y#1 (byte) findcol::y#10 Successful SSA optimization Pass2IdenticalPhiElimination -Simple Condition (bool~) animate::$2 [12] if(*((byte[]) XPOS + (byte) 0)!=(byte) $28) goto animate::@1 -Simple Condition (bool~) animate::$5 [17] if(*((byte[]) YPOS + (byte) 0)!=(byte) $19) goto animate::@2 -Simple Condition (bool~) animate::$8 [23] if(*((byte[]) XPOS + (byte) 1)!=(byte) $ff) goto animate::@3 -Simple Condition (bool~) animate::$11 [29] if(*((byte[]) YPOS + (byte) 2)!=(byte) $19) goto animate::@4 -Simple Condition (bool~) animate::$14 [35] if(*((byte[]) YPOS + (byte) 3)!=(byte) $ff) goto animate::@return -Simple Condition (bool~) animate::$17 [42] if(*((byte[]) XPOS + (byte) 3)<(byte) $28) goto animate::@return -Simple Condition (bool~) initscreen::$1 [50] if((byte*) initscreen::screen#2<(byte*~) initscreen::$0) goto initscreen::@2 -Simple Condition (bool~) render::$1 [70] if((byte) render::x#1!=rangelast(0,$27)) goto render::@2 -Simple Condition (bool~) render::$3 [76] if((byte) render::y#1!=rangelast(0,$18)) goto render::@1 -Simple Condition (bool~) findcol::$0 [84] if((byte) findcol::i#10<(const byte) numpoints) goto findcol::@2 -Simple Condition (bool~) findcol::$2 [90] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@4 -Simple Condition (bool~) findcol::$5 [96] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 -Simple Condition (bool~) findcol::$4 [100] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@4 -Simple Condition (bool~) findcol::$8 [113] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@8 -Simple Condition (bool~) findcol::$14 [125] if((byte) findcol::diff#7>=(byte) findcol::mindiff#10) goto findcol::@10 +Simple Condition (bool~) animate::$2 [9] if(*((const byte[]) XPOS + (byte) 0)!=(byte) $28) goto animate::@1 +Simple Condition (bool~) animate::$5 [14] if(*((const byte[]) YPOS + (byte) 0)!=(byte) $19) goto animate::@2 +Simple Condition (bool~) animate::$8 [20] if(*((const byte[]) XPOS + (byte) 1)!=(byte) $ff) goto animate::@3 +Simple Condition (bool~) animate::$11 [26] if(*((const byte[]) YPOS + (byte) 2)!=(byte) $19) goto animate::@4 +Simple Condition (bool~) animate::$14 [32] if(*((const byte[]) YPOS + (byte) 3)!=(byte) $ff) goto animate::@return +Simple Condition (bool~) animate::$17 [39] if(*((const byte[]) XPOS + (byte) 3)<(byte) $28) goto animate::@return +Simple Condition (bool~) initscreen::$1 [47] if((byte*) initscreen::screen#2<(byte*~) initscreen::$0) goto initscreen::@2 +Simple Condition (bool~) render::$1 [67] if((byte) render::x#1!=rangelast(0,$27)) goto render::@2 +Simple Condition (bool~) render::$3 [73] if((byte) render::y#1!=rangelast(0,$18)) goto render::@1 +Simple Condition (bool~) findcol::$0 [81] if((byte) findcol::i#10<(const byte) numpoints) goto findcol::@2 +Simple Condition (bool~) findcol::$2 [87] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@4 +Simple Condition (bool~) findcol::$5 [93] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 +Simple Condition (bool~) findcol::$4 [97] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@4 +Simple Condition (bool~) findcol::$8 [110] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@8 +Simple Condition (bool~) findcol::$14 [122] if((byte) findcol::diff#7>=(byte) findcol::mindiff#10) goto findcol::@10 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [48] (byte*~) initscreen::$0 ← (const byte*) SCREEN + (word) $3e8 +Constant right-side identified [45] (byte*~) initscreen::$0 ← (const byte*) SCREEN + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (byte[]) { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f } -Identified constant from value list (byte[]) { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 } -Identified constant from value list (byte[]) { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const byte[]) XPOS = { 5, $f, 6, $22, $15, $1f } -Constant (const byte[]) YPOS = { 5, 8, $e, 2, $11, $16 } -Constant (const byte[]) COLS = { 1, 2, 3, 4, 5, 7 } Constant (const byte*) initscreen::screen#0 = SCREEN Constant (const byte*) initscreen::$0 = SCREEN+$3e8 Constant (const byte*) render::colline#0 = COLORS @@ -859,20 +845,20 @@ Constant (const byte) findcol::i#0 = 0 Constant (const byte) findcol::diff#0 = 0 Constant (const byte) findcol::return#2 = 0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [6] if(true) goto main::@1 +if() condition always true - replacing block destination [3] if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs -Resolved ranged next value [68] render::x#1 ← ++ render::x#2 to ++ -Resolved ranged comparison value [70] if(render::x#1!=rangelast(0,$27)) goto render::@2 to (number) $28 -Resolved ranged next value [74] render::y#1 ← ++ render::y#4 to ++ -Resolved ranged comparison value [76] if(render::y#1!=rangelast(0,$18)) goto render::@1 to (number) $19 -Simplifying expression containing zero XPOS in [8] (byte~) animate::$0 ← *((const byte[]) XPOS + (byte) 0) + (byte) 1 -Simplifying expression containing zero XPOS in [9] *((const byte[]) XPOS + (byte) 0) ← (byte~) animate::$0 -Simplifying expression containing zero XPOS in [12] if(*((const byte[]) XPOS + (byte) 0)!=(byte) $28) goto animate::@1 -Simplifying expression containing zero YPOS in [13] (byte~) animate::$3 ← *((const byte[]) YPOS + (byte) 0) + (byte) 1 -Simplifying expression containing zero YPOS in [14] *((const byte[]) YPOS + (byte) 0) ← (byte~) animate::$3 -Simplifying expression containing zero YPOS in [17] if(*((const byte[]) YPOS + (byte) 0)!=(byte) $19) goto animate::@2 -Simplifying expression containing zero XPOS in [18] *((const byte[]) XPOS + (byte) 0) ← (byte) 0 -Simplifying expression containing zero YPOS in [24] *((const byte[]) YPOS + (byte) 0) ← (byte) 0 +Resolved ranged next value [65] render::x#1 ← ++ render::x#2 to ++ +Resolved ranged comparison value [67] if(render::x#1!=rangelast(0,$27)) goto render::@2 to (number) $28 +Resolved ranged next value [71] render::y#1 ← ++ render::y#4 to ++ +Resolved ranged comparison value [73] if(render::y#1!=rangelast(0,$18)) goto render::@1 to (number) $19 +Simplifying expression containing zero XPOS in [5] (byte~) animate::$0 ← *((const byte[]) XPOS + (byte) 0) + (byte) 1 +Simplifying expression containing zero XPOS in [6] *((const byte[]) XPOS + (byte) 0) ← (byte~) animate::$0 +Simplifying expression containing zero XPOS in [9] if(*((const byte[]) XPOS + (byte) 0)!=(byte) $28) goto animate::@1 +Simplifying expression containing zero YPOS in [10] (byte~) animate::$3 ← *((const byte[]) YPOS + (byte) 0) + (byte) 1 +Simplifying expression containing zero YPOS in [11] *((const byte[]) YPOS + (byte) 0) ← (byte~) animate::$3 +Simplifying expression containing zero YPOS in [14] if(*((const byte[]) YPOS + (byte) 0)!=(byte) $19) goto animate::@2 +Simplifying expression containing zero XPOS in [15] *((const byte[]) XPOS + (byte) 0) ← (byte) 0 +Simplifying expression containing zero YPOS in [21] *((const byte[]) YPOS + (byte) 0) ← (byte) 0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) findcol::diff#0 Successful SSA optimization PassNEliminateUnusedVars diff --git a/src/test/ref/word-array-1.log b/src/test/ref/word-array-1.log index 744cb4bf9..3c63641d1 100644 --- a/src/test/ref/word-array-1.log +++ b/src/test/ref/word-array-1.log @@ -1,4 +1,4 @@ -Fixing pointer array-indexing *((word[]) main::words + (byte) main::i) +Fixing pointer array-indexing *((const word[]) main::words + (byte) main::i) Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @@ -7,7 +7,6 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (word[]) main::words ← { (number) $3031, (number) $3233, (number) $3435, (number) $3637 } (byte) main::idx#0 ← (number) 0 (byte) main::i#0 ← (byte) 0 to:main::@1 @@ -15,7 +14,7 @@ main::@1: scope:[main] from main main::@1 (byte) main::idx#4 ← phi( main/(byte) main::idx#0 main::@1/(byte) main::idx#3 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$3 ← (byte) main::i#2 * (const byte) SIZEOF_WORD - (word) main::w#0 ← *((word[]) main::words + (byte~) main::$3) + (word) main::w#0 ← *((const word[]) main::words + (byte~) main::$3) (byte~) main::$0 ← > (word) main::w#0 *((const byte*) main::SCREEN + (byte) main::idx#4) ← (byte~) main::$0 (byte) main::idx#1 ← ++ (byte) main::idx#4 @@ -63,33 +62,28 @@ SYMBOL TABLE SSA (byte) main::idx#4 (word) main::w (word) main::w#0 -(word[]) main::words +(const word[]) main::words = { (word)(number) $3031, (word)(number) $3233, (word)(number) $3435, (word)(number) $3637 } Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) main::words ← (word[]){ (word)(number) $3031, (word)(number) $3233, (word)(number) $3435, (word)(number) $3637 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3031 Simplifying constant integer cast $3233 Simplifying constant integer cast $3435 Simplifying constant integer cast $3637 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Simple Condition (bool~) main::$2 [15] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 +Simple Condition (bool~) main::$2 [14] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (word[]) { (word) $3031, (word) $3233, (word) $3435, (word) $3637 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) main::words = { $3031, $3233, $3435, $3637 } Constant (const byte) main::idx#0 = 0 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [13] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [15] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 +Resolved ranged next value [12] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [14] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 Adding number conversion cast (unumber) 4 in if((byte) main::i#1!=(number) 4) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 4 diff --git a/src/test/ref/word-pointer-compound.log b/src/test/ref/word-pointer-compound.log index 6bdf5ccc0..a49039da2 100644 --- a/src/test/ref/word-pointer-compound.log +++ b/src/test/ref/word-pointer-compound.log @@ -1,11 +1,11 @@ -Fixing pointer array-indexing *((word[]) main::words + (byte) main::i) -Fixing pointer array-indexing *((word[]) main::words + (byte) main::i) -Fixing pointer array-indexing *((word[]) main::words + (number) 0) -Fixing pointer array-indexing *((word[]) main::words + (number) 0) -Fixing pointer array-indexing *((word[]) main::words + (number) 1) -Fixing pointer array-indexing *((word[]) main::words + (number) 1) -Fixing pointer array-indexing *((word[]) main::words + (number) 2) -Fixing pointer array-indexing *((word[]) main::words + (number) 2) +Fixing pointer array-indexing *((const word[]) main::words + (byte) main::i) +Fixing pointer array-indexing *((const word[]) main::words + (byte) main::i) +Fixing pointer array-indexing *((const word[]) main::words + (number) 0) +Fixing pointer array-indexing *((const word[]) main::words + (number) 0) +Fixing pointer array-indexing *((const word[]) main::words + (number) 1) +Fixing pointer array-indexing *((const word[]) main::words + (number) 1) +Fixing pointer array-indexing *((const word[]) main::words + (number) 2) +Fixing pointer array-indexing *((const word[]) main::words + (number) 2) CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -13,35 +13,34 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (word[]) main::words ← { (number) $3031, (number) $3233, (number) $3435 } (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$7 ← (byte) main::i#2 * (const byte) SIZEOF_WORD - *((word[]) main::words + (byte~) main::$7) ← *((word[]) main::words + (byte~) main::$7) + (number) $101 + *((const word[]) main::words + (byte~) main::$7) ← *((const word[]) main::words + (byte~) main::$7) + (number) $101 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2) (bool~) main::$6 ← (byte) main::i#1 != rangelast(0,2) if((bool~) main::$6) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 (number~) main::$8 ← (number) 0 * (const byte) SIZEOF_WORD - (byte~) main::$0 ← > *((word[]) main::words + (number~) main::$8) + (byte~) main::$0 ← > *((const word[]) main::words + (number~) main::$8) *((const byte*) main::SCREEN + (number) 0) ← (byte~) main::$0 (number~) main::$9 ← (number) 0 * (const byte) SIZEOF_WORD - (byte~) main::$1 ← < *((word[]) main::words + (number~) main::$9) + (byte~) main::$1 ← < *((const word[]) main::words + (number~) main::$9) *((const byte*) main::SCREEN + (number) 1) ← (byte~) main::$1 (number~) main::$10 ← (number) 1 * (const byte) SIZEOF_WORD - (byte~) main::$2 ← > *((word[]) main::words + (number~) main::$10) + (byte~) main::$2 ← > *((const word[]) main::words + (number~) main::$10) *((const byte*) main::SCREEN + (number) 2) ← (byte~) main::$2 (number~) main::$11 ← (number) 1 * (const byte) SIZEOF_WORD - (byte~) main::$3 ← < *((word[]) main::words + (number~) main::$11) + (byte~) main::$3 ← < *((const word[]) main::words + (number~) main::$11) *((const byte*) main::SCREEN + (number) 3) ← (byte~) main::$3 (number~) main::$12 ← (number) 2 * (const byte) SIZEOF_WORD - (byte~) main::$4 ← > *((word[]) main::words + (number~) main::$12) + (byte~) main::$4 ← > *((const word[]) main::words + (number~) main::$12) *((const byte*) main::SCREEN + (number) 4) ← (byte~) main::$4 (number~) main::$13 ← (number) 2 * (const byte) SIZEOF_WORD - (byte~) main::$5 ← < *((word[]) main::words + (number~) main::$13) + (byte~) main::$5 ← < *((const word[]) main::words + (number~) main::$13) *((const byte*) main::SCREEN + (number) 5) ← (byte~) main::$5 to:main::@return main::@return: scope:[main] from main::@2 @@ -83,9 +82,9 @@ SYMBOL TABLE SSA (byte) main::i#0 (byte) main::i#1 (byte) main::i#2 -(word[]) main::words +(const word[]) main::words = { (word)(number) $3031, (word)(number) $3233, (word)(number) $3435 } -Adding number conversion cast (unumber) $101 in *((word[]) main::words + (byte~) main::$7) ← *((word[]) main::words + (byte~) main::$7) + (number) $101 +Adding number conversion cast (unumber) $101 in *((const word[]) main::words + (byte~) main::$7) ← *((const word[]) main::words + (byte~) main::$7) + (number) $101 Adding number conversion cast (unumber) 0 in (number~) main::$8 ← (number) 0 * (const byte) SIZEOF_WORD Adding number conversion cast (unumber) main::$8 in (number~) main::$8 ← (unumber)(number) 0 * (const byte) SIZEOF_WORD Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← (byte~) main::$0 @@ -105,12 +104,10 @@ Adding number conversion cast (unumber) 2 in (number~) main::$13 ← (number) 2 Adding number conversion cast (unumber) main::$13 in (number~) main::$13 ← (unumber)(number) 2 * (const byte) SIZEOF_WORD Adding number conversion cast (unumber) 5 in *((const byte*) main::SCREEN + (number) 5) ← (byte~) main::$5 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) main::words ← (word[]){ (word)(number) $3031, (word)(number) $3233, (word)(number) $3435 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3031 Simplifying constant integer cast $3233 Simplifying constant integer cast $3435 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $101 Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -145,18 +142,15 @@ Inferred type updated to byte in (unumber~) main::$10 ← (byte) 1 * (const byte Inferred type updated to byte in (unumber~) main::$11 ← (byte) 1 * (const byte) SIZEOF_WORD Inferred type updated to byte in (unumber~) main::$12 ← (byte) 2 * (const byte) SIZEOF_WORD Inferred type updated to byte in (unumber~) main::$13 ← (byte) 2 * (const byte) SIZEOF_WORD -Simple Condition (bool~) main::$6 [7] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 +Simple Condition (bool~) main::$6 [6] if((byte) main::i#1!=rangelast(0,2)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [8] (byte~) main::$8 ← (byte) 0 * (const byte) SIZEOF_WORD -Constant right-side identified [11] (byte~) main::$9 ← (byte) 0 * (const byte) SIZEOF_WORD -Constant right-side identified [14] (byte~) main::$10 ← (byte) 1 * (const byte) SIZEOF_WORD -Constant right-side identified [17] (byte~) main::$11 ← (byte) 1 * (const byte) SIZEOF_WORD -Constant right-side identified [20] (byte~) main::$12 ← (byte) 2 * (const byte) SIZEOF_WORD -Constant right-side identified [23] (byte~) main::$13 ← (byte) 2 * (const byte) SIZEOF_WORD +Constant right-side identified [7] (byte~) main::$8 ← (byte) 0 * (const byte) SIZEOF_WORD +Constant right-side identified [10] (byte~) main::$9 ← (byte) 0 * (const byte) SIZEOF_WORD +Constant right-side identified [13] (byte~) main::$10 ← (byte) 1 * (const byte) SIZEOF_WORD +Constant right-side identified [16] (byte~) main::$11 ← (byte) 1 * (const byte) SIZEOF_WORD +Constant right-side identified [19] (byte~) main::$12 ← (byte) 2 * (const byte) SIZEOF_WORD +Constant right-side identified [22] (byte~) main::$13 ← (byte) 2 * (const byte) SIZEOF_WORD Successful SSA optimization Pass2ConstantRValueConsolidation -Identified constant from value list (word[]) { (word) $3031, (word) $3233, (word) $3435 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) main::words = { $3031, $3233, $3435 } Constant (const byte) main::i#0 = 0 Constant (const byte) main::$8 = 0*SIZEOF_WORD Constant (const byte) main::$9 = 0*SIZEOF_WORD @@ -165,14 +159,14 @@ Constant (const byte) main::$11 = 1*SIZEOF_WORD Constant (const byte) main::$12 = 2*SIZEOF_WORD Constant (const byte) main::$13 = 2*SIZEOF_WORD Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [5] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [7] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 +Resolved ranged next value [4] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [6] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3 Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_WORD in Simplifying constant evaluating to zero (byte) 0*(const byte) SIZEOF_WORD in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero main::words in [9] (byte~) main::$0 ← > *((const word[]) main::words + (const byte) main::$8) -Simplifying expression containing zero main::SCREEN in [10] *((const byte*) main::SCREEN + (byte) 0) ← (byte~) main::$0 -Simplifying expression containing zero main::words in [12] (byte~) main::$1 ← < *((const word[]) main::words + (const byte) main::$9) +Simplifying expression containing zero main::words in [8] (byte~) main::$0 ← > *((const word[]) main::words + (const byte) main::$8) +Simplifying expression containing zero main::SCREEN in [9] *((const byte*) main::SCREEN + (byte) 0) ← (byte~) main::$0 +Simplifying expression containing zero main::words in [11] (byte~) main::$1 ← < *((const word[]) main::words + (const byte) main::$9) Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) main::$8 Eliminating unused constant (const byte) main::$9 diff --git a/src/test/ref/word-pointer-iteration.log b/src/test/ref/word-pointer-iteration.log index 5ed64a8ea..8e4205b3b 100644 --- a/src/test/ref/word-pointer-iteration.log +++ b/src/test/ref/word-pointer-iteration.log @@ -7,9 +7,8 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (word[]) main::words ← { (number) $3130, (number) $3332, (number) $3534, (number) $3736 } (byte) main::idx#0 ← (number) 0 - (word*) main::wp#0 ← (word[]) main::words + (word*) main::wp#0 ← (const word[]) main::words (byte) main::i#0 ← (byte) 0 to:main::@1 main::@1: scope:[main] from main main::@1 @@ -64,7 +63,7 @@ SYMBOL TABLE SSA (byte) main::idx#4 (word) main::w (word) main::w#0 -(word[]) main::words +(const word[]) main::words = { (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 } (word*) main::wp (word*) main::wp#0 (word*) main::wp#1 @@ -72,31 +71,25 @@ SYMBOL TABLE SSA Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) main::words ← (word[]){ (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3130 Simplifying constant integer cast $3332 Simplifying constant integer cast $3534 Simplifying constant integer cast $3736 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Alias (word[]) main::words = (word*) main::wp#0 -Successful SSA optimization Pass2AliasElimination -Simple Condition (bool~) main::$2 [16] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 +Simple Condition (bool~) main::$2 [15] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (word[]) { (word) $3130, (word) $3332, (word) $3534, (word) $3736 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) main::words = { $3130, $3332, $3534, $3736 } Constant (const byte) main::idx#0 = 0 +Constant (const word*) main::wp#0 = main::words Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [14] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [16] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 +Resolved ranged next value [13] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [15] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 Adding number conversion cast (unumber) 4 in if((byte) main::i#1!=(number) 4) goto main::@1 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 4 @@ -104,8 +97,10 @@ Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 4 Successful SSA optimization PassNFinalizeNumberTypeConversions Inlining constant with var siblings (const byte) main::idx#0 +Inlining constant with var siblings (const word*) main::wp#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte) 0 +Constant inlined main::wp#0 = (const word[]) main::words Constant inlined main::idx#0 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@3(between main::@1 and main::@1) diff --git a/src/test/ref/word-pointer-math.log b/src/test/ref/word-pointer-math.log index de7377ce6..4da8f17d7 100644 --- a/src/test/ref/word-pointer-math.log +++ b/src/test/ref/word-pointer-math.log @@ -1,4 +1,4 @@ -Fixing pointer addition (word*~) main::$0 ← (word[]) main::words + (byte) main::i +Fixing pointer addition (word*~) main::$0 ← (const word[]) main::words + (byte) main::i Culled Empty Block (label) main::@2 CONTROL FLOW GRAPH SSA @@ -7,7 +7,6 @@ CONTROL FLOW GRAPH SSA (void()) main() main: scope:[main] from @1 - (word[]) main::words ← { (number) $3130, (number) $3332, (number) $3534, (number) $3736 } (byte) main::idx#0 ← (number) 0 (byte) main::i#0 ← (byte) 0 to:main::@1 @@ -15,7 +14,7 @@ main::@1: scope:[main] from main main::@1 (byte) main::idx#4 ← phi( main/(byte) main::idx#0 main::@1/(byte) main::idx#3 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_WORD - (word*~) main::$0 ← (word[]) main::words + (byte~) main::$4 + (word*~) main::$0 ← (const word[]) main::words + (byte~) main::$4 (word) main::w#0 ← *((word*~) main::$0) (byte~) main::$1 ← < (word) main::w#0 *((const byte*) main::SCREEN + (byte) main::idx#4) ← (byte~) main::$1 @@ -65,34 +64,29 @@ SYMBOL TABLE SSA (byte) main::idx#4 (word) main::w (word) main::w#0 -(word[]) main::words +(const word[]) main::words = { (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 } Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions -Added casts to value list in (word[]) main::words ← (word[]){ (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 } -Successful SSA optimization PassNAddInitializerValueListTypeCasts Inlining cast (byte) main::idx#0 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3130 Simplifying constant integer cast $3332 Simplifying constant integer cast $3534 Simplifying constant integer cast $3736 +Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions -Simple Condition (bool~) main::$3 [16] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 +Simple Condition (bool~) main::$3 [15] if((byte) main::i#1!=rangelast(0,3)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Identified constant from value list (word[]) { (word) $3130, (word) $3332, (word) $3534, (word) $3736 } -Successful SSA optimization Pass2ConstantInitializerValueLists -Constant (const word[]) main::words = { $3130, $3332, $3534, $3736 } Constant (const byte) main::idx#0 = 0 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value [14] main::i#1 ← ++ main::i#2 to ++ -Resolved ranged comparison value [16] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 -Converting *(pointer+n) to pointer[n] [6] (word) main::w#0 ← *((word*~) main::$0) -- *(main::words + main::$4) +Resolved ranged next value [13] main::i#1 ← ++ main::i#2 to ++ +Resolved ranged comparison value [15] if(main::i#1!=rangelast(0,3)) goto main::@1 to (number) 4 +Converting *(pointer+n) to pointer[n] [5] (word) main::w#0 ← *((word*~) main::$0) -- *(main::words + main::$4) Successful SSA optimization Pass2InlineDerefIdx Eliminating unused variable (word*~) main::$0 and assignment [2] (word*~) main::$0 ← (const word[]) main::words + (byte~) main::$4 Successful SSA optimization PassNEliminateUnusedVars