1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Added detection of non-constant loops.

This commit is contained in:
jespergravgaard 2018-08-22 22:23:42 +02:00
parent a223abdf6e
commit 126c8f6e0d
168 changed files with 2239 additions and 2753 deletions

View File

@ -47,6 +47,11 @@ public class CompileLog {
*/
private boolean verboseNonOptimization = false;
/**
* Should sequence planning be verbose.
*/
private boolean verboseSequencePlan = false;
/**
* Should the log be output to System.out while being built
@ -121,6 +126,10 @@ public class CompileLog {
return verboseNonOptimization;
}
public boolean isVerboseSequencePlan() {
return verboseSequencePlan;
}
public boolean isSysOut() {
return sysOut;
}

View File

@ -212,9 +212,9 @@ public class Compiler {
List<Pass2SsaOptimization> loopUnrolling = new ArrayList<>();
loopUnrolling.add(new PassNStatementIndices(program));
loopUnrolling.add(new PassNVariableReferenceInfos(program));
loopUnrolling.add(new Pass3StatementInfos(program));
loopUnrolling.add(new Pass2DominatorsAnalysis(program));
loopUnrolling.add(new Pass2LoopAnalysis(program));
loopUnrolling.add(new PassNStatementInfos(program));
loopUnrolling.add(new PassNDominatorsAnalysis(program));
loopUnrolling.add(new PassNLoopAnalysis(program));
loopUnrolling.add(new Pass2LoopUnrollPhiPrepare(program));
loopUnrolling.add(new Pass2LoopUnroll(program));
@ -227,7 +227,8 @@ public class Compiler {
getLog().append(program.getGraph().toString(program));
}
pass2Optimize();
new Pass3BlockSequencePlanner(program).plan();
new Pass2LoopUnrollAssertComplete(program).step();
new PassNBlockSequencePlanner(program).step();
}
} while(unrolled);
@ -261,7 +262,7 @@ public class Compiler {
while(stepOptimized) {
stepOptimized = optimization.step();
if(stepOptimized) {
getLog().append("Succesful SSA optimization " + optimization.getClass().getSimpleName() + "");
getLog().append("Successful SSA optimization " + optimization.getClass().getSimpleName() + "");
ssaOptimized = true;
if(getLog().isVerboseSSAOptimize()) {
getLog().append("CONTROL FLOW GRAPH");
@ -302,10 +303,10 @@ public class Compiler {
new Pass3AssertConstants(program).check();
new Pass3AssertArrayLengths(program).check();
new Pass3AssertNoMulDivMod(program).check();
new Pass3BlockSequencePlanner(program).plan();
new PassNBlockSequencePlanner(program).step();
// Phi lifting ensures that all variables in phi-blocks are in different live range equivalence classes
new Pass3PhiLifting(program).perform();
new Pass3BlockSequencePlanner(program).plan();
new PassNBlockSequencePlanner(program).step();
//getLog().append("CONTROL FLOW GRAPH - PHI LIFTED");
//getLog().append(program.getGraph().toString(program));
pass2AssertSSA();
@ -318,7 +319,7 @@ public class Compiler {
//getLog().setVerboseLiveRanges(true);
new Pass3StatementInfos(program).execute();
new PassNStatementInfos(program).execute();
new PassNVariableReferenceInfos(program).execute();
new Pass3LiveRangesAnalysis(program).findLiveRanges();
//getLog().append("CONTROL FLOW GRAPH - LIVE RANGES FOUND");
@ -330,11 +331,11 @@ public class Compiler {
// Phi mem coalesce removes as many variables introduced by phi lifting as possible - as long as their live ranges do not overlap
new Pass3PhiMemCoalesce(program).step();
new Pass2CullEmptyBlocks(program).step();
new Pass3BlockSequencePlanner(program).plan();
new PassNBlockSequencePlanner(program).step();
new Pass3AddNopBeforeCallOns(program).generate();
new PassNStatementIndices(program).execute();
new Pass3CallGraphAnalysis(program).findCallGraph();
new Pass3StatementInfos(program).execute();
new PassNStatementInfos(program).execute();
new PassNVariableReferenceInfos(program).execute();
new Pass3SymbolInfos(program).generateSymbolInfos();
new Pass3LiveRangesAnalysis(program).findLiveRanges();
@ -353,7 +354,7 @@ public class Compiler {
if(getLog().isVerboseLoopAnalysis()) {
getLog().append("DOMINATORS");
}
new Pass2DominatorsAnalysis(program).step();
new PassNDominatorsAnalysis(program).step();
if(getLog().isVerboseLoopAnalysis()) {
getLog().append(program.getDominators().toString());
}
@ -361,7 +362,7 @@ public class Compiler {
if(getLog().isVerboseLoopAnalysis()) {
getLog().append("NATURAL LOOPS");
}
new Pass2LoopAnalysis(program).step();
new PassNLoopAnalysis(program).step();
if(getLog().isVerboseLoopAnalysis()) {
getLog().append(program.getLoopSet().toString());
}

View File

@ -1,14 +1,14 @@
package dk.camelot64.kickc.model;
import dk.camelot64.kickc.model.values.LabelRef;
import dk.camelot64.kickc.passes.Pass2LoopAnalysis;
import dk.camelot64.kickc.passes.PassNLoopAnalysis;
import java.util.*;
/**
* A set of natural loops in a control flow graph.
* <p>For definitions and more see http://www.cs.colostate.edu/~cs553/ClassNotes/lecture09-control-dominators.ppt.pdf
* <p>Created by {@link Pass2LoopAnalysis}
* <p>Created by {@link PassNLoopAnalysis}
*/
public class NaturalLoopSet {

View File

@ -18,7 +18,10 @@ public class StatementConditionalJump extends StatementBase {
private Operator operator;
private RValue rValue2;
private LabelRef destination;
/** This conditional is the primary back edge in a loop declared to be unrolled. */
private boolean declaredUnroll;
/** This conditional has been unrolled. Constant propagation must ensure the conditional is deleted - or the compilation will fail. */
private boolean wasUnrolled;
public StatementConditionalJump(RValue condition, LabelRef destination,StatementSource source) {
super(null, source);
@ -81,6 +84,14 @@ public class StatementConditionalJump extends StatementBase {
this.declaredUnroll = declaredUnroll;
}
public boolean isWasUnrolled() {
return wasUnrolled;
}
public void setWasUnrolled(boolean wasUnrolled) {
this.wasUnrolled = wasUnrolled;
}
@Override
public String toString(Program program, boolean aliveInfo) {
StringBuilder out = new StringBuilder();

View File

@ -82,9 +82,14 @@ public class Pass2LoopUnroll extends Pass2SsaOptimization {
}
} else if(statement instanceof StatementConditionalJump) {
// - Remove the "unroll" directive on the condition in the old loop (as it is already unrolled).
// TODO: Only remove "unroll" from the conditional that represents the loop we are unrolling
// MAYBE: Only remove "unroll" from the conditional that represents the loop we are unrolling
StatementConditionalJump conditionalJump = (StatementConditionalJump) statement;
conditionalJump.setDeclaredUnroll(false);
if(conditionalJump.isDeclaredUnroll()) {
// Mark is unrolled - to ensure it is removed before unrolling more
conditionalJump.setWasUnrolled(true);
// Remove unroll declaration - now only the "rest" of the loop needs unrolling
conditionalJump.setDeclaredUnroll(false);
}
// Fix the destination (if needed)!
LabelRef fixedDestination = fixSuccessor(conditionalJump.getDestination(), blockToNewBlock, unrollLoop);
conditionalJump.setDestination(fixedDestination);

View File

@ -0,0 +1,33 @@
package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.model.CompileError;
import dk.camelot64.kickc.model.ControlFlowBlock;
import dk.camelot64.kickc.model.Program;
import dk.camelot64.kickc.model.statements.Statement;
import dk.camelot64.kickc.model.statements.StatementConditionalJump;
/**
* Check that the unrolling of a loop was sucessfully completed.
* This is done by checking that no conditional jumps exist marked as wasUnrolled.
* Since unrolling requires the loop iteration count to be constant the conditionals must always be resolved to true or false and thus deleted or changed to jumps.
*/
public class Pass2LoopUnrollAssertComplete extends Pass2SsaOptimization {
public Pass2LoopUnrollAssertComplete(Program program) {
super(program);
}
@Override
public boolean step() {
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
for(Statement statement : block.getStatements()) {
if(statement instanceof StatementConditionalJump) {
if(((StatementConditionalJump) statement).isWasUnrolled()) {
throw new CompileError("Loop cannot be unrolled. Condition not resolvable to a constant true/false. "+statement.toString(getProgram(), false));
}
}
}
}
return false;
}
}

View File

@ -8,15 +8,16 @@ import dk.camelot64.kickc.model.values.LabelRef;
import java.util.*;
/** Plan the optimal sequence for the blocks of the control flow graph */
public class Pass3BlockSequencePlanner extends Pass2Base {
public class PassNBlockSequencePlanner extends Pass2SsaOptimization {
Deque<ScopeTodo> todoScopes = new ArrayDeque<>();
public Pass3BlockSequencePlanner(Program program) {
public PassNBlockSequencePlanner(Program program) {
super(program);
}
public void plan() {
@Override
public boolean step() {
List<ControlFlowBlock> entryPointBlocks = getGraph().getEntryPointBlocks(getProgram());
@ -48,18 +49,23 @@ public class Pass3BlockSequencePlanner extends Pass2Base {
}
getGraph().setSequence(sequence);
StringBuilder entry = new StringBuilder();
entry.append("Block Sequence Planned ");
for(LabelRef labelRef : sequence) {
entry.append(labelRef.getFullName() + " ");
if(getLog().isVerboseSequencePlan()) {
StringBuilder entry = new StringBuilder();
entry.append("Block Sequence Planned ");
for(LabelRef labelRef : sequence) {
entry.append(labelRef.getFullName() + " ");
}
getLog().append(entry.toString());
}
getLog().append(entry.toString());
return false;
}
void pushTodo(ControlFlowBlock block) {
LabelRef blockRef = block.getLabel();
Scope blockScope = getSymbols().getSymbol(blockRef).getScope();
Scope blockScope = getScope().getSymbol(blockRef).getScope();
for(ScopeTodo todoScope : todoScopes) {
if(todoScope.scope.equals(blockScope)) {
todoScope.addTodo(block);

View File

@ -7,9 +7,9 @@ import java.util.ArrayList;
import java.util.List;
/** Finds the dominators for the control flow graph. */
public class Pass2DominatorsAnalysis extends Pass2SsaOptimization {
public class PassNDominatorsAnalysis extends Pass2SsaOptimization {
public Pass2DominatorsAnalysis(Program program) {
public PassNDominatorsAnalysis(Program program) {
super(program);
}

View File

@ -11,9 +11,9 @@ import java.util.*;
* <p>
* See http://www.cs.colostate.edu/~cs553/ClassNotes/lecture09-control-dominators.ppt.pdf
*/
public class Pass2LoopAnalysis extends Pass2SsaOptimization {
public class PassNLoopAnalysis extends Pass2SsaOptimization {
public Pass2LoopAnalysis(Program program) {
public PassNLoopAnalysis(Program program) {
super(program);
}

View File

@ -12,9 +12,9 @@ import java.util.LinkedHashMap;
/**
* Identify the block for each statement.
*/
public class Pass3StatementInfos extends Pass2SsaOptimization {
public class PassNStatementInfos extends Pass2SsaOptimization {
public Pass3StatementInfos(Program program) {
public PassNStatementInfos(Program program) {
super(program);
}

View File

@ -46,10 +46,10 @@ public class TestPrograms {
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
}
//@Test
//public void testUnrollInfinite() throws IOException, URISyntaxException {
// compileAndCompare("unroll-infinite");
//}
@Test
public void testUnrollInfinite() throws IOException, URISyntaxException {
assertError("unroll-infinite", "Loop cannot be unrolled.");
}
@Test
public void testUnusedBlockProblem() throws IOException, URISyntaxException {

View File

@ -113,35 +113,33 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) SZ#0 = (byte) SZ#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::cur_item#1
Self Phi Eliminated (byte) SZ#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) SZ#2 (byte) SZ#0
Redundant Phi (byte*) main::cur_item#1 (byte*) main::cur_item#0
Redundant Phi (byte) SZ#1 (byte) SZ#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if((byte) main::sub#1!=rangelast(0,SZ#0)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) SZ#0 = 15
Constant (const byte) main::sub#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[SZ#0]) items#0 = { fill( SZ#0, 0) }
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::cur_item#0 = items#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::sub#1 ← ++ main::sub#2 to ++
Resolved ranged comparison value if(main::sub#1!=rangelast(0,SZ#0)) goto main::@1 to (const byte) SZ#0+(byte/signed byte/word/signed word/dword/signed dword) 1
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::sub#0
Constant inlined main::sub#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::cur_item#0 = (const byte[SZ#0]) items#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -155,7 +153,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::sub#3 ← main::sub#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -190,44 +190,44 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) main::cur_item#2 = (byte*) main::cur_item#3
Alias (byte) ITEM_SIZE#2 = (byte) ITEM_SIZE#4
Alias (byte) main::item#2 = (byte) main::item#3
Alias (byte) ITEM_COUNT#0 = (byte) ITEM_COUNT#2
Alias (byte) ITEM_SIZE#0 = (byte) ITEM_SIZE#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::item#2
Self Phi Eliminated (byte*) main::cur_item#2
Self Phi Eliminated (byte) ITEM_SIZE#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) ITEM_COUNT#1 (byte) ITEM_COUNT#0
Redundant Phi (byte) ITEM_SIZE#3 (byte) ITEM_SIZE#0
Redundant Phi (byte) main::item#2 (byte) main::item#4
Redundant Phi (byte*) main::cur_item#2 (byte*) main::cur_item#4
Redundant Phi (byte) ITEM_SIZE#2 (byte) ITEM_SIZE#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$4 if((byte) main::sub#1!=rangelast(0,main::$1)) goto main::@2
Simple Condition (bool~) main::$5 if((byte) main::item#1!=rangelast(0,main::$0)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) ITEM_COUNT#0 = 3
Constant (const byte) ITEM_SIZE#0 = 5
Constant (const byte[$0]) items#0 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
Constant (const byte) main::item#0 = 0
Constant (const byte) main::sub#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) $0 = ITEM_COUNT#0*ITEM_SIZE#0
Constant (const byte*) main::cur_item#0 = items#0
Constant (const byte/signed word/word/dword/signed dword) main::$0 = ITEM_COUNT#0-1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::item#1 ← ++ main::item#4 to ++
Resolved ranged comparison value if(main::item#1!=rangelast(0,main::$0)) goto main::@1 to (const byte/signed word/word/dword/signed dword) main::$0+(byte/signed byte/word/signed word/dword/signed dword) 1
Self Phi Eliminated (byte) ITEM_SIZE#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) ITEM_SIZE#1 (const byte) ITEM_SIZE#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte/signed word/word/dword/signed dword) main::$1 = ITEM_SIZE#0-1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::sub#1 ← ++ main::sub#2 to ++
Resolved ranged comparison value if(main::sub#1!=rangelast(0,main::$1)) goto main::@2 to (const byte/signed word/word/dword/signed dword) main::$1+(byte/signed byte/word/signed word/dword/signed dword) 1
OPTIMIZING CONTROL FLOW GRAPH
@ -240,11 +240,9 @@ Constant inlined $0 = (const byte) ITEM_COUNT#0*(const byte) ITEM_SIZE#0
Constant inlined main::cur_item#0 = (const byte[ITEM_COUNT#0*ITEM_SIZE#0]) items#0
Constant inlined main::$0 = (const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::item#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@3 and main::@1)
Added new block during phi lifting main::@6(between main::@2 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -266,7 +264,6 @@ Coalesced [18] main::sub#3 ← main::sub#1
Coalesced down to 3 phi equivalence classes
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -105,33 +105,31 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) SCREEN#0 = (byte*) SCREEN#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte[3]) b#0 = { fill( 3, 0) }
Constant (const byte[]) c#0 = { 'c', 'm', 'l' }
Constant (const byte[]) d#0 = $0
Constant (const byte*) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::$0 = SCREEN#0+1
Constant (const byte*) main::$1 = SCREEN#0+2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(b#0+0)
Consolidated array index constant in *(b#0+0)
Consolidated array index constant in *(c#0+1)
Consolidated array index constant in *(d#0+2)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined $0 = (const byte[]) d#0
Constant inlined main::$0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero b#0+0
Simplifying constant plus zero b#0+0
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -141,7 +139,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -221,35 +221,35 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) SCREEN#1 = (byte*) SCREEN#6 (byte*) SCREEN#7
Alias (byte) main::k#2 = (byte) main::k#3
Alias (byte*) SCREEN#2 = (byte*) SCREEN#8
Alias (byte*) SCREEN#0 = (byte*) SCREEN#9
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Self Phi Eliminated (byte) main::i#2
Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte) main::k#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#3
Redundant Phi (byte) main::i#2 (byte) main::i#4
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#4
Redundant Phi (byte) main::k#2 (byte) main::k#4
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if((byte) main::j#1!=rangelast(0,100)) goto main::@2
Simple Condition (bool~) main::$1 if((byte) main::i#1!=rangelast(0,100)) goto main::@1
Simple Condition (bool~) main::$2 if((byte) main::l#1!=rangelast(0,100)) goto main::@4
Simple Condition (bool~) main::$3 if((byte) main::k#1!=rangelast(0,100)) goto main::@3
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 0
Constant (const byte) main::k#0 = 0
Constant (const byte) main::l#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::j#1 ← ++ main::j#2 to ++
Resolved ranged comparison value if(main::j#1!=rangelast(0,100)) goto main::@2 to (byte/signed byte/word/signed word/dword/signed dword) 101
Resolved ranged next value main::i#1 ← ++ main::i#4 to ++
@ -259,13 +259,13 @@ Resolved ranged comparison value if(main::l#1!=rangelast(0,100)) goto main::@4 t
Resolved ranged next value main::k#1 ← ++ main::k#4 to ++
Resolved ranged comparison value if(main::k#1!=rangelast(0,100)) goto main::@3 to (byte/signed byte/word/signed word/dword/signed dword) 101
Culled Empty Block (label) main::@6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte*) SCREEN#3
Self Phi Eliminated (byte*) SCREEN#4
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#3 (const byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#4 (byte*) SCREEN#3
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::j#0
@ -275,13 +275,11 @@ Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dwo
Constant inlined main::k#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@5 main::@3 main::@4 main::@7 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@9(between main::@5 and main::@1)
Added new block during phi lifting main::@10(between main::@2 and main::@2)
Added new block during phi lifting main::@11(between main::@7 and main::@3)
Added new block during phi lifting main::@12(between main::@4 and main::@4)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@5 main::@3 main::@4 main::@7 main::@return main::@11 main::@12 main::@9 main::@10
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -303,7 +301,6 @@ Culled Empty Block (label) main::@11
Culled Empty Block (label) main::@12
Culled Empty Block (label) main::@9
Culled Empty Block (label) main::@10
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@5 main::@3 main::@4 main::@7 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -2618,14 +2618,14 @@ Culled Empty Block (label) bitmap_line::@34
Culled Empty Block (label) bitmap_line::@35
Culled Empty Block (label) bitmap_line::@36
Culled Empty Block (label) @15
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
Inversing boolean not (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1
Inversing boolean not (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1
Inversing boolean not (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1
Inversing boolean not (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
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
@ -2690,7 +2690,7 @@ Alias (byte) lines_cnt#4 = (byte) lines_cnt#6
Alias (byte) lines::l#2 = (byte) lines::l#3
Alias (byte) lines_cnt#1 = (byte) lines_cnt#2
Alias (byte) lines_cnt#0 = (byte) lines_cnt#10
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
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
@ -2710,7 +2710,7 @@ 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
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) bitmap_init::bitmap#1
Self Phi Eliminated (byte) bitmap_clear::y#2
Self Phi Eliminated (byte) bitmap_line_xdyi::yd#3
@ -2727,7 +2727,7 @@ Self Phi Eliminated (byte) bitmap_line_ydxd::yd#2
Self Phi Eliminated (byte) bitmap_line_ydxd::y1#2
Self Phi Eliminated (byte) lines_cnt#4
Self Phi Eliminated (byte) lines_cnt#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#0
Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2
Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4
@ -2751,7 +2751,7 @@ Redundant Phi (byte) lines_cnt#5 (byte) lines_cnt#0
Redundant Phi (byte) lines_cnt#4 (byte) lines_cnt#5
Redundant Phi (byte) lines_cnt#3 (byte) lines_cnt#4
Redundant Phi (byte) lines_cnt#1 (byte) lines_cnt#3
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) bitmap_init::$4 if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
Simple Condition (bool~) bitmap_init::$5 if((byte) bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1
Simple Condition (bool~) bitmap_init::$12 if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
@ -2775,7 +2775,7 @@ Simple Condition (bool~) bitmap_line_ydxd::$4 if((byte) bitmap_line_ydxd::yd#5>=
Simple Condition (bool~) bitmap_line_ydxd::$7 if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1
Simple Condition (bool~) lines::$3 if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1
Simple Condition (bool~) init_screen::$1 if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte*) D011#0 = ((byte*))53265
@ -2802,43 +2802,43 @@ Constant (const byte[]) lines_x#0 = { 60, 80, 110, 80, 60, 40, 10, 40, 60 }
Constant (const byte[]) lines_y#0 = { 10, 40, 60, 80, 110, 80, 60, 40, 10 }
Constant (const byte) lines_cnt#0 = 8
Constant (const byte) lines::l#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = VIC_BMM#0|VIC_DEN#0
Constant (const word) main::$3 = ((word))SCREEN#0
Constant (const word) main::$6 = ((word))BITMAP#0
Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0
Constant (const byte*) init_screen::c#0 = SCREEN#0
Constant (const byte*) init_screen::$0 = SCREEN#0+1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) bitmap_init::$1 = >bitmap_init::bitmap#0
Constant (const byte) main::$1 = main::$0|VIC_RSEL#0
Constant (const word) main::$4 = main::$3&16383
Constant (const word) main::$7 = main::$6&16383
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) main::$2 = main::$1|3
Constant (const word/signed dword/dword) main::$5 = main::$4/64
Constant (const word/signed dword/dword) main::$8 = main::$7/1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word/dword) main::$9 = main::$5|main::$8
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$10 = ((byte))main::$9
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in assignment *(lines_x#0+1 + lines::$0)
Consolidated array index constant in assignment *(lines_y#0+1 + lines::$1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_xhi#0 + 0) w= *(bitmap_plot_xlo#0 + 0)
Fixing inline constructor with bitmap_plot::$2 ← *(bitmap_plot_xhi#0 + bitmap_plot::x#4) w= *(bitmap_plot_xlo#0 + bitmap_plot::x#4)
Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#4) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#4)
Succesful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization Pass2FixInlineConstructors
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) lines::$0 ← (byte) lines::l#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) lines::$1 ← (byte) lines::l#2
Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3
Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
Resolved ranged comparison value if(bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
@ -2852,14 +2852,14 @@ Culled Empty Block (label) bitmap_init::@6
Culled Empty Block (label) @11
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2
Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3
Alias (byte) lines::l#2 = (byte~) lines::$0 (byte~) lines::$1
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Consolidated array index constant in *(bitmap_plot_xhi#0+0)
Consolidated array index constant in *(bitmap_plot_xlo#0+0)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) bitmap_init::bits#0
Inlining constant with var siblings (const byte) bitmap_init::x#0
@ -2894,10 +2894,9 @@ Constant inlined main::$7 = ((word))(const byte*) BITMAP#0&(word/signed word/dwo
Constant inlined init_screen::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024
Constant inlined main::$8 = ((word))(const byte*) BITMAP#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024
Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero bitmap_plot_xhi#0+0
Simplifying constant plus zero bitmap_plot_xlo#0+0
Block Sequence Planned @begin @14 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return init_screen init_screen::@1 init_screen::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return
Added new block during phi lifting lines::@4(between lines::@3 and lines::@1)
Added new block during phi lifting bitmap_line_xdyi::@6(between bitmap_line_xdyi::@2 and bitmap_line_xdyi::@1)
Added new block during phi lifting bitmap_line_xdyi::@7(between bitmap_line_xdyi::@5 and bitmap_line_xdyi::@2)
@ -2914,7 +2913,6 @@ Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and b
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3)
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4)
Block Sequence Planned @begin @14 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return lines::@4 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 init_screen init_screen::@1 init_screen::@return init_screen::@3 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @14
Adding NOP phi() at start of @end
@ -3072,7 +3070,6 @@ Culled Empty Block (label) bitmap_init::@5
Culled Empty Block (label) bitmap_init::@11
Culled Empty Block (label) bitmap_init::@12
Culled Empty Block (label) bitmap_init::@9
Block Sequence Planned @begin @14 @end main main::@3 main::@4 main::@1 lines lines::@1 lines::@3 lines::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return init_screen init_screen::@1 init_screen::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @14
Adding NOP phi() at start of @end

View File

@ -939,10 +939,10 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Not aliassing identity: SCREEN#3 SCREEN#3
Alias (byte*) RASTER#3 = (byte*) RASTER#4 (byte*) RASTER#6
Alias (byte*) BGCOL#1 = (byte*) BGCOL#9 (byte*) BGCOL#7
@ -969,14 +969,14 @@ Alias (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#3
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#4
Alias (byte*) init_plot_tables::yoffs#1 = (byte*~) init_plot_tables::$14
Alias (byte*) SCREEN#2 = (byte*) SCREEN#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: RASTER#1 RASTER#1
Not aliassing identity: BGCOL#2 BGCOL#2
Not aliassing identity: plots_cnt#4 plots_cnt#4
Not aliassing identity: SCREEN#3 SCREEN#3
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#3
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: RASTER#1 RASTER#1
Not aliassing identity: BGCOL#2 BGCOL#2
Not aliassing identity: plots_cnt#4 plots_cnt#4
@ -990,7 +990,7 @@ Self Phi Eliminated (byte) plots_cnt#4
Self Phi Eliminated (byte) plots_cnt#1
Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte*) SCREEN#3
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
Redundant Phi (byte*) FGCOL#1 (byte*) FGCOL#0
Redundant Phi (byte) BMM#1 (byte) BMM#0
@ -1011,7 +1011,7 @@ Redundant Phi (byte) plot::y#1 (byte) plot::y#0
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#1
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#6
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$11 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2
Simple Condition (bool~) plots::$1 if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1
Simple Condition (bool~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2
@ -1020,7 +1020,7 @@ Simple Condition (bool~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!
Simple Condition (bool~) init_plot_tables::$15 if((byte) init_plot_tables::y#1!=rangelast(0,255)) goto init_plot_tables::@3
Simple Condition (bool~) init_screen::$1 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1
Simple Condition (bool~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) D011#0 = ((byte*))53265
Constant (const byte) BMM#0 = 32
Constant (const byte) DEN#0 = 16
@ -1048,7 +1048,7 @@ Constant (const byte) init_plot_tables::bits#2 = 128
Constant (const byte*) init_plot_tables::yoffs#0 = ((byte*))0
Constant (const byte) init_plot_tables::y#0 = 0
Constant (const word/signed word/dword/signed dword) init_plot_tables::$13 = 40*8
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = BMM#0|DEN#0
Constant (const word) main::$3 = ((word))SCREEN#0
Constant (const word) main::$5 = ((word))BITMAP#0
@ -1057,20 +1057,20 @@ Constant (const byte*) init_screen::b#0 = BITMAP#0
Constant (const byte*) init_screen::$0 = BITMAP#0+8192
Constant (const byte*) init_screen::c#0 = SCREEN#0
Constant (const byte*) init_screen::$2 = SCREEN#0+1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$1 = main::$0|RSEL#0
Constant (const word/signed dword/dword) main::$4 = main::$3/64
Constant (const word/signed dword/dword) main::$6 = main::$5/1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) main::$2 = main::$1|3
Constant (const word/dword) main::$7 = main::$4|main::$6
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$8 = ((byte))main::$7
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to ++
Resolved ranged comparison value if(init_plot_tables::x#1!=rangelast(0,255)) goto init_plot_tables::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value init_plot_tables::y#1 ← ++ init_plot_tables::y#2 to ++
@ -1081,7 +1081,7 @@ Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) init_plot_tables::@6
Culled Empty Block (label) init_screen::@3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) plots::i#0
Inlining constant with var siblings (const byte*) plot::plotter_x#0
@ -1116,8 +1116,7 @@ Constant inlined init_screen::b#0 = (const byte*) BITMAP#0
Constant inlined main::$7 = ((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024
Constant inlined init_screen::$0 = (const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192
Constant inlined main::$8 = ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 plots plots::@1 plots::@3 plots::@return plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@5 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_screen init_screen::@1 init_screen::@2 init_screen::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting plots::@4(between plots::@3 and plots::@1)
Added new block during phi lifting init_plot_tables::@9(between init_plot_tables::@2 and init_plot_tables::@1)
Added new block during phi lifting init_plot_tables::@10(between init_plot_tables::@1 and init_plot_tables::@2)
@ -1125,7 +1124,6 @@ Added new block during phi lifting init_plot_tables::@11(between init_plot_table
Added new block during phi lifting init_plot_tables::@12(between init_plot_tables::@3 and init_plot_tables::@4)
Added new block during phi lifting init_screen::@5(between init_screen::@1 and init_screen::@1)
Added new block during phi lifting init_screen::@6(between init_screen::@2 and init_screen::@2)
Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 plots plots::@1 plots::@3 plots::@return plots::@4 plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@5 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_plot_tables::@11 init_plot_tables::@12 init_plot_tables::@9 init_plot_tables::@10 init_screen init_screen::@1 init_screen::@2 init_screen::@return init_screen::@6 init_screen::@5
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
@ -1166,7 +1164,6 @@ Culled Empty Block (label) init_plot_tables::@12
Culled Empty Block (label) init_plot_tables::@9
Culled Empty Block (label) init_screen::@6
Culled Empty Block (label) init_screen::@5
Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 plots plots::@1 plots::@3 plots::@return plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_plot_tables::@10 init_screen init_screen::@1 init_screen::@2 init_screen::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end

View File

@ -360,37 +360,37 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@3
Culled Empty Block (label) @5
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) bool_const_vars::$2 ← (byte/signed byte/word/signed word/dword/signed dword) 21 >= (byte) bool_const_vars::a#0 from (bool~) bool_const_vars::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_vars::a#0
Inversing boolean not (bool~) bool_const_inline::$7 ← (byte/signed byte/word/signed word/dword/signed dword) 21 >= (byte) bool_const_inline::a#0 from (bool~) bool_const_inline::$6 ← (byte/signed byte/word/signed word/dword/signed dword) 21 < (byte) bool_const_inline::a#0
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (bool) bool_const_vars::b1#0 = (bool~) bool_const_vars::$3
Alias (bool) bool_const_vars::b2#0 = (bool~) bool_const_vars::$7
Alias (bool) bool_const_vars::b#0 = (bool~) bool_const_vars::$10
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Rewriting || if()-condition to two if()s (bool) bool_const_vars::b#0 ← (bool~) bool_const_vars::$9 || false
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting && if()-condition to two if()s (bool~) bool_const_vars::$9 ← (bool) bool_const_vars::b1#0 && (bool~) bool_const_vars::$8
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool) bool_const_vars::b1#0 ← (bool~) bool_const_vars::$0 || (bool~) bool_const_vars::$2
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_const_inline::$8 ← (bool~) bool_const_inline::$5 || (bool~) bool_const_inline::$7
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_const_inline::$5 ← (bool~) bool_const_inline::$0 || (bool~) bool_const_inline::$4
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting ! if()-condition to reversed if() (bool~) bool_const_vars::$8 ← ! (bool) bool_const_vars::b2#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool) bool_const_vars::b2#0 ← (bool~) bool_const_vars::$4 || (bool~) bool_const_vars::$6
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting && if()-condition to two if()s (bool~) bool_const_inline::$4 ← (bool~) bool_const_inline::$2 && (bool~) bool_const_inline::$3
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const bool) bool_const_if::b#0 = true
Constant (const byte) bool_const_vars::a#0 = 14
Constant (const signed byte/signed word/signed dword) bool_const_vars::$5 = -8
Constant (const byte) bool_const_inline::a#0 = 23
Constant (const signed byte/signed word/signed dword) bool_const_inline::$1 = -8
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const bool) bool_const_vars::$0 = bool_const_vars::a#0==15
Constant (const bool) bool_const_vars::$2 = 21>=bool_const_vars::a#0
Constant (const bool) bool_const_vars::$4 = bool_const_vars::a#0!=44
@ -399,14 +399,14 @@ Constant (const bool) bool_const_inline::$0 = bool_const_inline::a#0!=44
Constant (const bool) bool_const_inline::$2 = bool_const_inline::a#0>=bool_const_inline::$1
Constant (const bool) bool_const_inline::$3 = bool_const_inline::a#0==15
Constant (const bool) bool_const_inline::$7 = 21>=bool_const_inline::a#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(SCREEN#0+0)
Consolidated array index constant in *(SCREEN#0+0)
Consolidated array index constant in *(SCREEN#0+1)
Consolidated array index constant in *(SCREEN#0+1)
Consolidated array index constant in *(SCREEN#0+2)
Consolidated array index constant in *(SCREEN#0+2)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always true - replacing block destination if((const bool) bool_const_if::b#0) goto bool_const_if::@1
if() condition always false - eliminating if((const bool) bool_const_vars::$0) goto bool_const_vars::@6
if() condition always true - replacing block destination if((const bool) bool_const_inline::$0) goto bool_const_inline::@1
@ -417,7 +417,7 @@ if() condition always false - eliminating if((const bool) bool_const_inline::$7)
if() condition always true - replacing block destination if((const bool) bool_const_inline::$2) goto bool_const_inline::@7
if() condition always true - replacing block destination if((const bool) bool_const_vars::$6) goto bool_const_vars::@5
if() condition always false - eliminating if((const bool) bool_const_inline::$3) goto bool_const_inline::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const bool) bool_const_if::b#0
Eliminating unused constant (const bool) bool_const_vars::$0
Eliminating unused constant (const bool) bool_const_vars::$2
@ -427,12 +427,12 @@ Eliminating unused constant (const bool) bool_const_inline::$0
Eliminating unused constant (const bool) bool_const_inline::$2
Eliminating unused constant (const bool) bool_const_inline::$3
Eliminating unused constant (const bool) bool_const_inline::$7
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const byte) bool_const_vars::a#0
Eliminating unused constant (const signed byte/signed word/signed dword) bool_const_vars::$5
Eliminating unused constant (const byte) bool_const_inline::a#0
Eliminating unused constant (const signed byte/signed word/signed dword) bool_const_inline::$1
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block bool_const_if::@3
Removing unused block bool_const_vars::@1
Removing unused block bool_const_inline::@3
@ -440,15 +440,13 @@ Removing unused block bool_const_inline::@5
Removing unused block bool_const_inline::@6
Removing unused block bool_const_vars::@8
Removing unused block bool_const_inline::@7
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) bool_const_vars::@5
Culled Empty Block (label) bool_const_vars::@6
Culled Empty Block (label) bool_const_vars::@7
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero SCREEN#0+0
Block Sequence Planned @begin @4 @end main main::@1 main::@2 main::@return bool_const_inline bool_const_inline::@1 bool_const_inline::@return bool_const_vars bool_const_vars::@3 bool_const_vars::@return bool_const_if bool_const_if::@1 bool_const_if::@return
Block Sequence Planned @begin @4 @end main main::@1 main::@2 main::@return bool_const_inline bool_const_inline::@1 bool_const_inline::@return bool_const_vars bool_const_vars::@3 bool_const_vars::@return bool_const_if bool_const_if::@1 bool_const_if::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @4
Adding NOP phi() at start of @end
@ -465,7 +463,6 @@ Calls in [main] to bool_const_if:5 bool_const_vars:7 bool_const_inline:9
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @4 @end main main::@1 main::@2 main::@return bool_const_inline bool_const_inline::@1 bool_const_inline::@return bool_const_vars bool_const_vars::@3 bool_const_vars::@return bool_const_if bool_const_if::@1 bool_const_if::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @4
Adding NOP phi() at start of @end

View File

@ -223,36 +223,34 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (bool) isSet::b#0 = (bool~) main::$1
Alias (bool) isSet::return#0 = (bool) isSet::return#3
Alias (byte*) main::screen#1 = (byte*) main::screen#3 (byte*) main::screen#4 (byte*) main::screen#2
Alias (byte) main::i#2 = (byte) main::i#6 (byte) main::i#3 (byte) main::i#4
Alias (bool) isSet::return#1 = (bool~) isSet::$2 (bool) isSet::return#4 (bool) isSet::return#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) main::i#2 = (byte) main::i#5
Alias (byte*) main::screen#1 = (byte*) main::screen#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::screen#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
Redundant Phi (byte) isSet::i#1 (byte) isSet::i#0
Redundant Phi (bool) isSet::b#1 (bool) isSet::b#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$3 if((byte) main::i#1!=rangelast(0,100)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,100)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 101
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@1 main::@7 main::@4 main::@3 main::@return main::@2 isSet isSet::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@8(between main::@3 and main::@1)
Block Sequence Planned @begin @2 @end main main::@1 main::@7 main::@4 main::@3 main::@return main::@8 main::@2 isSet isSet::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -271,7 +269,6 @@ Created 1 initial phi equivalence classes
Coalesced [17] main::i#7 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@8
Block Sequence Planned @begin @2 @end main main::@1 main::@7 main::@4 main::@3 main::@return main::@2 isSet isSet::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -558,38 +558,38 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@4
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) bool_and::i#2 = (byte) bool_and::i#3 (byte) bool_and::i#4
Alias (byte) bool_or::i#2 = (byte) bool_or::i#3 (byte) bool_or::i#4
Alias (byte) bool_not::i#2 = (byte) bool_not::i#3 (byte) bool_not::i#4
Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#3 (byte) bool_complex::i#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) bool_and::i#2 = (byte) bool_and::i#5
Alias (byte) bool_or::i#2 = (byte) bool_or::i#5
Alias (byte) bool_not::i#2 = (byte) bool_not::i#5
Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) bool_and::$4 if((byte) bool_and::i#1!=rangelast(0,20)) goto bool_and::@1
Simple Condition (bool~) bool_or::$4 if((byte) bool_or::i#1!=rangelast(0,20)) goto bool_or::@1
Simple Condition (bool~) bool_not::$5 if((byte) bool_not::i#1!=rangelast(0,20)) goto bool_not::@1
Simple Condition (bool~) bool_complex::$10 if((byte) bool_complex::i#1!=rangelast(0,20)) goto bool_complex::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting && if()-condition to two if()s (bool~) bool_and::$3 ← (bool~) bool_and::$0 && (bool~) bool_and::$2
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_or::$3 ← (bool~) bool_or::$0 || (bool~) bool_or::$2
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting ! if()-condition to reversed if() (bool~) bool_not::$4 ← ! (bool~) bool_not::$3
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_not::$3 ← (bool~) bool_not::$0 || (bool~) bool_not::$2
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_complex::$9 ← (bool~) bool_complex::$3 || (bool~) bool_complex::$8
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting && if()-condition to two if()s (bool~) bool_complex::$3 ← (bool~) bool_complex::$0 && (bool~) bool_complex::$2
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting ! if()-condition to reversed if() (bool~) bool_complex::$8 ← ! (bool~) bool_complex::$7
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_complex::$7 ← (bool~) bool_complex::$4 || (bool~) bool_complex::$6
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) bool_and::screen#0 = ((byte*))1024
Constant (const byte) bool_and::i#0 = 0
Constant (const byte*) bool_or::screen#0 = ((byte*))1064
@ -598,7 +598,7 @@ Constant (const byte*) bool_not::screen#0 = ((byte*))1104
Constant (const byte) bool_not::i#0 = 0
Constant (const byte*) bool_complex::screen#0 = ((byte*))1144
Constant (const byte) bool_complex::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value bool_and::i#1 ← ++ bool_and::i#2 to ++
Resolved ranged comparison value if(bool_and::i#1!=rangelast(0,20)) goto bool_and::@1 to (byte/signed byte/word/signed word/dword/signed dword) 21
Resolved ranged next value bool_or::i#1 ← ++ bool_or::i#2 to ++
@ -617,7 +617,7 @@ Simple Condition (bool~) bool_not::$2 if((byte~) bool_not::$1==(byte/signed byte
Simple Condition (bool~) bool_complex::$4 if((byte) bool_complex::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_complex::@4
Simple Condition (bool~) bool_complex::$2 if((byte~) bool_complex::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2
Simple Condition (bool~) bool_complex::$6 if((byte~) bool_complex::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) bool_and::i#0
Inlining constant with var siblings (const byte) bool_or::i#0
@ -627,13 +627,11 @@ Constant inlined bool_complex::i#0 = (byte/signed byte/word/signed word/dword/si
Constant inlined bool_or::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bool_not::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bool_and::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @5 @end main main::@1 main::@2 main::@3 main::@return bool_complex bool_complex::@1 bool_complex::@7 bool_complex::@9 bool_complex::@2 bool_complex::@3 bool_complex::@return bool_complex::@4 bool_complex::@8 bool_not bool_not::@1 bool_not::@7 bool_not::@2 bool_not::@3 bool_not::@return bool_not::@4 bool_or bool_or::@1 bool_or::@7 bool_or::@4 bool_or::@3 bool_or::@return bool_or::@2 bool_and bool_and::@1 bool_and::@4 bool_and::@3 bool_and::@return bool_and::@7 bool_and::@2
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting bool_complex::@10(between bool_complex::@3 and bool_complex::@1)
Added new block during phi lifting bool_not::@8(between bool_not::@3 and bool_not::@1)
Added new block during phi lifting bool_or::@8(between bool_or::@3 and bool_or::@1)
Added new block during phi lifting bool_and::@8(between bool_and::@3 and bool_and::@1)
Block Sequence Planned @begin @5 @end main main::@1 main::@2 main::@3 main::@return bool_complex bool_complex::@1 bool_complex::@7 bool_complex::@9 bool_complex::@2 bool_complex::@3 bool_complex::@return bool_complex::@10 bool_complex::@4 bool_complex::@8 bool_not bool_not::@1 bool_not::@7 bool_not::@2 bool_not::@3 bool_not::@return bool_not::@8 bool_not::@4 bool_or bool_or::@1 bool_or::@7 bool_or::@4 bool_or::@3 bool_or::@return bool_or::@8 bool_or::@2 bool_and bool_and::@1 bool_and::@4 bool_and::@3 bool_and::@return bool_and::@8 bool_and::@7 bool_and::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
@ -663,7 +661,6 @@ Culled Empty Block (label) bool_complex::@10
Culled Empty Block (label) bool_not::@8
Culled Empty Block (label) bool_or::@8
Culled Empty Block (label) bool_and::@8
Block Sequence Planned @begin @5 @end main main::@1 main::@2 main::@3 main::@return bool_complex bool_complex::@1 bool_complex::@7 bool_complex::@9 bool_complex::@2 bool_complex::@3 bool_complex::@return bool_complex::@4 bool_complex::@8 bool_not bool_not::@1 bool_not::@7 bool_not::@2 bool_not::@3 bool_not::@return bool_not::@4 bool_or bool_or::@1 bool_or::@7 bool_or::@4 bool_or::@3 bool_or::@return bool_or::@2 bool_and bool_and::@1 bool_and::@4 bool_and::@3 bool_and::@return bool_and::@7 bool_and::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end

View File

@ -107,20 +107,20 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@1
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (bool*) main::bscreen#1 = (bool*~) main::$0 (bool*) main::bscreen#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Rewriting ! if()-condition to reversed if() (bool~) main::$1 ← ! *((bool*) main::bscreen#1)
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const bool*) main::bscreen#0 = ((bool*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const bool*) main::bscreen#1 = main::bscreen#0+2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const bool*) main::bscreen#2 = ++main::bscreen#1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::bscreen#0+0)
Consolidated array index constant in *(main::bscreen#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with different constant siblings (const bool*) main::bscreen#0
Inlining constant with different constant siblings (const bool*) main::bscreen#1
@ -128,10 +128,8 @@ Inlining constant with different constant siblings (const bool*) main::bscreen#2
Constant inlined main::bscreen#2 = ++((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::bscreen#0 = ((bool*))(word/signed word/dword/signed dword) 1024
Constant inlined main::bscreen#1 = ((bool*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 2
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero ((bool*))1024+0
Block Sequence Planned @begin @1 @end main main::@return main::@2
Block Sequence Planned @begin @1 @end main main::@return main::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -141,7 +139,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return main::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -630,7 +630,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@4
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (bool) bool_and::o1#0 = (bool~) bool_and::$0
Alias (bool) bool_and::o2#0 = (bool~) bool_and::$2
Alias (bool) bool_and::o3#0 = (bool~) bool_and::$3
@ -649,33 +649,33 @@ Alias (bool) bool_complex::o3#0 = (bool~) bool_complex::$3
Alias (bool) bool_complex::o4#0 = (bool~) bool_complex::$5
Alias (bool) bool_complex::o5#0 = (bool~) bool_complex::$6
Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#3 (byte) bool_complex::i#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) bool_and::i#2 = (byte) bool_and::i#5
Alias (byte) bool_or::i#2 = (byte) bool_or::i#5
Alias (byte) bool_not::i#2 = (byte) bool_not::i#5
Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) bool_and::$4 if((byte) bool_and::i#1!=rangelast(0,20)) goto bool_and::@1
Simple Condition (bool~) bool_or::$4 if((byte) bool_or::i#1!=rangelast(0,20)) goto bool_or::@1
Simple Condition (bool~) bool_not::$5 if((byte) bool_not::i#1!=rangelast(0,20)) goto bool_not::@1
Simple Condition (bool~) bool_complex::$7 if((byte) bool_complex::i#1!=rangelast(0,20)) goto bool_complex::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting && if()-condition to two if()s (bool) bool_and::o3#0 ← (bool) bool_and::o1#0 && (bool) bool_and::o2#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool) bool_or::o3#0 ← (bool) bool_or::o1#0 || (bool) bool_or::o2#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting ! if()-condition to reversed if() (bool) bool_not::o3#0 ← ! (bool~) bool_not::$3
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_not::$3 ← (bool) bool_not::o1#0 || (bool) bool_not::o2#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool) bool_complex::o5#0 ← (bool) bool_complex::o3#0 || (bool) bool_complex::o4#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting && if()-condition to two if()s (bool) bool_complex::o3#0 ← (bool) bool_complex::o1#0 && (bool) bool_complex::o2#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting ! if()-condition to reversed if() (bool) bool_complex::o4#0 ← ! (bool~) bool_complex::$4
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting || if()-condition to two if()s (bool~) bool_complex::$4 ← (bool) bool_complex::o1#0 || (bool) bool_complex::o2#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) bool_and::screen#0 = ((byte*))1024
Constant (const byte) bool_and::i#0 = 0
Constant (const byte*) bool_or::screen#0 = ((byte*))1064
@ -684,7 +684,7 @@ Constant (const byte*) bool_not::screen#0 = ((byte*))1104
Constant (const byte) bool_not::i#0 = 0
Constant (const byte*) bool_complex::screen#0 = ((byte*))1144
Constant (const byte) bool_complex::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value bool_and::i#1 ← ++ bool_and::i#2 to ++
Resolved ranged comparison value if(bool_and::i#1!=rangelast(0,20)) goto bool_and::@1 to (byte/signed byte/word/signed word/dword/signed dword) 21
Resolved ranged next value bool_or::i#1 ← ++ bool_or::i#2 to ++
@ -699,7 +699,7 @@ Simple Condition (bool) bool_not::o1#0 if((byte) bool_not::i#2<(byte/signed byte
Simple Condition (bool) bool_and::o2#0 if((byte~) bool_and::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_and::@2
Simple Condition (bool) bool_or::o2#0 if((byte~) bool_or::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_or::@2
Simple Condition (bool) bool_not::o2#0 if((byte~) bool_not::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_not::@4
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) bool_and::i#0
Inlining constant with var siblings (const byte) bool_or::i#0
@ -709,13 +709,11 @@ Constant inlined bool_complex::i#0 = (byte/signed byte/word/signed word/dword/si
Constant inlined bool_or::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bool_not::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bool_and::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @5 @end main main::@1 main::@2 main::@3 main::@return bool_complex bool_complex::@1 bool_complex::@7 bool_complex::@9 bool_complex::@2 bool_complex::@3 bool_complex::@return bool_complex::@4 bool_complex::@8 bool_not bool_not::@1 bool_not::@7 bool_not::@2 bool_not::@3 bool_not::@return bool_not::@4 bool_or bool_or::@1 bool_or::@7 bool_or::@4 bool_or::@3 bool_or::@return bool_or::@2 bool_and bool_and::@1 bool_and::@4 bool_and::@3 bool_and::@return bool_and::@7 bool_and::@2
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting bool_complex::@10(between bool_complex::@3 and bool_complex::@1)
Added new block during phi lifting bool_not::@8(between bool_not::@3 and bool_not::@1)
Added new block during phi lifting bool_or::@8(between bool_or::@3 and bool_or::@1)
Added new block during phi lifting bool_and::@8(between bool_and::@3 and bool_and::@1)
Block Sequence Planned @begin @5 @end main main::@1 main::@2 main::@3 main::@return bool_complex bool_complex::@1 bool_complex::@7 bool_complex::@9 bool_complex::@2 bool_complex::@3 bool_complex::@return bool_complex::@10 bool_complex::@4 bool_complex::@8 bool_not bool_not::@1 bool_not::@7 bool_not::@2 bool_not::@3 bool_not::@return bool_not::@8 bool_not::@4 bool_or bool_or::@1 bool_or::@7 bool_or::@4 bool_or::@3 bool_or::@return bool_or::@8 bool_or::@2 bool_and bool_and::@1 bool_and::@4 bool_and::@3 bool_and::@return bool_and::@8 bool_and::@7 bool_and::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
@ -745,7 +743,6 @@ Culled Empty Block (label) bool_complex::@10
Culled Empty Block (label) bool_not::@8
Culled Empty Block (label) bool_or::@8
Culled Empty Block (label) bool_and::@8
Block Sequence Planned @begin @5 @end main main::@1 main::@2 main::@3 main::@return bool_complex bool_complex::@1 bool_complex::@7 bool_complex::@9 bool_complex::@2 bool_complex::@3 bool_complex::@return bool_complex::@4 bool_complex::@8 bool_not bool_not::@1 bool_not::@7 bool_not::@2 bool_not::@3 bool_not::@return bool_not::@4 bool_or bool_or::@1 bool_or::@7 bool_or::@4 bool_or::@3 bool_or::@return bool_or::@2 bool_and bool_and::@1 bool_and::@4 bool_and::@3 bool_and::@return bool_and::@7 bool_and::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end

View File

@ -303,9 +303,9 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$10 ← (byte) main::xd#1 > (byte) main::e#1 from (bool~) main::$9 ← (byte) main::xd#1 <= (byte) main::e#1
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::xd#0 = (byte~) main::$0
Alias (byte) main::yd#0 = (byte~) main::$1
Alias (byte) main::x#0 = (byte) main::x0#0
@ -324,27 +324,27 @@ Alias (byte) main::y#1 = (byte/signed word/word/dword/signed dword~) main::$11
Alias (byte*) main::cursor#2 = (byte*~) main::$12
Alias (byte) main::e#2 = (byte~) main::$13
Alias (byte) STAR#0 = (byte) STAR#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) main::x1#1 = (byte) main::x1#2
Alias (byte) main::x#1 = (byte) main::x#3
Alias (byte) STAR#1 = (byte) STAR#3
Alias (byte) main::yd#1 = (byte) main::yd#2
Alias (byte) main::xd#1 = (byte) main::xd#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) STAR#1
Self Phi Eliminated (byte) main::yd#1
Self Phi Eliminated (byte) main::xd#1
Self Phi Eliminated (byte) main::x1#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) STAR#2 (byte) STAR#0
Redundant Phi (byte) STAR#1 (byte) STAR#2
Redundant Phi (byte) main::yd#1 (byte) main::yd#0
Redundant Phi (byte) main::xd#1 (byte) main::xd#0
Redundant Phi (byte) main::x1#1 (byte) main::x1#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$10 if((byte) main::xd#0>(byte) main::e#1) goto main::@2
Simple Condition (bool~) main::$15 if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$14) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) STAR#0 = 81
Constant (const word/signed word/dword/signed dword) $0 = 40*25
Constant (const byte[$0]) SCREEN#0 = ((byte*))1024
@ -352,17 +352,17 @@ Constant (const byte) main::x#0 = 4
Constant (const byte) main::y#0 = 4
Constant (const byte) main::x1#0 = 39
Constant (const byte) main::y1#0 = 24
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::xd#0 = main::x1#0-main::x#0
Constant (const byte) main::yd#0 = main::y1#0-main::y#0
Constant (const byte/signed word/word/dword/signed dword) main::$3 = main::y#0*40
Constant (const byte/signed word/word/dword/signed dword) main::$14 = main::x1#0+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::e#0 = main::yd#0/2
Constant (const byte*) main::$4 = SCREEN#0+main::$3
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::cursor#0 = main::$4+main::x#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::x#0
Inlining constant with var siblings (const byte) main::y#0
@ -376,11 +376,9 @@ Constant inlined main::$4 = (const byte[40*25]) SCREEN#0+(byte/signed byte/word/
Constant inlined main::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined $0 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 25
Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@2 and main::@1)
Added new block during phi lifting main::@6(between main::@1 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -410,7 +408,6 @@ Coalesced (already) [26] main::y#6 ← main::y#2
Coalesced down to 4 phi equivalence classes
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -295,9 +295,9 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$10 ← (byte) main::xd#1 >= (byte) main::e#1 from (bool~) main::$9 ← (byte) main::xd#1 < (byte) main::e#1
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::xd#0 = (byte~) main::$1
Alias (byte) main::yd#0 = (byte~) main::$2
Alias (byte) main::x#0 = (byte) main::x0#0
@ -315,26 +315,26 @@ Alias (byte) main::yd#1 = (byte) main::yd#3
Alias (byte) main::y#1 = (byte/signed word/word/dword/signed dword~) main::$11
Alias (word) main::idx#2 = (word/signed dword/dword~) main::$12
Alias (byte) main::e#2 = (byte~) main::$13
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) main::x1#1 = (byte) main::x1#2
Alias (byte) main::x#1 = (byte) main::x#3
Alias (byte) main::STAR#1 = (byte) main::STAR#2
Alias (byte) main::yd#1 = (byte) main::yd#2
Alias (byte) main::xd#1 = (byte) main::xd#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::STAR#1
Self Phi Eliminated (byte) main::yd#1
Self Phi Eliminated (byte) main::xd#1
Self Phi Eliminated (byte) main::x1#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) main::STAR#1 (byte) main::STAR#0
Redundant Phi (byte) main::yd#1 (byte) main::yd#0
Redundant Phi (byte) main::xd#1 (byte) main::xd#0
Redundant Phi (byte) main::x1#1 (byte) main::x1#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$10 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2
Simple Condition (bool~) main::$15 if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$14) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) main::STAR#0 = 81
Constant (const word/signed word/dword/signed dword) main::$0 = 40*25
Constant (const byte[main::$0]) main::screen#0 = ((byte*))1024
@ -342,15 +342,15 @@ Constant (const byte) main::x#0 = 0
Constant (const byte) main::y#0 = 0
Constant (const byte) main::x1#0 = 39
Constant (const byte) main::y1#0 = 24
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::xd#0 = main::x1#0-main::x#0
Constant (const byte) main::yd#0 = main::y1#0-main::y#0
Constant (const byte/signed word/word/dword/signed dword) main::$4 = main::y#0*40
Constant (const byte/signed word/word/dword/signed dword) main::$14 = main::x1#0+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::e#0 = main::yd#0/2
Constant (const word) main::idx#0 = main::x#0+main::$4
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::x#0
Inlining constant with var siblings (const byte) main::y#0
@ -363,13 +363,11 @@ Constant inlined main::x#0 = (byte/signed byte/word/signed word/dword/signed dwo
Constant inlined main::$4 = (byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined main::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero 0+0*40
Simplifying constant multiply by zero 0*40
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Added new block during phi lifting main::@5(between main::@2 and main::@1)
Added new block during phi lifting main::@6(between main::@1 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -399,7 +397,6 @@ Coalesced (already) [26] main::y#6 ← main::y#2
Coalesced down to 4 phi equivalence classes
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -2080,9 +2080,9 @@ OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) gfx_init::@2
Culled Empty Block (label) gfx_init_plane_charset8::@10
Culled Empty Block (label) @9
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) gfx_init_plane_charset8::$9 ← (byte~) gfx_init_plane_charset8::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) gfx_init_plane_charset8::$8 ← (byte~) gfx_init_plane_charset8::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::rst#2 = (byte) main::rst#3
Alias (byte) gfx_init_screen0::cy#2 = (byte) gfx_init_screen0::cy#3
Alias (byte*) gfx_init_screen0::ch#1 = (byte*) gfx_init_screen0::ch#4
@ -2102,7 +2102,7 @@ Alias (byte) gfx_init_plane_charset8::ch#2 = (byte) gfx_init_plane_charset8::ch#
Alias (byte*) gfx_init_plane_charset8::gfxa#1 = (byte*) gfx_init_plane_charset8::gfxa#7 (byte*) gfx_init_plane_charset8::gfxa#8
Alias (byte) gfx_init_plane_charset8::col#1 = (byte) gfx_init_plane_charset8::col#7 (byte) gfx_init_plane_charset8::col#8
Alias (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 = (byte~) gfx_init_plane_charset8::$15
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#3
Alias (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#3
Alias (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#3
@ -2110,19 +2110,19 @@ Alias (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#
Alias (byte) gfx_init_plane_charset8::cr#2 = (byte) gfx_init_plane_charset8::cr#4
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
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::rst#2
Self Phi Eliminated (byte) gfx_init_screen0::cy#2
Self Phi Eliminated (byte) gfx_init_plane_charset8::cr#2
Self Phi Eliminated (byte*) gfx_init_plane_charset8::chargen#4
Self Phi Eliminated (byte) gfx_init_plane_charset8::ch#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) main::rst#2 (byte) main::rst#0
Redundant Phi (byte) gfx_init_screen0::cy#2 (byte) gfx_init_screen0::cy#4
Redundant Phi (byte) gfx_init_plane_charset8::cr#2 (byte) gfx_init_plane_charset8::cr#6
Redundant Phi (byte*) gfx_init_plane_charset8::chargen#4 (byte*) gfx_init_plane_charset8::chargen#1
Redundant Phi (byte) gfx_init_plane_charset8::ch#2 (byte) gfx_init_plane_charset8::ch#7
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$25 if((byte) main::j#1!=rangelast(0,15)) goto main::@1
Simple Condition (bool~) main::$29 if(*((byte*) RASTER#0)!=(byte) main::rst#0) goto main::@6
Simple Condition (bool~) main::$35 if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8
@ -2132,7 +2132,7 @@ Simple Condition (bool~) gfx_init_plane_charset8::$9 if((byte~) gfx_init_plane_c
Simple Condition (bool~) gfx_init_plane_charset8::$11 if((byte) gfx_init_plane_charset8::cp#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@3
Simple Condition (bool~) gfx_init_plane_charset8::$12 if((byte) gfx_init_plane_charset8::cr#1!=rangelast(0,7)) goto gfx_init_plane_charset8::@2
Simple Condition (bool~) gfx_init_plane_charset8::$13 if((byte) gfx_init_plane_charset8::ch#1!=rangelast(0,255)) goto gfx_init_plane_charset8::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
@ -2184,7 +2184,7 @@ Constant (const byte) gfx_init_plane_charset8::cr#0 = 0
Constant (const byte) gfx_init_plane_charset8::cp#0 = 0
Constant (const byte) gfx_init_plane_charset8::c#0 = 0
Constant (const byte/signed byte/word/signed word/dword/signed dword) gfx_init_plane_charset8::$14 = 16384/16384
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$1 = DTV_HIGHCOLOR#0|DTV_LINEAR#0
Constant (const byte) main::$4 = VIC_DEN#0|VIC_ECM#0
Constant (const byte) main::$7 = VIC_MCM#0|VIC_CSEL#0
@ -2202,7 +2202,7 @@ Constant (const byte*) gfx_init_plane_charset8::$0 = CHARSET8#0/16384
Constant (const word) gfx_init_plane_charset8::$3 = ((word))CHARSET8#0
Constant (const byte*) gfx_init_plane_charset8::chargen#0 = CHARGEN#0+1
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#1 = ((byte))gfx_init_plane_charset8::$14
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$2 = main::$1|DTV_CHUNKY#0
Constant (const byte) main::$5 = main::$4|VIC_RSEL#0
Constant (const word/signed dword/dword) main::$13 = main::$12/16384
@ -2212,7 +2212,7 @@ Constant (const byte) main::$27 = main::$26|VIC_RSEL#0
Constant (const byte) main::$31 = main::$30|VIC_RSEL#0
Constant (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 = ((byte))gfx_init_plane_charset8::$0
Constant (const word) gfx_init_plane_charset8::$4 = gfx_init_plane_charset8::$3&16383
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$3 = main::$2|DTV_BADLINE_OFF#0
Constant (const byte/word/dword) main::$6 = main::$5|3
Constant (const byte) main::$14 = ((byte))main::$13
@ -2222,20 +2222,20 @@ Constant (const byte/word/dword) main::$28 = main::$27|3
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 = gfx_init_plane_charset8::gfxbCpuBank#0
Constant (const byte) gfx_init_plane_charset8::gfxbCpuBank#1 = ++gfx_init_plane_charset8::gfxbCpuBank#0
Constant (const word/signed dword/dword) gfx_init_plane_charset8::$5 = 16384+gfx_init_plane_charset8::$4
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) main::$15 = 3^main::$14
Constant (const byte) main::$19 = ((byte))main::$18
Constant (const byte) main::$23 = main::$22>>2
Constant (const byte*) gfx_init_plane_charset8::gfxa#0 = ((byte*))gfx_init_plane_charset8::$5
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$24 = main::$19|main::$23
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@3
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const byte) gfx_init_plane_charset8::gfxbCpuBank#1
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::j#1 ← ++ main::j#2 to ++
Resolved ranged comparison value if(main::j#1!=rangelast(0,15)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Resolved ranged next value gfx_init_screen0::cx#1 ← ++ gfx_init_screen0::cx#2 to ++
@ -2252,11 +2252,11 @@ Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) main::@2
Culled Empty Block (label) main::@6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte) gfx_init_plane_charset8::ch#7
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) gfx_init_plane_charset8::ch#7 (byte) gfx_init_plane_charset8::ch#8
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#1
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0
@ -2320,15 +2320,13 @@ Constant inlined gfx_init_plane_charset8::$0 = (const byte*) CHARSET8#0/(word/si
Constant inlined main::$7 = (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0
Constant inlined main::$8 = <(const byte*) SCREEN#0
Constant inlined gfx_init_plane_charset8::$3 = ((word))(const byte*) CHARSET8#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @8 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@18(between main::@1 and main::@1)
Added new block during phi lifting gfx_init_plane_charset8::@11(between gfx_init_plane_charset8::@7 and gfx_init_plane_charset8::@1)
Added new block during phi lifting gfx_init_plane_charset8::@12(between gfx_init_plane_charset8::@6 and gfx_init_plane_charset8::@2)
Added new block during phi lifting gfx_init_plane_charset8::@13(between gfx_init_plane_charset8::@4 and gfx_init_plane_charset8::@3)
Added new block during phi lifting gfx_init_screen0::@5(between gfx_init_screen0::@3 and gfx_init_screen0::@1)
Added new block during phi lifting gfx_init_screen0::@6(between gfx_init_screen0::@2 and gfx_init_screen0::@2)
Block Sequence Planned @begin @8 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 main::@18 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_charset8::@11 gfx_init_plane_charset8::@12 gfx_init_plane_charset8::@13 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return gfx_init_screen0::@5 gfx_init_screen0::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @8
Adding NOP phi() at start of @end
@ -2398,7 +2396,6 @@ Culled Empty Block (label) gfx_init_plane_charset8::@12
Culled Empty Block (label) gfx_init_plane_charset8::@13
Culled Empty Block (label) gfx_init_screen0::@5
Culled Empty Block (label) gfx_init_screen0::@6
Block Sequence Planned @begin @8 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init gfx_init::@1 gfx_init::@return gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @8
Adding NOP phi() at start of @end

View File

@ -1769,9 +1769,9 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) gfx_init_chunky::@9
Culled Empty Block (label) @7
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) gfx_init_chunky::$4 ← (byte*) gfx_init_chunky::gfxb#3 != (word/dword/signed dword) 32768 from (bool~) gfx_init_chunky::$3 ← (byte*) gfx_init_chunky::gfxb#3 == (word/dword/signed dword) 32768
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::rst#2 = (byte) main::rst#3
Alias (byte) gfx_init_chunky::gfxbCpuBank#0 = (byte~) gfx_init_chunky::$1 (byte) gfx_init_chunky::gfxbCpuBank#3
Alias (byte) gfx_init_chunky::c#0 = (byte~) gfx_init_chunky::$7
@ -1782,23 +1782,23 @@ Alias (byte) gfx_init_chunky::y#2 = (byte) gfx_init_chunky::y#3
Alias (byte*) gfx_init_chunky::gfxb#1 = (byte*) gfx_init_chunky::gfxb#6
Alias (byte) gfx_init_chunky::gfxbCpuBank#8 = (byte) gfx_init_chunky::gfxbCpuBank#9
Alias (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = (byte~) gfx_init_chunky::$11
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (word) gfx_init_chunky::x#2 = (word) gfx_init_chunky::x#3
Alias (byte) gfx_init_chunky::y#2 = (byte) gfx_init_chunky::y#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::rst#2
Self Phi Eliminated (byte) gfx_init_chunky::y#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) main::rst#2 (byte) main::rst#0
Redundant Phi (byte) gfx_init_chunky::y#2 (byte) gfx_init_chunky::y#6
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$24 if((byte) main::j#1!=rangelast(0,15)) goto main::@1
Simple Condition (bool~) main::$28 if(*((byte*) RASTER#0)!=(byte) main::rst#0) goto main::@6
Simple Condition (bool~) main::$34 if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8
Simple Condition (bool~) gfx_init_chunky::$4 if((byte*) gfx_init_chunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_chunky::@3
Simple Condition (bool~) gfx_init_chunky::$8 if((word) gfx_init_chunky::x#1!=rangelast(0,319)) goto gfx_init_chunky::@2
Simple Condition (bool~) gfx_init_chunky::$9 if((byte) gfx_init_chunky::y#1!=rangelast(0,50)) goto gfx_init_chunky::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
@ -1839,7 +1839,7 @@ Constant (const byte) gfx_init_chunky::y#0 = 0
Constant (const word) gfx_init_chunky::x#0 = 0
Constant (const byte*) gfx_init_chunky::gfxb#2 = ((byte*))16384
Constant (const byte/signed byte/word/signed word/dword/signed dword) gfx_init_chunky::$10 = 16384/16384
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$1 = DTV_HIGHCOLOR#0|DTV_LINEAR#0
Constant (const byte) main::$5 = VIC_DEN#0|VIC_ECM#0
Constant (const byte) main::$8 = VIC_MCM#0|VIC_CSEL#0
@ -1852,7 +1852,7 @@ Constant (const byte) main::$25 = VIC_DEN#0|VIC_ECM#0
Constant (const byte) main::$29 = VIC_DEN#0|VIC_ECM#0
Constant (const byte*) gfx_init_chunky::$0 = CHUNKY#0/16384
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((byte))gfx_init_chunky::$10
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$2 = main::$1|DTV_COLORRAM_OFF#0
Constant (const byte) main::$6 = main::$5|VIC_RSEL#0
Constant (const word/signed dword/dword) main::$12 = main::$11/16384
@ -1861,7 +1861,7 @@ Constant (const word) main::$20 = main::$19&16383
Constant (const byte) main::$26 = main::$25|VIC_RSEL#0
Constant (const byte) main::$30 = main::$29|VIC_RSEL#0
Constant (const byte) gfx_init_chunky::gfxbCpuBank#0 = ((byte))gfx_init_chunky::$0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$3 = main::$2|DTV_CHUNKY#0
Constant (const byte/word/dword) main::$7 = main::$6|3
Constant (const byte) main::$13 = ((byte))main::$12
@ -1870,18 +1870,18 @@ Constant (const byte) main::$21 = >main::$20
Constant (const byte/word/dword) main::$27 = main::$26|3
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 = gfx_init_chunky::gfxbCpuBank#0
Constant (const byte) gfx_init_chunky::gfxbCpuBank#1 = ++gfx_init_chunky::gfxbCpuBank#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$4 = main::$3|DTV_BADLINE_OFF#0
Constant (const byte/word/dword) main::$14 = 3^main::$13
Constant (const byte) main::$18 = ((byte))main::$17
Constant (const byte) main::$22 = main::$21>>2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$23 = main::$18|main::$22
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@3
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::j#1 ← ++ main::j#2 to ++
Resolved ranged comparison value if(main::j#1!=rangelast(0,15)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Resolved ranged next value gfx_init_chunky::x#1 ← ++ gfx_init_chunky::x#2 to ++
@ -1893,7 +1893,7 @@ Culled Empty Block (label) @4
Culled Empty Block (label) main::@2
Culled Empty Block (label) main::@6
Culled Empty Block (label) gfx_init_chunky::@7
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0
@ -1945,13 +1945,11 @@ Constant inlined gfx_init_chunky::$0 = (const byte*) CHUNKY#0/(word/signed word/
Constant inlined main::$9 = <(const byte*) CHUNKY#0
Constant inlined main::$7 = (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::$8 = (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @6 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@18(between main::@1 and main::@1)
Added new block during phi lifting gfx_init_chunky::@10(between gfx_init_chunky::@5 and gfx_init_chunky::@1)
Added new block during phi lifting gfx_init_chunky::@11(between gfx_init_chunky::@3 and gfx_init_chunky::@2)
Added new block during phi lifting gfx_init_chunky::@12(between gfx_init_chunky::@2 and gfx_init_chunky::@3)
Block Sequence Planned @begin @6 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 main::@18 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return gfx_init_chunky::@10 gfx_init_chunky::@11 gfx_init_chunky::@12 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @6
Adding NOP phi() at start of @end
@ -1991,7 +1989,6 @@ Culled Empty Block (label) main::@18
Culled Empty Block (label) gfx_init_chunky::@10
Culled Empty Block (label) gfx_init_chunky::@11
Culled Empty Block (label) gfx_init_chunky::@12
Block Sequence Planned @begin @6 @end main main::@17 main::@1 main::@3 main::@5 main::@7 main::@8 gfx_init_chunky gfx_init_chunky::@1 gfx_init_chunky::@2 gfx_init_chunky::@4 gfx_init_chunky::@8 gfx_init_chunky::@3 gfx_init_chunky::@5 gfx_init_chunky::@6 gfx_init_chunky::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @6
Adding NOP phi() at start of @end

View File

@ -1439,18 +1439,18 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::r#1 = (byte) main::r#4
Alias (byte) main::r#2 = (byte) main::r#3
Alias (byte*) DTV_BLITTER_ALU#0 = (byte*) DTV_BLITTER_ALU#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::r#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) DTV_BLITTER_ALU#1 (byte*) DTV_BLITTER_ALU#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$16 if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
Simple Condition (bool~) main::$20 if((byte) main::r#1!=rangelast(0,7)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311
Constant (const byte) DTV_FEATURE_ENABLE#0 = 1
Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))54048
@ -1503,7 +1503,7 @@ Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$7 =
Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$10 = <256
Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$11 = >256
Constant (const byte) main::r#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = <SRCA#0
Constant (const byte) main::$1 = >SRCA#0
Constant (const byte) main::$4 = <SRCB#0
@ -1512,19 +1512,19 @@ Constant (const byte) main::$8 = <SCREEN#0
Constant (const byte) main::$9 = >SCREEN#0
Constant (const byte) main::$12 = DTV_BLIT_FORCE_START#0|DTV_BLIT_SRCA_FWD#0
Constant (const byte) main::$17 = DTV_BLIT_FORCE_START#0|DTV_BLIT_SRCA_FWD#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$13 = main::$12|DTV_BLIT_SRCB_FWD#0
Constant (const byte) main::$18 = main::$17|DTV_BLIT_SRCB_FWD#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$14 = main::$13|DTV_BLIT_DEST_FWD#0
Constant (const byte) main::$19 = main::$18|DTV_BLIT_DEST_FWD#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::r#1 ← ++ main::r#2 to ++
Resolved ranged comparison value if(main::r#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::r#0
Constant inlined main::r#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
@ -1546,10 +1546,8 @@ Constant inlined main::$4 = <(const byte[]) SRCB#0
Constant inlined main::$9 = >(const byte*) SCREEN#0
Constant inlined main::$7 = >(word/signed word/dword/signed dword) 256
Constant inlined main::$8 = <(const byte*) SCREEN#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@3 and main::@2)
Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@return main::@5
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
@ -1565,7 +1563,6 @@ Created 1 initial phi equivalence classes
Coalesced [43] main::r#5 ← main::r#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @5 @end main main::@2 main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end

View File

@ -1276,11 +1276,11 @@ OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@2
Culled Empty Block (label) main::@5
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Simple Condition (bool~) main::$2 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4
Simple Condition (bool~) main::$3 if((byte) main::r#1!=rangelast(49,255)) goto main::@7
Simple Condition (bool~) main::$4 if((byte) main::c#1!=rangelast(0,15)) goto main::@8
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311
@ -1293,15 +1293,15 @@ Constant (const byte*) DTV_PALETTE#0 = ((byte*))53760
Constant (const byte[16]) main::palette#0 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
Constant (const byte) main::r#0 = 49
Constant (const byte) main::c#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = DTV_HIGHCOLOR#0|DTV_BORDER_OFF#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$1 = main::$0|DTV_BADLINE_OFF#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@4
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::r#1 ← ++ main::r#2 to ++
Resolved ranged comparison value if(main::r#1!=rangelast(49,255)) goto main::@7 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value main::c#1 ← ++ main::c#2 to ++
@ -1309,7 +1309,7 @@ Resolved ranged comparison value if(main::c#1!=rangelast(0,15)) goto main::@8 to
Culled Empty Block (label) @3
Culled Empty Block (label) main::@1
Culled Empty Block (label) main::@14
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::r#0
Inlining constant with var siblings (const byte) main::c#0
@ -1317,11 +1317,9 @@ Constant inlined main::r#0 = (byte/signed byte/word/signed word/dword/signed dwo
Constant inlined main::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::$1 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0
Constant inlined main::$0 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @5 @end main main::@4 main::@6 main::@7 main::@8
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@17(between main::@7 and main::@7)
Added new block during phi lifting main::@18(between main::@8 and main::@8)
Block Sequence Planned @begin @5 @end main main::@4 main::@6 main::@7 main::@8 main::@18 main::@17
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
@ -1338,7 +1336,6 @@ Coalesced [20] main::r#3 ← main::r#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@18
Culled Empty Block (label) main::@17
Block Sequence Planned @begin @5 @end main main::@4 main::@6 main::@7 main::@8
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -191,26 +191,26 @@ Alias (byte) line::x#0 = (byte) line::x0#2
Alias (byte*) screen#11 = (byte*) screen#4 (byte*) screen#5
Alias (byte*) screen#0 = (byte*) screen#15
Alias (byte*) screen#12 = (byte*) screen#6
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) line::x1#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) screen#13 (byte*) screen#0
Redundant Phi (byte*) screen#1 (byte*) screen#11
Redundant Phi (byte*) screen#2 (byte*) screen#11
Redundant Phi (byte) line::x1#2 (byte) line::x1#3
Redundant Phi (byte*) screen#12 (byte*) screen#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) line::$0 if((byte) line::x#1<(byte) line::x1#3) goto line::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte) line::x0#0 = 1
Constant (const byte) line::x1#0 = 2
Constant (const byte) line::x0#1 = 3
Constant (const byte) line::x1#1 = 5
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@2
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with different constant siblings (const byte) line::x0#0
Inlining constant with var siblings (const byte) line::x1#0
@ -222,10 +222,8 @@ Constant inlined line::x1#1 = (byte/signed byte/word/signed word/dword/signed dw
Constant inlined screen#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined line::x1#0 = (byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined line::x0#1 = (byte/signed byte/word/signed word/dword/signed dword) 3
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@1 main::@return line line::@1 line::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting line::@3(between line::@1 and line::@1)
Block Sequence Planned @begin @2 @end main main::@1 main::@return line line::@1 line::@return line::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -250,7 +248,6 @@ Coalesced [18] line::x#4 ← line::x#1
Coalesced (already) [19] screen#18 ← screen#11
Coalesced down to 3 phi equivalence classes
Culled Empty Block (label) line::@3
Block Sequence Planned @begin @2 @end main main::@1 main::@return line line::@1 line::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -118,24 +118,24 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte*) main::SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$5 if((byte) main::i#1!=rangelast(0,3)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const signed byte/signed word/signed dword) main::$0 = -1
Constant (const signed byte/signed word/signed dword) main::$1 = -2
Constant (const signed byte/signed word/signed dword) main::$2 = -3
Constant (const signed byte/signed word/signed dword) main::$3 = -4
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const signed byte[]) main::sbs#0 = { main::$0, main::$1, main::$2, main::$3 }
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Eliminating Noop Cast (byte~) main::$4 ← ((byte)) *((const signed byte[]) main::sbs#0 + (byte) main::i#2)
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,3)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4
OPTIMIZING CONTROL FLOW GRAPH
@ -145,10 +145,8 @@ Constant inlined main::$3 = -(byte/signed byte/word/signed word/dword/signed dwo
Constant inlined main::$1 = -(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::$2 = -(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::$0 = -(byte/signed byte/word/signed word/dword/signed dword) 1
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -162,7 +160,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -177,47 +177,45 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::midw#0 = (byte/signed word/word/dword/signed dword~) main::$3
Alias (byte) main::sumb#0 = (byte~) main::$4
Alias (byte) main::midb#0 = (byte/signed word/word/dword/signed dword~) main::$6
Alias (byte*) main::BGCOL#0 = (byte*) main::BGCOL#1 (byte*) main::BGCOL#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) main::$7 if(*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)==*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Constant (const byte) main::min#0 = 10
Constant (const byte) main::max#0 = 200
Constant (const byte*) main::BGCOL#0 = ((byte*))53281
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = main::min#0+main::max#0
Constant (const byte) main::sumb#0 = main::min#0+main::max#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) main::sumw#0 = ((word))main::$0
Constant (const byte) main::$5 = main::sumb#0>>1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) main::$1 = main::sumw#0>>1
Constant (const byte) main::midb#0 = main::$5+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$2 = ((byte))main::$1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::midw#0 = main::$2+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::SCREEN#0+0)
Consolidated array index constant in *(main::SCREEN#0+1)
Consolidated array index constant in *(main::SCREEN#0+0)
Consolidated array index constant in *(main::SCREEN#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$5 = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$1 = (const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$2 = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$0 = (const byte) main::min#0+(const byte) main::max#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero main::SCREEN#0+0
Simplifying constant plus zero main::SCREEN#0+0
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -227,7 +225,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -313,7 +313,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@3
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) SCREEN2#0 = (byte*~) $1 (byte*) SCREEN2#3
Alias (byte*) SCREEN3#0 = (byte*~) $3 (byte*) SCREEN3#6
Alias (byte*) SCREEN4#0 = (byte*~) $5 (byte*) SCREEN4#6
@ -324,14 +324,14 @@ Alias (byte*) SCREEN4#3 = (byte*) SCREEN4#4
Alias (byte) w::b#0 = (byte~) w::$1
Alias (byte) w::b2#0 = (byte/signed word/word/dword/signed dword~) w::$3
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Self Phi Eliminated (byte*) SCREEN2#1
Self Phi Eliminated (byte*) SCREEN3#3
Self Phi Eliminated (byte*) SCREEN4#3
Self Phi Eliminated (byte*) SCREEN3#1
Self Phi Eliminated (byte*) SCREEN4#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN2#2 (byte*) SCREEN2#0
Redundant Phi (byte*) SCREEN3#5 (byte*) SCREEN3#0
@ -344,10 +344,10 @@ Redundant Phi (byte*) SCREEN3#2 (byte*) SCREEN3#3
Redundant Phi (byte*) SCREEN4#2 (byte*) SCREEN4#3
Redundant Phi (byte*) SCREEN3#1 (byte*) SCREEN3#2
Redundant Phi (byte*) SCREEN4#1 (byte*) SCREEN4#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$4 if((byte) main::b#1!=rangelast(0,100)) goto main::@1
Simple Condition (bool~) w::$4 if((byte) w::i#1!=rangelast(0,10)) goto w::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte/signed byte/word/signed word/dword/signed dword) $0 = 40*3
Constant (const byte/word/signed word/dword/signed dword) $2 = 40*6
@ -357,17 +357,17 @@ Constant (const byte) w::i#0 = 0
Constant (const word) w::w1#0 = 1300
Constant (const word) w::w2#0 = 1250
Constant (const byte/signed byte/word/signed word/dword/signed dword) w::$2 = 1400-1350
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) SCREEN2#0 = SCREEN#0+$0
Constant (const byte*) SCREEN3#0 = SCREEN#0+$2
Constant (const byte*) SCREEN4#0 = SCREEN#0+$4
Constant (const word) w::$0 = w::w1#0-w::w2#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) w::b#0 = ((byte))w::$0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Eliminating Noop Cast (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
Eliminating Noop Cast (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
Resolved ranged next value main::b#1 ← ++ main::b#2 to ++
Resolved ranged comparison value if(main::b#1!=rangelast(0,100)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 101
Resolved ranged next value w::i#1 ← ++ w::i#2 to ++
@ -382,11 +382,9 @@ Constant inlined w::$0 = (const word) w::w1#0-(const word) w::w2#0
Constant inlined $0 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined w::$2 = (word/signed word/dword/signed dword) 1400-(word/signed word/dword/signed dword) 1350
Constant inlined $2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return w w::@1 w::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@4(between main::@1 and main::@1)
Added new block during phi lifting w::@3(between w::@1 and w::@1)
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return main::@4 w w::@1 w::@return w::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -406,7 +404,6 @@ Coalesced [24] w::i#3 ← w::i#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@4
Culled Empty Block (label) w::@3
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return w w::@1 w::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -93,13 +93,13 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::a#0 = 'c'
Constant (const byte) main::a#2 = 'l'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/signed word/word/dword/signed dword) main::$0 = 1+main::a#2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+40)
Consolidated array index constant in *(main::screen#0+1)
@ -107,17 +107,15 @@ Consolidated array index constant in *(main::screen#0+1)
Consolidated array index constant in *(main::screen#0+41)
Consolidated array index constant in *(main::screen#0+2)
Consolidated array index constant in *(main::screen#0+42)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::a#0
Inlining constant with var siblings (const byte) main::a#2
Constant inlined main::a#0 = (byte) 'c'
Constant inlined main::a#2 = (byte) 'l'
Constant inlined main::$0 = (byte/signed byte/word/signed word/dword/signed dword) 1+(byte) 'l'
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -128,7 +126,6 @@ Propagating live ranges...
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -3193,7 +3193,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @19
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) main::$20 ← (byte~) main::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$19 ← (byte~) main::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
@ -3203,7 +3203,7 @@ Inversing boolean not (bool~) main::$31 ← (byte) main::key#0 == (byte/signed b
Inversing boolean not (bool~) main::$34 ← (byte) main::pressed#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$33 ← (byte) main::pressed#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6
Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5
Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1
@ -3273,7 +3273,7 @@ Alias (byte) plot_chargen::y#3 = (byte) plot_chargen::y#4
Alias (byte*) plot_chargen::chargen#4 = (byte*) plot_chargen::chargen#7
Alias (byte*) plot_chargen::sc#2 = (byte*~) plot_chargen::$15
Alias (byte*) SCREEN#0 = (byte*) SCREEN#8
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) mul8u::a#2 = (byte) mul8u::a#4
Alias (word) mul8u::mb#2 = (word) mul8u::mb#3
Alias (byte*) SCREEN#21 = (byte*) SCREEN#33 (byte*) SCREEN#36 (byte*) SCREEN#30 (byte*) SCREEN#27 (byte*) SCREEN#22
@ -3289,7 +3289,7 @@ Alias (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#3
Alias (byte) plot_chargen::x#2 = (byte) plot_chargen::x#3
Alias (byte) plot_chargen::y#3 = (byte) plot_chargen::y#5
Alias (byte*) plot_chargen::chargen#4 = (byte*) plot_chargen::chargen#8
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: main::cur_pos#10 main::cur_pos#10
Not aliassing identity: main::shift#11 main::shift#11
Not aliassing identity: SCREEN#12 SCREEN#12
@ -3300,7 +3300,7 @@ Self Phi Eliminated (byte) main::shift#11
Self Phi Eliminated (byte*) SCREEN#12
Self Phi Eliminated (byte) plot_chargen::y#3
Self Phi Eliminated (byte*) plot_chargen::chargen#4
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) mul8u::b#1 (byte) mul8u::b#0
Redundant Phi (byte) mul8u::a#5 (byte) mul8u::a#1
Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0
@ -3313,7 +3313,7 @@ Redundant Phi (byte) main::shift#11 (byte) main::shift#10
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#21
Redundant Phi (byte) plot_chargen::y#3 (byte) plot_chargen::y#2
Redundant Phi (byte*) plot_chargen::chargen#4 (byte*) plot_chargen::chargen#3
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) mul8u::$0 if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
Simple Condition (bool~) mul8u::$3 if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
Simple Condition (bool~) main::$1 if((byte*) main::sc#1<(byte*~) main::$0) goto main::@1
@ -3331,7 +3331,7 @@ Simple Condition (bool~) plot_chargen::$4 if((byte) plot_chargen::shift#2==(byte
Simple Condition (bool~) plot_chargen::$12 if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4
Simple Condition (bool~) plot_chargen::$14 if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@3
Simple Condition (bool~) plot_chargen::$16 if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
@ -3417,7 +3417,7 @@ Constant (const byte) plot_chargen::y#0 = 0
Constant (const byte) plot_chargen::x#0 = 0
Constant (const byte) plot_chargen::c#0 = '.'
Constant (const byte) plot_chargen::c#1 = '*'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) mul8u::mb#0 = ((word))mul8u::b#0
Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 }
Constant (const byte*) main::sc#0 = SCREEN#0
@ -3431,19 +3431,19 @@ Constant (const byte) keyboard_key_pressed::key#1 = KEY_F3#0
Constant (const byte) keyboard_key_pressed::key#2 = KEY_F5#0
Constant (const byte) keyboard_key_pressed::key#3 = KEY_F7#0
Constant (const byte) keyboard_key_pressed::key#4 = KEY_LSHIFT#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_str_at::at#1 = main::$4+10
Constant (const byte*) print_str_at::at#2 = main::$7+20
Constant (const byte*) print_str_at::at#3 = main::$10+30
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated constant in assignment plot_chargen::$7
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always true - replacing block destination if(true) goto main::@3
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const byte) main::shift#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,3)) goto main::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4
Resolved ranged next value main::ch#1 ← ++ main::ch#2 to ++
@ -3460,20 +3460,20 @@ Culled Empty Block (label) main::@14
Culled Empty Block (label) main::@8
Culled Empty Block (label) main::@37
Culled Empty Block (label) main::@23
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Not aliassing identity: plot_chargen::chargen#3 plot_chargen::chargen#3
Self Phi Eliminated (byte*) SCREEN#21
Self Phi Eliminated (byte*) plot_chargen::chargen#3
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#21 (const byte*) SCREEN#0
Redundant Phi (byte*) plot_chargen::chargen#3 (byte*) plot_chargen::chargen#5
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) SCREEN#10 (const byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte*) plot_chargen::$6 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) plot_chargen::$7 = plot_chargen::$6+40+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const word) mul8u::res#0
Inlining constant with var siblings (const word) mul8u::mb#0
@ -3545,8 +3545,7 @@ Constant inlined plot_chargen::y#0 = (byte/signed byte/word/signed word/dword/si
Constant inlined main::$7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::pressed#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined plot_chargen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @18 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@38(between main::@1 and main::@1)
Added new block during phi lifting main::@39(between main::@29 and main::@2)
Added new block during phi lifting main::@40(between main::@12 and main::@3)
@ -3559,7 +3558,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::@2)
Added new block during phi lifting plot_chargen::@12(between plot_chargen::@4 and plot_chargen::@3)
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
Block Sequence Planned @begin @18 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@40 main::@45 main::@44 main::@43 main::@42 main::@41 main::@39 main::@38 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return plot_chargen::@11 plot_chargen::@12 plot_chargen::@10 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @18
Adding NOP phi() at start of @end
@ -3646,7 +3644,6 @@ Culled Empty Block (label) plot_chargen::@11
Culled Empty Block (label) plot_chargen::@12
Culled Empty Block (label) plot_chargen::@10
Culled Empty Block (label) mul8u::@10
Block Sequence Planned @begin @18 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@4 main::@31 main::@5 main::@32 main::@6 main::@33 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@44 main::@43 main::@42 main::@41 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @18
Adding NOP phi() at start of @end

View File

@ -297,9 +297,9 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$3 ← (byte~) main::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$2 ← (byte~) main::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte*) main::CHAR_A#0 = (byte*~) main::$0
Alias (byte) main::bits#1 = (byte~) main::$4
Alias (byte*) main::sc#5 = (byte*) main::sc#6
@ -316,29 +316,29 @@ Alias (byte*) main::sc#2 = (byte*~) main::$6
Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#2
Alias (byte*) PROCPORT#0 = (byte*) PROCPORT#3
Alias (byte*) SCREEN#0 = (byte*) SCREEN#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) main::sc#3 = (byte*) main::sc#5
Alias (byte) main::bits#2 = (byte) main::bits#3
Alias (byte) main::x#2 = (byte) main::x#3
Alias (byte) main::y#3 = (byte) main::y#5
Alias (byte*) main::CHAR_A#2 = (byte*) main::CHAR_A#4
Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#6
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::y#3
Self Phi Eliminated (byte*) main::CHAR_A#2
Self Phi Eliminated (byte*) PROCPORT#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) CHARGEN#1 (byte*) CHARGEN#0
Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte) main::y#3 (byte) main::y#2
Redundant Phi (byte*) main::CHAR_A#2 (byte*) main::CHAR_A#1
Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#8
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$3 if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
Simple Condition (bool~) main::$5 if((byte) main::x#1!=rangelast(0,7)) goto main::@2
Simple Condition (bool~) main::$7 if((byte) main::y#1!=rangelast(0,7)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const byte*) SCREEN#0 = ((byte*))1024
@ -346,20 +346,20 @@ Constant (const byte) main::y#0 = 0
Constant (const byte) main::x#0 = 0
Constant (const byte) main::c#0 = '.'
Constant (const byte) main::c#1 = '*'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::CHAR_A#0 = CHARGEN#0+8
Constant (const byte*) main::sc#0 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::x#1 ← ++ main::x#2 to ++
Resolved ranged comparison value if(main::x#1!=rangelast(0,7)) goto main::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value main::y#1 ← ++ main::y#2 to ++
Resolved ranged comparison value if(main::y#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Self Phi Eliminated (byte*) main::CHAR_A#1
Self Phi Eliminated (byte*) PROCPORT#8
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::CHAR_A#1 (const byte*) main::CHAR_A#0
Redundant Phi (byte*) PROCPORT#8 (const byte*) PROCPORT#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::y#0
Inlining constant with var siblings (const byte) main::x#0
@ -371,11 +371,9 @@ Constant inlined main::c#0 = (byte) '.'
Constant inlined main::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::c#1 = (byte) '*'
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@4 main::@3 main::@5 main::@6 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@7(between main::@5 and main::@1)
Added new block during phi lifting main::@8(between main::@3 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@4 main::@3 main::@5 main::@6 main::@return main::@7 main::@8
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -408,7 +406,6 @@ Coalesced [30] main::x#5 ← main::x#1
Coalesced down to 5 phi equivalence classes
Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@8
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@4 main::@3 main::@5 main::@6 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -192,7 +192,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::color#1 = (byte/word/dword~) main::$0 (byte) main::color#4
Alias (byte*) main::screen#2 = (byte*) main::screen#3
Alias (byte*) main::colors#2 = (byte*) main::colors#3
@ -200,24 +200,24 @@ Alias (byte) main::row#2 = (byte) main::row#3
Alias (byte) main::color#2 = (byte/word/dword~) main::$2
Alias (byte*) main::screen#1 = (byte*~) main::$3
Alias (byte*) main::colors#1 = (byte*~) main::$4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::screen#2
Self Phi Eliminated (byte*) main::colors#2
Self Phi Eliminated (byte) main::row#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::screen#2 (byte*) main::screen#4
Redundant Phi (byte*) main::colors#2 (byte*) main::colors#4
Redundant Phi (byte) main::row#2 (byte) main::row#4
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::column#1!=rangelast(0,7)) goto main::@2
Simple Condition (bool~) main::$5 if((byte) main::row#1!=rangelast(0,7)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte*) main::colors#0 = ((byte*))55296
Constant (const byte) main::color#0 = 1
Constant (const byte) main::row#0 = 0
Constant (const byte) main::column#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::column#1 ← ++ main::column#2 to ++
Resolved ranged comparison value if(main::column#1!=rangelast(0,7)) goto main::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value main::row#1 ← ++ main::row#4 to ++
@ -233,11 +233,9 @@ Constant inlined main::colors#0 = ((byte*))(word/dword/signed dword) 55296
Constant inlined main::color#0 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::column#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@3 and main::@1)
Added new block during phi lifting main::@6(between main::@2 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -268,7 +266,6 @@ Coalesced [24] main::color#8 ← main::color#1
Coalesced down to 5 phi equivalence classes
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -581,7 +581,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) screen2#0 = (byte*~) $0 (byte*) screen2#13
Alias (byte) main::i#0 = (byte) main::i#12
Alias (byte) main::a#0 = (byte) main::a#11
@ -617,7 +617,7 @@ Alias (byte*) screen1#0 = (byte*) screen1#13
Alias (byte) GREEN#0 = (byte) GREEN#14
Alias (byte*) cols#0 = (byte*) cols#15
Alias (byte) RED#0 = (byte) RED#14
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte*) screen1#10 (byte*) screen1#0
Redundant Phi (byte*) screen2#10 (byte*) screen2#0
Redundant Phi (byte) GREEN#10 (byte) GREEN#0
@ -628,9 +628,9 @@ Redundant Phi (byte*) screen2#1 (byte*) screen2#10
Redundant Phi (byte) GREEN#1 (byte) GREEN#10
Redundant Phi (byte*) cols#1 (byte*) cols#10
Redundant Phi (byte) RED#1 (byte) RED#10
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) test::$0 if(*((byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte[]) ref#0 = { 3, 4, 3, 18, 9, 1, 4, 2, 4, 5, 1, 0 }
Constant (const byte*) screen1#0 = ((byte*))1024
Constant (const byte*) cols#0 = ((byte*))55296
@ -638,66 +638,66 @@ Constant (const byte) GREEN#0 = 5
Constant (const byte) RED#0 = 2
Constant (const byte) main::i#0 = 0
Constant (const byte) main::a#0 = 3
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) screen2#0 = screen1#0+40
Constant (const byte) test::i#0 = main::i#0
Constant (const byte) test::a#0 = main::a#0
Constant (const byte) main::i#1 = ++main::i#0
Constant (const byte) main::a#1 = main::a#0+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#1 = main::i#1
Constant (const byte) test::a#1 = main::a#1
Constant (const byte) main::i#14 = ++main::i#1
Constant (const byte) main::a#13 = main::a#1-1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#2 = main::i#14
Constant (const byte) test::a#2 = main::a#13
Constant (const byte) main::i#15 = ++main::i#14
Constant (const byte) main::a#14 = main::a#13*6
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#3 = main::i#15
Constant (const byte) test::a#3 = main::a#14
Constant (const byte) main::i#16 = ++main::i#15
Constant (const byte) main::a#15 = main::a#14/2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#4 = main::i#16
Constant (const byte) test::a#4 = main::a#15
Constant (const byte) main::i#17 = ++main::i#16
Constant (const byte) main::a#16 = main::a#15%2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#5 = main::i#17
Constant (const byte) test::a#5 = main::a#16
Constant (const byte) main::i#18 = ++main::i#17
Constant (const byte) main::a#17 = main::a#16<<2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#6 = main::i#18
Constant (const byte) test::a#6 = main::a#17
Constant (const byte) main::i#19 = ++main::i#18
Constant (const byte) main::a#18 = main::a#17>>1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#7 = main::i#19
Constant (const byte) test::a#7 = main::a#18
Constant (const byte) main::i#20 = ++main::i#19
Constant (const byte) main::a#19 = main::a#18^6
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#8 = main::i#20
Constant (const byte) test::a#8 = main::a#19
Constant (const byte) main::i#21 = ++main::i#20
Constant (const byte) main::a#20 = main::a#19|1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#9 = main::i#21
Constant (const byte) test::a#9 = main::a#20
Constant (const byte) main::i#10 = ++main::i#21
Constant (const byte) main::a#10 = main::a#20&1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test::i#10 = main::i#10
Constant (const byte) test::a#10 = main::a#10
Constant (const byte) main::i#11 = ++main::i#10
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Eliminating unused constant (const byte) main::i#11
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Culled Empty Block (label) main::@11
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with different constant siblings (const byte) main::i#0
Inlining constant with different constant siblings (const byte) main::a#0
@ -787,7 +787,7 @@ Constant inlined test::a#0 = (byte/signed byte/word/signed word/dword/signed dwo
Constant inlined test::a#1 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined test::a#2 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined test::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant integer increment ++0
Simplifying constant integer increment ++0
Simplifying constant integer increment ++1
@ -798,7 +798,7 @@ Simplifying constant integer increment ++4
Simplifying constant integer increment ++5
Simplifying constant integer increment ++6
Simplifying constant integer increment ++7
Succesful SSA optimization Pass2ConstantSimplification
Successful SSA optimization Pass2ConstantSimplification
Simplifying constant integer increment ++8
Simplifying constant integer increment ++2
Simplifying constant integer increment ++3
@ -807,11 +807,9 @@ Simplifying constant integer increment ++5
Simplifying constant integer increment ++6
Simplifying constant integer increment ++7
Simplifying constant integer increment ++8
Succesful SSA optimization Pass2ConstantSimplification
Successful SSA optimization Pass2ConstantSimplification
Simplifying constant integer increment ++9
Succesful SSA optimization Pass2ConstantSimplification
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@return test test::@3 test::@return test::@1
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@return test test::@3 test::@return test::@1
Successful SSA optimization Pass2ConstantSimplification
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -835,7 +833,6 @@ Propagating live ranges...
Propagating live ranges...
Created 2 initial phi equivalence classes
Coalesced down to 2 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@return test test::@3 test::@return test::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -110,33 +110,31 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte[]) main::msg#0 = (string~) main::$0
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::screen#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::i#1!=rangelast(0,2)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::l#0 = 'l'
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::msg#0 = "cm"+'l'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Eliminating unused constant (const string) main::$2
Eliminating unused constant (const byte) main::l#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,2)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 3
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -150,7 +148,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -96,22 +96,20 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Simple Condition (bool~) main::$0 if((byte/signed byte/word/signed word/dword/signed dword) 7<(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::SCREEN#0+0)
Consolidated array index constant in *(main::SCREEN#0+0)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always false - eliminating if((byte/signed byte/word/signed word/dword/signed dword) 7<(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@1
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero main::SCREEN#0+0
Block Sequence Planned @begin @1 @end main main::@3 main::@return
Block Sequence Planned @begin @1 @end main main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -122,7 +120,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -286,54 +286,52 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) line::@7
Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) line::x0#1 = (byte) line::x0#2 (byte) line::x#0 (byte) line::x0#3
Alias (byte) line::x1#1 = (byte) line::x1#4
Alias (byte) line::x#2 = (byte) line::x#3
Alias (byte) line::x1#2 = (byte) line::x1#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) line::x1#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) line::x0#1 (byte) line::x0#0
Redundant Phi (byte) line::x1#1 (byte) line::x1#0
Redundant Phi (byte) line::x1#2 (byte) line::x1#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if((byte) main::i#1!=rangelast(0,39)) goto main::@1
Simple Condition (bool~) line::$0 if((byte) line::x0#0<(byte) line::x1#0) goto line::@1
Simple Condition (bool~) line::$3 if((byte) line::x#1<=(byte) line::x1#0) goto line::@3
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) plots#0 = ((byte*))4096
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Constant (const byte) line::x0#0 = 0
Constant (const byte) line::x1#0 = 10
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) plot::x#0 = line::x0#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
if() condition always true - replacing block destination if((const byte) line::x0#0<(const byte) line::x1#0) goto line::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Removing PHI-reference to removed block (line::@4) in block plot
Removing unused block line::@4
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,39)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
Culled Empty Block (label) main::@5
Culled Empty Block (label) line::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Redundant Phi (byte) plot::x#2 (byte) plot::x#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Eliminating unused constant (const byte) plot::x#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @3 @end main main::@1 main::@2 line line::@3 line::@8 line::@return plot plot::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@6(between main::@1 and main::@1)
Added new block during phi lifting line::@9(between line::@8 and line::@3)
Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@6 line line::@3 line::@8 line::@return line::@9 plot plot::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -354,7 +352,6 @@ Coalesced [20] line::x#4 ← line::x#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@6
Culled Empty Block (label) line::@9
Block Sequence Planned @begin @3 @end main main::@1 main::@2 line line::@3 line::@8 line::@return plot plot::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end

View File

@ -84,27 +84,25 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::b#0 = (byte/signed word/word/dword/signed dword/signed byte~) main::$3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$0 = 14/3
Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$2 = 22%3
Constant (const byte*) main::screen#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/signed word/word/dword/signed dword/signed byte) main::$1 = 6*main::$0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::b#0 = main::$1+main::$2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$1 = (byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) 14/(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::$2 = (byte/signed byte/word/signed word/dword/signed dword) 22%(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::$0 = (byte/signed byte/word/signed word/dword/signed dword) 14/(byte/signed byte/word/signed word/dword/signed dword) 3
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -114,7 +112,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -176,27 +176,27 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) sum::return#0 = (byte) sum::return#5
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2 (byte*) main::screen#3
Alias (byte) sum::return#1 = (byte) sum::return#6
Alias (byte) sum::return#2 = (byte) sum::return#7
Alias (byte) sum::return#3 = (byte~) sum::$0 (byte) sum::return#8 (byte) sum::return#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::reverse#0 = 128
Constant (const byte) sum::b#0 = 'c'
Constant (const byte) sum::b#1 = 'm'
Constant (const byte) sum::b#2 = 'l'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) sum::a#0 = main::reverse#0
Constant (const byte) sum::a#1 = main::reverse#0
Constant (const byte) sum::a#2 = main::reverse#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+1)
Consolidated array index constant in *(main::screen#0+2)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) sum::b#0
Inlining constant with var siblings (const byte) sum::b#1
@ -210,12 +210,10 @@ Constant inlined sum::a#1 = (const byte) main::reverse#0
Constant inlined sum::b#0 = (byte) 'c'
Constant inlined sum::b#2 = (byte) 'l'
Constant inlined sum::a#0 = (const byte) main::reverse#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Identical Phi Values (byte) sum::a#3 (const byte) main::reverse#0
Succesful SSA optimization Pass2IdenticalPhiElimination
Successful SSA optimization Pass2IdenticalPhiElimination
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@return sum sum::@return
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@return sum sum::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -229,7 +227,6 @@ Propagating live ranges...
Propagating live ranges...
Created 1 initial phi equivalence classes
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@return sum sum::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -113,29 +113,27 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) main::$0 if((byte*) main::rem#0!=(byte*) main::NULL#0) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte*) main::NULL#0 = ((byte*))0
Constant (const byte*) main::rem#0 = ((byte*))255
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+0)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always true - replacing block destination if((const byte*) main::rem#0!=(const byte*) main::NULL#0) goto main::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const byte*) main::NULL#0
Eliminating unused constant (const byte*) main::rem#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@3
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -146,7 +144,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -108,21 +108,19 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (word*) main::wp#0 = (word*~) main::$0
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const word*) main::wp#0 = &main::w#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+1)
Consolidated array index constant in *(main::screen#0+2)
Consolidated array index constant in *(main::screen#0+3)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -133,7 +131,6 @@ Propagating live ranges...
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -61,12 +61,10 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const byte*) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -76,7 +74,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -159,32 +159,32 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte[]) main::s#0 = (string~) main::$0
Alias (byte[]) main::s2#0 = (byte*~) main::$1
Alias (byte[]) main::s3#0 = (string~) main::$2
Alias (byte[]) main::s4#0 = (string~) main::$4
Alias (byte[]) main::s5#0 = (byte[]~) main::$5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$6 if((byte) main::i#1!=rangelast(0,7)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte[]) main::s#0 = "e"+"l"
Constant (const byte) main::e#0 = '!'
Constant (const string) main::$3 = ""+'t'
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::s2#0 = main::s#0+'o'
Constant (const byte[]) main::s4#0 = ""+'t'+'!'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::s3#0 = "cam"+main::s#0+'o'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::s5#0 = main::s3#0+main::s4#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Eliminating unused constant (const string) main::$7
Eliminating unused constant (const string) main::$8
Eliminating unused constant (const string) main::$9
@ -192,16 +192,14 @@ Eliminating unused constant (const string) main::$10
Eliminating unused constant (const byte) main::e#0
Eliminating unused constant (const string) main::$3
Eliminating unused constant (const byte[]) main::s2#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -215,7 +213,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -146,27 +146,27 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) BGCOL#0 = (byte*~) $2 (byte*) BGCOL#2
Alias (byte) RED#0 = (byte) RED#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte) RED#1 (byte) RED#0
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::i#1!=rangelast(40,79)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) STAR#0 = 81
Constant (const byte*) VIC#0 = ((byte*))53248
Constant (const byte/signed byte/word/signed word/dword/signed dword) $0 = 16*2
Constant (const byte) RED#0 = 2
Constant (const byte) main::i#0 = 40
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) $1 = VIC#0+$0
Constant (const byte/signed word/word/dword/signed dword) main::$0 = STAR#0+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) BGCOL#0 = $1+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(40,79)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 80
OPTIMIZING CONTROL FLOW GRAPH
@ -175,10 +175,8 @@ Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dwo
Constant inlined $0 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined $1 = (const byte*) VIC#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined main::$0 = (const byte) STAR#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -191,7 +189,6 @@ Created 1 initial phi equivalence classes
Coalesced [11] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -1635,13 +1635,13 @@ Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#44 (byte*) print_
Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#64 (byte*) print_char_cursor#32
Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#46
Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#65
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#54
Alias (byte*) print_line_cursor#52 = (byte*) print_line_cursor#56
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) print_char_cursor#36
Self Phi Eliminated (byte*) print_line_cursor#27
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) print_char_cursor#36 (byte*) print_char_cursor#67
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4
Redundant Phi (byte*) print_line_cursor#27 (byte*) print_screen#1
@ -1688,20 +1688,20 @@ Redundant Phi (byte*) print_line_cursor#21 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#31 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#23 (byte*) print_line_cursor#30
Redundant Phi (byte*) print_char_cursor#33 (byte*) print_char_cursor#10
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) print_char_cursor#73 (byte*) print_char_cursor#2
Redundant Phi (byte*) print_char_cursor#75 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#52 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#78 (byte*) print_char_cursor#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) print_char_cursor#67 (byte*) print_char_cursor#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2
Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1
Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
Simple Condition (bool~) assert_byte::$2 if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1
Simple Condition (bool~) assert_sbyte::$2 if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte) GREEN#0 = 5
@ -1731,7 +1731,7 @@ Constant (const signed byte) assert_sbyte::c#4 = 2
Constant (const byte*) print_str::str#6 = assert_sbyte::str
Constant (const byte*) print_str::str#7 = assert_sbyte::str1
Constant (const byte*) print_str::str#8 = assert_sbyte::str2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Constant (const byte) assert_byte::b#0 = test_bytes::bb#0
@ -1739,23 +1739,23 @@ Constant (const byte) test_bytes::bc#0 = test_bytes::bb#0+2
Constant (const signed byte) assert_sbyte::b#0 = test_sbytes::bb#0
Constant (const signed byte) test_sbytes::bc#0 = test_sbytes::bb#0+2
Constant (const signed word/signed dword) test_sbytes::$9 = test_sbytes::$8-127
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) assert_byte::b#1 = test_bytes::bc#0
Constant (const signed byte) test_bytes::$3 = ((signed byte))test_bytes::bc#0
Constant (const signed byte) assert_sbyte::b#1 = test_sbytes::bc#0
Constant (const signed byte) test_sbytes::bd#0 = test_sbytes::bc#0-4
Constant (const signed byte) test_sbytes::bf#0 = ((signed byte))test_sbytes::$9
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const signed word/signed byte/signed dword) test_bytes::$4 = test_bytes::$3-4
Constant (const signed byte) assert_sbyte::b#2 = test_sbytes::bd#0
Constant (const signed byte) test_sbytes::be#0 = -test_sbytes::bd#0
Constant (const signed byte) assert_sbyte::b#4 = test_sbytes::bf#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) test_bytes::bd#0 = ((byte))test_bytes::$4
Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) assert_byte::b#2 = test_bytes::bd#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) @14
@ -1769,7 +1769,7 @@ Culled Empty Block (label) assert_sbyte::@7
Culled Empty Block (label) assert_sbyte::@8
Culled Empty Block (label) assert_sbyte::@9
Culled Empty Block (label) @20
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) print_str::str#2
Inlining constant with var siblings (const byte*) print_str::str#3
@ -1840,11 +1840,9 @@ Constant inlined print_str::str#2 = (const string) assert_byte::str
Constant inlined print_str::str#8 = (const string) assert_sbyte::str2
Constant inlined print_str::str#7 = (const string) assert_sbyte::str1
Constant inlined print_str::str#6 = (const string) assert_sbyte::str
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @19 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Block Sequence Planned @begin @19 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @19
Adding NOP phi() at start of @end
@ -1903,7 +1901,6 @@ Coalesced [87] print_cls::sc#3 ← print_cls::sc#1
Coalesced down to 10 phi equivalence classes
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_cls::@3
Block Sequence Planned @begin @19 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @19
Adding NOP phi() at start of @end

View File

@ -79,19 +79,17 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::a#0 = (byte) main::b#0
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::a#0 = 12
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -101,7 +99,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -73,13 +73,11 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte) RED#0 = 2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -89,7 +87,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -118,29 +118,27 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (dword) main::b#0 = (dword~) main::$0
Alias (byte) main::c#0 = (byte~) main::$1
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (dword) main::a#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (dword) main::a#1 (dword) main::a#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$2 if((byte) main::i#1!=rangelast(0,100)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const dword) main::a#0 = 4000000000
Constant (const byte) main::i#0 = 0
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,100)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 101
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -155,7 +153,6 @@ Created 1 initial phi equivalence classes
Coalesced [12] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -287,44 +287,42 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) menu::@8
Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) mode::$1 ← *((byte*) B#1) != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte*) B#11 = (byte*) B#8 (byte*) B#9
Alias (byte*) B#5 = (byte*) B#6 (byte*) B#7
Alias (byte*) B#1 = (byte*) B#2 (byte*) B#4
Alias (byte*) B#0 = (byte*) B#12
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) B#11
Self Phi Eliminated (byte*) B#1
Self Phi Eliminated (byte*) B#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) B#10 (byte*) B#0
Redundant Phi (byte*) B#11 (byte*) B#10
Redundant Phi (byte*) B#5 (byte*) B#11
Redundant Phi (byte*) B#3 (byte*) B#5
Redundant Phi (byte*) B#1 (byte*) B#3
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) mode::$1 if(*((byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) B#0 = ((byte*))4096
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
if() condition always true - replacing block destination if(true) goto menu::@2
if() condition always true - replacing block destination if(true) goto mode::@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Removing unused block mode::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) main::@1
Culled Empty Block (label) main::@7
Culled Empty Block (label) menu::@1
Culled Empty Block (label) @2
Culled Empty Block (label) mode::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @3 @end main main::@2 menu menu::@2 menu::@return mode mode::@2 mode::@4
Block Sequence Planned @begin @3 @end main main::@2 menu menu::@2 menu::@return mode mode::@2 mode::@4
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -342,7 +340,6 @@ Calls in [menu] to mode:9
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @3 @end main main::@2 menu menu::@2 menu::@return mode mode::@2 mode::@4
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end

View File

@ -109,29 +109,27 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Simple Condition (bool~) main::$3 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte[15]) fibs#0 = ((byte*))4352
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(fibs#0+0)
Consolidated array index constant in *(fibs#0+1)
Consolidated array index constant in assignment *(fibs#0+1 + main::$1)
Consolidated array index constant in assignment *(fibs#0+2 + main::$0)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2
Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero fibs#0+0
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -144,7 +142,6 @@ Created 1 initial phi equivalence classes
Coalesced [12] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -183,39 +183,37 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@1
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) fillscreen::SCREEN2#0 = (byte*~) fillscreen::$0
Alias (byte*) fillscreen::SCREEN3#0 = (byte*~) fillscreen::$1
Alias (byte*) fillscreen::SCREEN4#0 = (byte*~) fillscreen::$2
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte) fillscreen::c#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#4 (byte*) SCREEN#1
Redundant Phi (byte) fillscreen::c#2 (byte) fillscreen::c#0
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#4
Redundant Phi (byte) fillscreen::c#1 (byte) fillscreen::c#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) fillscreen::$3 if((byte) fillscreen::j#1!=rangelast(0,255)) goto fillscreen::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) fillscreen::j#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) fillscreen::SCREEN2#0 = SCREEN#0+256
Constant (const byte*) fillscreen::SCREEN3#0 = SCREEN#0+512
Constant (const byte*) fillscreen::SCREEN4#0 = SCREEN#0+1000
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value fillscreen::j#1 ← ++ fillscreen::j#2 to ++
Resolved ranged comparison value if(fillscreen::j#1!=rangelast(0,255)) goto fillscreen::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) fillscreen::j#0
Constant inlined fillscreen::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@return fillscreen fillscreen::@1 fillscreen::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting fillscreen::@3(between fillscreen::@1 and fillscreen::@1)
Block Sequence Planned @begin @2 @end main main::@return fillscreen fillscreen::@1 fillscreen::@return fillscreen::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -233,7 +231,6 @@ Created 1 initial phi equivalence classes
Coalesced [17] fillscreen::j#3 ← fillscreen::j#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) fillscreen::@3
Block Sequence Planned @begin @2 @end main main::@return fillscreen fillscreen::@1 fillscreen::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -600,7 +600,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @5
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) RASTER#6 = (byte*) RASTER#8
Alias (byte*) SCREEN#10 = (byte*) SCREEN#11
Alias (byte*) RASTER#11 = (byte*) RASTER#4 (byte*) RASTER#7 (byte*) RASTER#2 (byte*) RASTER#9 (byte*) RASTER#5
@ -617,7 +617,7 @@ Alias (byte) plot::i#1 = (byte) plot::i#4
Alias (byte*) plot::line#1 = (byte*~) plot::$4
Alias (byte*) RASTER#0 = (byte*) RASTER#10
Alias (byte*) SCREEN#0 = (byte*) SCREEN#12
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte) main::c#4
Self Phi Eliminated (byte*) SCREEN#6
@ -627,7 +627,7 @@ Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte) flip::r#2
Self Phi Eliminated (byte*) plot::line#2
Self Phi Eliminated (byte) plot::y#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) RASTER#6 (byte*) RASTER#0
Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#0
Redundant Phi (byte*) RASTER#11 (byte*) RASTER#1
@ -637,7 +637,7 @@ Redundant Phi (byte) flip::r#2 (byte) flip::r#4
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Redundant Phi (byte*) plot::line#2 (byte*) plot::line#4
Redundant Phi (byte) plot::y#2 (byte) plot::y#4
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3
Simple Condition (bool~) main::$2 if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4
Simple Condition (bool~) main::$3 if((byte) main::c#1!=rangelast(25,1)) goto main::@2
@ -647,7 +647,7 @@ Simple Condition (bool~) flip::$2 if((byte) flip::r#1!=rangelast(16,1)) goto fli
Simple Condition (bool~) flip::$3 if((byte) flip::i#1!=rangelast(0,255)) goto flip::@3
Simple Condition (bool~) plot::$3 if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2
Simple Condition (bool~) plot::$5 if((byte) plot::y#1!=rangelast(16,1)) goto plot::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const word/signed word/dword/signed dword) $0 = 16*16
Constant (const word/signed word/dword/signed dword) $1 = 16*16
Constant (const byte*) RASTER#0 = ((byte*))53266
@ -663,16 +663,16 @@ Constant (const byte/word/signed word/dword/signed dword) plot::$0 = 5*40
Constant (const byte) plot::i#0 = 0
Constant (const byte) plot::y#0 = 16
Constant (const byte) plot::x#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[$0]) buffer1#0 = { fill( $0, 0) }
Constant (const byte[$1]) buffer2#0 = { fill( $1, 0) }
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated constant in assignment plot::line#0
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::c#1 ← -- main::c#4 to --
Resolved ranged comparison value if(main::c#1!=rangelast(25,1)) goto main::@2 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value prepare::i#1 ← ++ prepare::i#2 to ++
@ -689,27 +689,27 @@ Culled Empty Block (label) main::@9
Culled Empty Block (label) main::@2
Culled Empty Block (label) main::@11
Culled Empty Block (label) flip::@5
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte*) SCREEN#6
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#7
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Not aliassing identity: RASTER#3 RASTER#3
Not aliassing identity: SCREEN#7 SCREEN#7
Self Phi Eliminated (byte*) RASTER#3
Self Phi Eliminated (byte*) SCREEN#7
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) RASTER#3 (const byte*) RASTER#0
Redundant Phi (byte*) SCREEN#7 (const byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte*) plot::$1 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) plot::line#0 = plot::$1+plot::$0+12
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::c#0
Inlining constant with var siblings (const byte) prepare::i#0
@ -737,8 +737,7 @@ Constant inlined flip::srcIdx#0 = (byte/signed byte/word/signed word/dword/signe
Constant inlined prepare::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined plot::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined flip::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 16
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @4 @end main main::@3 main::@4 main::@6 main::@7 main::@10 plot plot::@1 plot::@2 plot::@3 plot::@return flip flip::@1 flip::@2 flip::@4 flip::@3 flip::@return prepare prepare::@1 prepare::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@12(between main::@6 and main::@3)
Added new block during phi lifting plot::@5(between plot::@3 and plot::@1)
Added new block during phi lifting plot::@6(between plot::@2 and plot::@2)
@ -746,7 +745,6 @@ Added new block during phi lifting flip::@7(between flip::@4 and flip::@1)
Added new block during phi lifting flip::@8(between flip::@2 and flip::@2)
Added new block during phi lifting flip::@9(between flip::@3 and flip::@3)
Added new block during phi lifting prepare::@3(between prepare::@1 and prepare::@1)
Block Sequence Planned @begin @4 @end main main::@3 main::@4 main::@6 main::@7 main::@10 main::@12 plot plot::@1 plot::@2 plot::@3 plot::@return plot::@5 plot::@6 flip flip::@1 flip::@2 flip::@4 flip::@3 flip::@return flip::@9 flip::@7 flip::@8 prepare prepare::@1 prepare::@return prepare::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @4
Adding NOP phi() at start of @end
@ -797,7 +795,6 @@ Culled Empty Block (label) flip::@9
Culled Empty Block (label) flip::@7
Culled Empty Block (label) flip::@8
Culled Empty Block (label) prepare::@3
Block Sequence Planned @begin @4 @end main main::@3 main::@4 main::@6 main::@7 main::@10 plot plot::@1 plot::@2 plot::@3 plot::@return flip flip::@1 flip::@2 flip::@4 flip::@3 flip::@return prepare prepare::@1 prepare::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @4
Adding NOP phi() at start of @end

View File

@ -106,26 +106,24 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) SCREEN#0 = (byte*~) $0 (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -139,7 +137,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -103,27 +103,25 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::i#1 = (byte/signed word/word/dword/signed dword~) main::$0
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 40) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -137,7 +135,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -155,47 +155,45 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Not aliassing identity: main::SCREEN#2 main::SCREEN#2
Alias (byte*) main::SCREEN#1 = (byte*) main::SCREEN#3
Alias (signed word) main::sw#0 = (signed word/signed dword~) main::$3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: main::SCREEN#2 main::SCREEN#2
Self Phi Eliminated (byte*) main::SCREEN#1
Self Phi Eliminated (byte*) main::SCREEN#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
Redundant Phi (byte*) main::SCREEN#2 (byte*) main::SCREEN#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$2 if((word) main::w#1!=rangelast(0,65535)) goto main::@1
Simple Condition (bool~) main::$6 if((signed word) main::sw#1!=rangelast(main::sw#0,32766)) goto main::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Constant (const word) main::w#0 = 0
Constant (const signed word) main::sw#0 = -32767
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::SCREEN#0+0)
Consolidated array index constant in *(main::SCREEN#0+1)
Consolidated array index constant in *(main::SCREEN#0+3)
Consolidated array index constant in *(main::SCREEN#0+4)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Resolved ranged next value main::w#1 ← ++ main::w#2 to ++
Resolved ranged comparison value if(main::w#1!=rangelast(0,65535)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value main::sw#1 ← ++ main::sw#2 to ++
Resolved ranged comparison value if(main::sw#1!=rangelast(main::sw#0,32766)) goto main::@2 to (word/signed word/dword/signed dword) 32767
Culled Empty Block (label) main::@3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const word) main::w#0
Inlining constant with var siblings (const signed word) main::sw#0
Constant inlined main::w#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::sw#0 = -(word/signed word/dword/signed dword) 32767
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero main::SCREEN#0+0
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return
Added new block during phi lifting main::@5(between main::@1 and main::@1)
Added new block during phi lifting main::@6(between main::@2 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return main::@6 main::@5
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -212,7 +210,6 @@ Coalesced [21] main::w#3 ← main::w#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -154,47 +154,45 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Not aliassing identity: SCREEN2#1 SCREEN2#1
Alias (byte*) SCREEN2#2 = (byte*) SCREEN2#3
Alias (byte*) SCREEN1#0 = (byte*) SCREEN1#3
Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: SCREEN2#1 SCREEN2#1
Self Phi Eliminated (byte*) SCREEN1#1
Self Phi Eliminated (byte*) SCREEN2#2
Self Phi Eliminated (byte*) SCREEN2#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN1#2 (byte*) SCREEN1#0
Redundant Phi (byte*) SCREEN2#4 (byte*) SCREEN2#0
Redundant Phi (byte*) SCREEN1#1 (byte*) SCREEN1#2
Redundant Phi (byte*) SCREEN2#2 (byte*) SCREEN2#4
Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if((byte) main::i#1!=rangelast(0,255)) goto main::@1
Simple Condition (bool~) main::$1 if((byte) main::j#1!=rangelast(100,0)) goto main::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN1#0 = ((byte*))1024
Constant (const byte*) SCREEN2#0 = ((byte*))1280
Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 100
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,255)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Resolved ranged next value main::j#1 ← -- main::j#2 to --
Resolved ranged comparison value if(main::j#1!=rangelast(100,0)) goto main::@2 to (byte/word/signed word/dword/signed dword) 255
Culled Empty Block (label) main::@3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::j#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 100
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@1 and main::@1)
Added new block during phi lifting main::@6(between main::@2 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return main::@6 main::@5
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -210,7 +208,6 @@ Coalesced [15] main::i#3 ← main::i#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -95,24 +95,22 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) main::b#0 = (byte*~) main::$0
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) main::$1 if((byte*) main::b#1!=rangelast(main::b#0,main::BITMAP#0)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::BITMAP#0 = ((byte*))8192
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::b#0 = main::BITMAP#0+8191
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::b#1 ← -- main::b#2 to --
Resolved ranged comparison value if(main::b#1!=rangelast(main::b#0,main::BITMAP#0)) goto main::@1 to (byte*)(const byte*) main::BITMAP#0-(byte/signed byte/word/signed word/dword/signed dword) 1
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) main::b#0
Constant inlined main::b#0 = (const byte*) main::BITMAP#0+(word/signed word/dword/signed dword) 8191
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -126,7 +124,6 @@ Created 1 initial phi equivalence classes
Coalesced [10] main::b#3 ← main::b#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -200,7 +200,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) fct::return#0 = (byte) fct::return#4
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2
Alias (byte*) main::z#0 = (byte*) main::z#2
@ -208,24 +208,24 @@ Alias (byte) main::a1#0 = (byte~) main::$0
Alias (byte) fct::return#1 = (byte) fct::return#5
Alias (byte) main::a2#0 = (byte~) main::$1
Alias (byte) fct::return#2 = (byte) fct::a#0 (byte~) fct::$0 (byte) fct::return#6 (byte) fct::return#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte*) main::z#0 = ((byte*))1104
Constant (const byte) main::x#0 = 170
Constant (const byte) main::x#1 = 85
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) fct::x#0 = main::x#0
Constant (const byte*) fct::z#0 = main::z#0
Constant (const byte*) main::z#1 = ++main::z#0
Constant (const byte) fct::x#1 = main::x#1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) fct::z#1 = main::z#1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::z#0+2)
Consolidated array index constant in *(main::z#0+3)
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with different constant siblings (const byte*) main::z#0
Inlining constant with different constant siblings (const byte) main::x#0
@ -243,10 +243,8 @@ Constant inlined main::x#0 = (byte/word/signed word/dword/signed dword) 170
Constant inlined main::x#1 = (byte/signed byte/word/signed word/dword/signed dword) 85
Constant inlined fct::x#0 = (byte/word/signed word/dword/signed dword) 170
Constant inlined fct::x#1 = (byte/signed byte/word/signed word/dword/signed dword) 85
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero main::screen#0+0
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return fct fct::@return
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return fct fct::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -259,7 +257,6 @@ Propagating live ranges...
Propagating live ranges...
Created 2 initial phi equivalence classes
Coalesced down to 2 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return fct fct::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -644,12 +644,12 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word/dword/signed dword) 2 from (bool~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word/dword/signed dword) 2
Inversing boolean not (bool~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word/dword/signed dword) 2 from (bool~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word/dword/signed dword) 2
Inversing boolean not (bool~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word/dword/signed dword) 2 from (bool~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word/dword/signed dword) 2
Inversing boolean not (bool~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word/dword/signed dword) 2 from (bool~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word/dword/signed dword) 2
Succesful SSA optimization Pass2UnaryNotSimplification
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
Alias (byte) main::bits_gen#0 = (byte) main::bits_gen#10
@ -696,7 +696,7 @@ Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#3
Alias (byte*) CHARSET4#0 = (byte*) CHARSET4#2
Alias (byte*) SCREEN#0 = (byte*) SCREEN#13
Alias (byte*) D018#0 = (byte*) D018#14
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) main::chargen#10 = (byte*) main::chargen#3 (byte*) main::chargen#2 (byte*) main::chargen#4 (byte*) main::chargen#6
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
@ -704,14 +704,14 @@ Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#8 (byte*) CHARGEN#6 (byte*) CHARGEN#4
Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#11 (byte*) PROCPORT#7 (byte*) PROCPORT#5 (byte*) PROCPORT#2
Alias (byte*) SCREEN#10 = (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#4 (byte*) SCREEN#2
Alias (byte*) D018#10 = (byte*) D018#11 (byte*) D018#7 (byte*) D018#5 (byte*) D018#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) CHARGEN#10
Self Phi Eliminated (byte*) PROCPORT#10
Self Phi Eliminated (byte*) SCREEN#10
Self Phi Eliminated (byte*) D018#10
Self Phi Eliminated (byte*) SCREEN#1
Self Phi Eliminated (byte*) D018#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#0
Redundant Phi (byte*) CHARGEN#1 (byte*) CHARGEN#0
Redundant Phi (byte*) CHARSET4#1 (byte*) CHARSET4#0
@ -723,14 +723,14 @@ Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#12
Redundant Phi (byte*) D018#10 (byte*) D018#13
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#10
Redundant Phi (byte*) D018#1 (byte*) D018#10
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$8 if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2
Simple Condition (bool~) main::$17 if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3
Simple Condition (bool~) main::$26 if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4
Simple Condition (bool~) main::$34 if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5
Simple Condition (bool~) main::$39 if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1
Simple Condition (bool~) main::$40 if((byte) main::i#1!=rangelast(0,255)) goto main::@6
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const byte*) PROCPORT#0 = ((byte*))1
@ -739,12 +739,12 @@ Constant (const byte*) CHARSET4#0 = ((byte*))10240
Constant (const byte[]) bits_count#0 = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }
Constant (const byte) main::bits_gen#0 = 0
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::chargen#0 = CHARGEN#0
Constant (const byte*) main::charset4#0 = CHARSET4#0
Constant (const byte) main::bits_gen#2 = main::bits_gen#0+1
Constant (const byte*) main::$38 = CHARGEN#0+2048
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,255)) goto main::@6 to (byte/signed byte/word/signed word/dword/signed dword) 0
OPTIMIZING CONTROL FLOW GRAPH
@ -759,15 +759,13 @@ Constant inlined main::chargen#0 = (const byte*) CHARGEN#0
Constant inlined main::bits_gen#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::$38 = (const byte*) CHARGEN#0+(word/signed word/dword/signed dword) 2048
Constant inlined main::charset4#0 = (const byte*) CHARSET4#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero 0+1
Block Sequence Planned @begin @1 @end main main::@1 main::@7 main::@2 main::@8 main::@3 main::@9 main::@4 main::@10 main::@5 main::@11 main::@6 main::@12 main::@return
Added new block during phi lifting main::@13(between main::@5 and main::@1)
Added new block during phi lifting main::@14(between main::@2 and main::@3)
Added new block during phi lifting main::@15(between main::@3 and main::@4)
Added new block during phi lifting main::@16(between main::@4 and main::@5)
Added new block during phi lifting main::@17(between main::@6 and main::@6)
Block Sequence Planned @begin @1 @end main main::@1 main::@7 main::@2 main::@8 main::@3 main::@9 main::@4 main::@10 main::@5 main::@11 main::@6 main::@12 main::@return main::@17 main::@13 main::@16 main::@15 main::@14
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -830,7 +828,6 @@ Culled Empty Block (label) main::@13
Culled Empty Block (label) main::@16
Culled Empty Block (label) main::@15
Culled Empty Block (label) main::@14
Block Sequence Planned @begin @1 @end main main::@1 main::@7 main::@2 main::@8 main::@3 main::@9 main::@4 main::@10 main::@5 main::@11 main::@6 main::@12 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -751,9 +751,9 @@ Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#3 (byte*) print_l
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#6 (byte*) print_char_cursor#15 (byte*) print_char_cursor#7
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#8
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) print_char_cursor#11
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) print_str::str#4 (byte*) print_str::str#1
Redundant Phi (byte*) print_char_cursor#21 (byte*) print_char_cursor#19
Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#13
@ -766,26 +766,24 @@ Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#10
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2
Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_char_cursor#0 = ((byte*))1024
Constant (const byte*) print_str::str#1 = main::str
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) main::@2
Culled Empty Block (label) @16
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) print_str::str#1
Inlining constant with var siblings (const byte*) print_char_cursor#0
Constant inlined print_char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined print_str::str#1 = (const string) main::str
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @15 @end main main::@1 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Block Sequence Planned @begin @15 @end main main::@1 main::@return print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @15
Adding NOP phi() at start of @end
@ -810,7 +808,6 @@ Coalesced [22] print_str::str#5 ← print_str::str#0
Coalesced [23] print_char_cursor#22 ← print_char_cursor#1
Coalesced down to 3 phi equivalence classes
Culled Empty Block (label) print_ln::@3
Block Sequence Planned @begin @15 @end main main::@1 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @15
Adding NOP phi() at start of @end

View File

@ -181,31 +181,31 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@2
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) screen#1 = (byte*) screen#2
Alias (byte*) main::hello#0 = (byte*) main::hello#1
Alias (byte*) print2::at#1 = (byte*~) main::$1
Alias (byte*) screen#0 = (byte*) screen#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) print2::msg#2
Self Phi Eliminated (byte*) print2::at#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) screen#1 (byte*) screen#0
Redundant Phi (byte*) print2::msg#2 (byte*) print2::msg#3
Redundant Phi (byte*) print2::at#2 (byte*) print2::at#3
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print2::$0 if(*((byte*) print2::msg#3 + (byte) print2::i#1)!=(byte) '@') goto print2::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte*) main::hello#0 = main::$3
Constant (const byte) print2::j#0 = 0
Constant (const byte) print2::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print2::at#0 = screen#0
Constant (const byte*) print2::msg#0 = main::hello#0
Constant (const byte*) print2::at#1 = screen#0+80
Constant (const byte*) print2::msg#1 = main::hello#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) print2::j#0
Inlining constant with var siblings (const byte) print2::i#0
@ -220,12 +220,10 @@ Constant inlined print2::i#0 = (byte/signed byte/word/signed word/dword/signed d
Constant inlined print2::at#1 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80
Constant inlined main::$3 = (const byte*) main::hello#0
Constant inlined print2::at#0 = (const byte*) screen#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Identical Phi Values (byte*) print2::msg#3 (const byte*) main::hello#0
Succesful SSA optimization Pass2IdenticalPhiElimination
Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return
Successful SSA optimization Pass2IdenticalPhiElimination
Added new block during phi lifting print2::@3(between print2::@1 and print2::@1)
Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return print2::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -247,7 +245,6 @@ Coalesced [16] print2::i#3 ← print2::i#1
Coalesced [17] print2::j#3 ← print2::j#1
Coalesced down to 3 phi equivalence classes
Culled Empty Block (label) print2::@3
Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -133,34 +133,32 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word/dword/signed dword) 50 from (bool~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 50
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::i#2 = (byte) main::i#4
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
Alias (byte*) SCREEN#0 = (byte*) SCREEN#5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) SCREEN#1 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#3
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@2
Simple Condition (bool~) main::$2 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 100) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@2 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return main::@5
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -174,7 +172,6 @@ Created 1 initial phi equivalence classes
Coalesced [11] main::i#5 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -106,15 +106,15 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (word) main::w#0 = (byte/signed byte/word/signed word/dword/signed dword~) main::$0
Alias (word) main::w#1 = (word~) main::$1
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) main::$2 if((byte) main::j#1!=rangelast(0,10)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const word) main::w#0 = ((word))0
Constant (const byte) main::j#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::j#1 ← ++ main::j#2 to ++
Resolved ranged comparison value if(main::j#1!=rangelast(0,10)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 11
OPTIMIZING CONTROL FLOW GRAPH
@ -122,10 +122,8 @@ Inlining constant with var siblings (const word) main::w#0
Inlining constant with var siblings (const byte) main::j#0
Constant inlined main::w#0 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -142,7 +140,6 @@ Coalesced [10] main::w#3 ← main::w#1
Coalesced [11] main::j#3 ← main::j#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -81,14 +81,12 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte) RED#0 = 2
Constant (const byte*) main::screen#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -98,7 +96,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -90,23 +90,21 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) BGCOL#0 = (byte*) BGCOL#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) BGCOL#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#0
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte*) BGCOL#0 = ((byte*))53280
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @1 @end main main::@1
Block Sequence Planned @begin @1 @end main main::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -117,7 +115,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@1
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -877,10 +877,10 @@ Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#6 (byte*) print_l
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#19 (byte*) print_char_cursor#20
Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#8
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#21
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) print_char_cursor#14
Self Phi Eliminated (byte*) print_line_cursor#12
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) print_str::str#4 (byte*) print_str::str#1
Redundant Phi (byte*) print_char_cursor#27 (byte*) print_char_cursor#25
Redundant Phi (byte*) print_line_cursor#17 (byte*) print_line_cursor#19
@ -898,23 +898,23 @@ Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
Redundant Phi (byte*) print_char_cursor#11 (byte*) print_char_cursor#10
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2
Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1
Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
Simple Condition (bool~) main::$3 if((byte) main::i#1!=rangelast(0,10)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
Constant (const byte[]) txt#0 = $0
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Constant (const byte*) print_str::str#1 = txt#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(txt#0+1)
Consolidated array index constant in *(txt#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,10)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 11
Culled Empty Block (label) print_ln::@2
@ -922,7 +922,7 @@ Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) @14
Culled Empty Block (label) main::@3
Culled Empty Block (label) @16
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) print_str::str#1
Inlining constant with var siblings (const byte*) print_cls::sc#0
@ -934,12 +934,10 @@ Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword)
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined $0 = (const byte[]) txt#0
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @15 @end main main::@1 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@6(between main::@5 and main::@1)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Block Sequence Planned @begin @15 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @15
Adding NOP phi() at start of @end
@ -970,7 +968,6 @@ Coalesced [38] print_cls::sc#3 ← print_cls::sc#1
Coalesced down to 5 phi equivalence classes
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_cls::@3
Block Sequence Planned @begin @15 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @15
Adding NOP phi() at start of @end

View File

@ -65,10 +65,8 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -78,7 +76,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -102,26 +102,24 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::a#0 = (byte) main::i#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) main::$1 if((byte) main::i#1!=rangelast(0,39)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::$0 = SCREEN#0+80
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::a#0 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,39)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::$0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 80
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -135,7 +133,6 @@ Created 1 initial phi equivalence classes
Coalesced [11] main::a#1 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -243,7 +243,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::toUpper1_ch#0 = (byte) main::toUpper1_ch#1 (byte) main::toUpper1_res#0 (byte) main::toUpper1_res#3
Alias (bool) main::toUpper1_bo#0 = (bool) main::toUpper1_bo#1
Alias (byte*) screen#11 = (byte*) screen#7 (byte*) screen#8
@ -254,53 +254,51 @@ Alias (bool) main::toUpper2_bo#0 = (bool) main::toUpper2_bo#1
Alias (byte) main::toUpper2_return#0 = (byte) main::toUpper2_res#2 (byte) main::toUpper2_return#2 (byte) main::toUpper2_return#1 (byte) main::toUpper2_return#3 (byte~) main::$1
Alias (byte*) screen#2 = (byte*) screen#4 (byte*) screen#6
Alias (byte*) screen#0 = (byte*) screen#12
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) screen#1 = (byte*) screen#11 (byte*) screen#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte*) screen#1 (byte*) screen#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Rewriting ! if()-condition to reversed if() (bool) main::toUpper1_$0#0 ← ! (bool) main::toUpper1_bo#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting ! if()-condition to reversed if() (bool) main::toUpper2_$0#0 ← ! (bool) main::toUpper2_bo#0
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte) main::toUpper1_ch#0 = 'c'
Constant (const bool) main::toUpper1_bo#0 = true
Constant (const byte) main::toUpper2_ch#0 = 'm'
Constant (const bool) main::toUpper2_bo#0 = false
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::toUpper1_res#1 = main::toUpper1_ch#0+64
Constant (const byte) main::toUpper2_res#1 = main::toUpper2_ch#0+64
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(screen#0+0)
Consolidated array index constant in *(screen#0+1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Removing PHI-reference to removed block (main::toUpper1) in block main::toUpper1_@1
if() condition always true - replacing block destination if((const bool) main::toUpper1_bo#0) goto main::toUpper1_@2
if() condition always false - eliminating if((const bool) main::toUpper2_bo#0) goto main::toUpper2_@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const bool) main::toUpper1_bo#0
Eliminating unused constant (const bool) main::toUpper2_bo#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Removing PHI-reference to removed block (main::toUpper2_@2) in block main::toUpper2_@1
Removing unused block main::toUpper2_@2
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) main::toUpper1_@2
Culled Empty Block (label) main::toUpper1_@return
Culled Empty Block (label) main::toUpper2_@return
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Redundant Phi (byte) main::toUpper1_return#0 (const byte) main::toUpper1_res#1
Redundant Phi (byte) main::toUpper2_return#0 (const byte) main::toUpper2_ch#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Eliminating unused constant (const byte) main::toUpper2_res#1
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Culled Empty Block (label) main::toUpper1_@1
Culled Empty Block (label) main::toUpper2_@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero screen#0+0
Block Sequence Planned @begin @2 @end main main::toUpper1 main::@1 main::toUpper2 main::@2 main::@return
Block Sequence Planned @begin @2 @end main main::toUpper1 main::@1 main::toUpper2 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -313,7 +311,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::toUpper1 main::@1 main::toUpper2 main::@2 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -438,7 +438,7 @@ Alias (byte) main::line2_ysize#1 = (byte) main::line2_ysize#2 (byte) main::line2
Alias (byte*) cur_line#11 = (byte*) cur_line#3 (byte*) cur_line#4
Alias (byte*) cur_line#15 = (byte*) cur_line#5
Alias (byte*) cur_line#12 = (byte*) cur_line#6
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: main::line1_ch#1 main::line1_ch#1
Not aliassing identity: main::line1_xadd#1 main::line1_xadd#1
Not aliassing identity: main::line1_ysize#1 main::line1_ysize#1
@ -451,7 +451,7 @@ Self Phi Eliminated (byte) main::line1_ysize#1
Self Phi Eliminated (byte) main::line2_ch#1
Self Phi Eliminated (byte) main::line2_xadd#1
Self Phi Eliminated (byte) main::line2_ysize#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) main::line1_ch#1 (byte) main::line1_ch#0
Redundant Phi (byte) main::line1_xadd#1 (byte) main::line1_xadd#0
Redundant Phi (byte) main::line1_ysize#1 (byte) main::line1_ysize#0
@ -459,11 +459,11 @@ Redundant Phi (byte) main::line2_ch#1 (byte) main::line2_ch#0
Redundant Phi (byte) main::line2_xadd#1 (byte) main::line2_xadd#0
Redundant Phi (byte) main::line2_ysize#1 (byte) main::line2_ysize#0
Redundant Phi (byte*) cur_line#12 (byte*) cur_line#11
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte*) main::sc#1<(word/signed word/dword/signed dword~) main::$0) goto main::@1
Simple Condition (bool) main::line1_$2#0 if((byte) main::line1_i#1<(byte) main::line1_ysize#0) goto main::line1_@1
Simple Condition (bool) main::line2_$2#0 if((byte) main::line2_i#1<(byte) main::line2_ysize#0) goto main::line2_@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::sc#0 = ((byte*))1024
Constant (const word/signed word/dword/signed dword) main::$0 = 1024+1000
Constant (const byte) main::line1_xpos#0 = 2
@ -479,25 +479,25 @@ Constant (const byte) main::line2_ch#0 = '.'
Constant (const byte*) cur_line#2 = ((byte*))1024
Constant (const byte) main::line2_i#0 = 0
Constant (const byte*) cur_line#15 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Fixing inline constructor with main::$4 ← main::line1_xpos#0 w= 0
Fixing inline constructor with main::$5 ← main::line2_xpos#0 w= 0
Succesful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization Pass2FixInlineConstructors
Inferred type updated to word/signed word/dword/signed dword in (word~) main::$4 ← (const byte) main::line1_xpos#0 w= (byte/signed byte/word/signed word/dword/signed dword) 0
Inferred type updated to word/signed word/dword/signed dword in (word~) main::$5 ← (const byte) main::line2_xpos#0 w= (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating unused constant (const byte*) cur_line#15
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Culled Empty Block (label) main::@2
Culled Empty Block (label) main::@3
Culled Empty Block (label) @1
Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (word) main::line1_pos#0 = (word/signed word/dword/signed dword~) main::$4
Alias (word) main::line2_pos#0 = (word/signed word/dword/signed dword~) main::$5
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const word) main::line1_pos#0 = main::line1_xpos#0*256+0
Constant (const word) main::line2_pos#0 = main::line2_xpos#0*256+0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) main::sc#0
Inlining constant with var siblings (const byte) main::line1_i#0
@ -514,14 +514,12 @@ Constant inlined cur_line#0 = ((byte*))(word/signed word/dword/signed dword) 102
Constant inlined main::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined cur_line#2 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined main::line1_pos#0 = (const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero main::line1_xpos#0*256+0
Simplifying constant plus zero main::line2_xpos#0*256+0
Block Sequence Planned @begin @3 @end main main::@1 main::line1 main::line1_@1 main::plot1 main::@4 main::line2 main::line2_@1 main::plot2 main::@6 main::@return
Added new block during phi lifting main::@7(between main::@1 and main::@1)
Added new block during phi lifting main::@8(between main::@4 and main::line1_@1)
Added new block during phi lifting main::@9(between main::@6 and main::line2_@1)
Block Sequence Planned @begin @3 @end main main::@1 main::line1 main::line1_@1 main::plot1 main::@4 main::line2 main::line2_@1 main::plot2 main::@6 main::@return main::@9 main::@8 main::@7
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -550,7 +548,6 @@ Coalesced down to 7 phi equivalence classes
Culled Empty Block (label) main::@9
Culled Empty Block (label) main::@8
Culled Empty Block (label) main::@7
Block Sequence Planned @begin @3 @end main main::@1 main::line1 main::line1_@1 main::plot1 main::@4 main::line2 main::line2_@1 main::plot2 main::@6 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end

View File

@ -232,7 +232,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::sum1_a#0 = (byte) main::sum1_a#1
Alias (byte) main::sum1_b#0 = (byte) main::sum1_b#1
Alias (byte*) screen#1 = (byte*) screen#7 (byte*) screen#10 (byte*) screen#4 (byte*) screen#8 (byte*) screen#5 (byte*) screen#2 (byte*) screen#9 (byte*) screen#6 (byte*) screen#3
@ -244,9 +244,9 @@ Alias (byte) main::sum3_a#0 = (byte) main::sum3_a#1
Alias (byte) main::sum3_b#0 = (byte) main::sum3_b#1
Alias (byte) main::sum3_return#0 = (byte) main::sum3_$0#0 (byte) main::sum3_return#2 (byte) main::sum3_return#1 (byte) main::sum3_return#3 (byte~) main::$2
Alias (byte*) screen#0 = (byte*) screen#11
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte*) screen#1 (byte*) screen#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte) main::sum1_a#0 = 2
Constant (const byte) main::sum1_b#0 = 1
@ -254,23 +254,21 @@ Constant (const byte) main::sum2_a#0 = 10
Constant (const byte) main::sum2_b#0 = 3
Constant (const byte) main::sum3_a#0 = 4
Constant (const byte) main::sum3_b#0 = 8
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::sum1_return#0 = main::sum1_a#0+main::sum1_b#0
Constant (const byte) main::sum2_return#0 = main::sum2_a#0+main::sum2_b#0
Constant (const byte) main::sum3_return#0 = main::sum3_a#0+main::sum3_b#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(screen#0+0)
Consolidated array index constant in *(screen#0+1)
Consolidated array index constant in *(screen#0+2)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Culled Empty Block (label) main::sum1_@return
Culled Empty Block (label) main::sum2_@return
Culled Empty Block (label) main::sum3_@return
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Simplifying constant plus zero screen#0+0
Block Sequence Planned @begin @2 @end main main::sum1 main::@1 main::sum2 main::@2 main::sum3 main::@3 main::@return
Block Sequence Planned @begin @2 @end main main::sum1 main::@1 main::sum2 main::@2 main::sum3 main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -284,7 +282,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::sum1 main::@1 main::sum2 main::@2 main::sum3 main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -229,7 +229,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) main::print1_msg#0 = (byte*) main::hello#0 (byte*) main::print1_msg#2 (byte*) main::hello#3
Alias (byte*) main::print1_at#0 = (byte*) main::print1_at#2
Alias (byte*) screen#1 = (byte*) screen#5
@ -237,14 +237,14 @@ Alias (byte*) screen#2 = (byte*) screen#4
Alias (byte*) main::hello#1 = (byte*) main::hello#2 (byte*) main::print2_msg#0 (byte*) main::print2_msg#2
Alias (byte*) main::print2_at#0 = (byte*~) main::$2 (byte*) main::print2_at#2
Alias (byte*) screen#0 = (byte*) screen#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::print1_msg#1
Self Phi Eliminated (byte*) main::print1_at#1
Self Phi Eliminated (byte*) screen#2
Self Phi Eliminated (byte*) main::hello#1
Self Phi Eliminated (byte*) main::print2_msg#1
Self Phi Eliminated (byte*) main::print2_at#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) screen#1 (byte*) screen#0
Redundant Phi (byte*) main::print1_msg#1 (byte*) main::print1_msg#0
Redundant Phi (byte*) main::print1_at#1 (byte*) main::print1_at#0
@ -252,10 +252,10 @@ Redundant Phi (byte*) screen#2 (byte*) screen#1
Redundant Phi (byte*) main::hello#1 (byte*) main::print1_msg#0
Redundant Phi (byte*) main::print2_msg#1 (byte*) main::hello#1
Redundant Phi (byte*) main::print2_at#1 (byte*) main::print2_at#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool) main::print1_$0#0 if(*((byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1
Simple Condition (bool) main::print2_$0#0 if(*((byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte*) main::print1_msg#0 = main::$4
Constant (const byte) main::print1_j#0 = 0
@ -263,12 +263,12 @@ Constant (const byte) main::print1_i#0 = 0
Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$1 = 2*40
Constant (const byte) main::print2_j#0 = 0
Constant (const byte) main::print2_i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::print1_at#0 = screen#0
Constant (const byte*) main::print2_at#0 = screen#0+main::$1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::print1_j#0
Inlining constant with var siblings (const byte) main::print1_i#0
@ -281,11 +281,9 @@ Constant inlined main::$1 = (byte/signed byte/word/signed word/dword/signed dwor
Constant inlined main::$4 = (const byte*) main::print1_msg#0
Constant inlined main::print1_i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::print1_j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::print1 main::print1_@1 main::print2 main::print2_@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::print1_@1 and main::print1_@1)
Added new block during phi lifting main::@4(between main::print2_@1 and main::print2_@1)
Block Sequence Planned @begin @2 @end main main::print1 main::print1_@1 main::print2 main::print2_@1 main::@return main::@4 main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -308,7 +306,6 @@ Coalesced [21] main::print1_j#3 ← main::print1_j#1
Coalesced down to 4 phi equivalence classes
Culled Empty Block (label) main::@4
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @2 @end main main::print1 main::print1_@1 main::print2 main::print2_@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -561,7 +561,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) RASTER#3 = (byte*) RASTER#7
Alias (byte*) screen#5 = (byte*) screen#9
Alias (byte*) charset1#3 = (byte*) charset1#5
@ -592,7 +592,7 @@ Alias (byte*) charset1#0 = (byte*) charset1#8
Alias (byte*) D018#0 = (byte*) D018#16
Alias (byte*) BGCOL#0 = (byte*) BGCOL#16
Alias (byte*) charset2#0 = (byte*) charset2#14
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte*) screen#1
Self Phi Eliminated (byte*) charset1#1
@ -605,7 +605,7 @@ Self Phi Eliminated (byte*) charset2#1
Self Phi Eliminated (byte*) D018#10
Self Phi Eliminated (byte*) BGCOL#10
Self Phi Eliminated (byte*) charset1#10
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) RASTER#9 (byte*) RASTER#0
Redundant Phi (byte*) screen#11 (byte*) screen#0
Redundant Phi (byte*) charset1#6 (byte*) charset1#0
@ -624,66 +624,66 @@ Redundant Phi (byte*) charset2#1 (byte*) charset2#10
Redundant Phi (byte*) D018#10 (byte*) D018#1
Redundant Phi (byte*) BGCOL#10 (byte*) BGCOL#1
Redundant Phi (byte*) charset1#10 (byte*) charset1#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if(*((byte*) RASTER#3)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5
Simple Condition (bool~) main::$2 if(*((byte*) RASTER#3)!=(byte/signed byte/word/signed word/dword/signed dword) 98) goto main::@8
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) D018#0 = ((byte*))53272
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte*) charset1#0 = ((byte*))4096
Constant (const byte*) charset2#0 = ((byte*))6144
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Eliminating Noop Cast (word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#0
Eliminating Noop Cast (word) main::toD0181_$2#0 ← ((word)) (byte*) main::toD0181_charset#0
Eliminating Noop Cast (word) main::toD0182_$0#0 ← ((word)) (byte*) main::toD0182_screen#0
Eliminating Noop Cast (word) main::toD0182_$2#0 ← ((word)) (byte*) main::toD0182_charset#0
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) main::@2
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@8
Culled Empty Block (label) main::toD0182_@return
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte*) RASTER#3
Self Phi Eliminated (byte*) screen#5
Self Phi Eliminated (byte*) charset1#3
Self Phi Eliminated (byte*) D018#11
Self Phi Eliminated (byte*) BGCOL#11
Self Phi Eliminated (byte*) charset2#11
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) RASTER#3 (const byte*) RASTER#0
Redundant Phi (byte*) screen#5 (const byte*) screen#0
Redundant Phi (byte*) charset1#3 (const byte*) charset1#0
Redundant Phi (byte*) D018#11 (const byte*) D018#0
Redundant Phi (byte*) BGCOL#11 (const byte*) BGCOL#0
Redundant Phi (byte*) charset2#11 (const byte*) charset2#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte*) main::toD0181_screen#0 = screen#0
Constant (const byte*) main::toD0181_charset#0 = charset1#0
Constant (const byte*) main::toD0182_screen#0 = screen#0
Constant (const byte*) main::toD0182_charset#0 = charset2#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word/signed dword/dword) main::toD0181_$1#0 = (word)main::toD0181_screen#0/64
Constant (const word/signed dword/dword) main::toD0181_$3#0 = (word)main::toD0181_charset#0/1024
Constant (const word/signed dword/dword) main::toD0182_$1#0 = (word)main::toD0182_screen#0/64
Constant (const word/signed dword/dword) main::toD0182_$3#0 = (word)main::toD0182_charset#0/1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word/dword) main::toD0181_$4#0 = main::toD0181_$1#0|main::toD0181_$3#0
Constant (const word/dword) main::toD0182_$4#0 = main::toD0182_$1#0|main::toD0182_$3#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::toD0181_return#0 = ((byte))main::toD0181_$4#0
Constant (const byte) main::toD0182_return#0 = ((byte))main::toD0182_$4#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@1
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@9
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::toD0181_screen#0 = (const byte*) screen#0
Constant inlined main::toD0182_charset#0 = (const byte*) charset2#0
@ -695,9 +695,7 @@ Constant inlined main::toD0182_$4#0 = (word)(const byte*) screen#0/(byte/signed
Constant inlined main::toD0182_$3#0 = (word)(const byte*) charset2#0/(word/signed word/dword/signed dword) 1024
Constant inlined main::toD0181_$1#0 = (word)(const byte*) screen#0/(byte/signed byte/word/signed word/dword/signed dword) 64
Constant inlined main::toD0181_charset#0 = (const byte*) charset1#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@4 main::toD0181 main::@19 main::@7 main::toD0182 main::@20
Block Sequence Planned @begin @2 @end main main::@4 main::toD0181 main::@19 main::@7 main::toD0182 main::@20
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -709,7 +707,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@4 main::toD0181 main::@19 main::@7 main::toD0182 main::@20
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -300,9 +300,9 @@ Alias (byte*) print::msg#2 = (byte*) print::msg#3
Alias (byte*) screen#14 = (byte*) screen#19 (byte*) screen#15 (byte*) screen#7
Alias (byte*) screen#20 = (byte*) screen#5
Alias (byte*) screen#16 = (byte*) screen#8
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) screen#18 = (byte*) screen#21
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte*) screen#17 (byte*) screen#20
Redundant Phi (byte*) screen#0 (byte*) screen#12
Redundant Phi (byte*) screen#1 (byte*) screen#12
@ -310,22 +310,22 @@ Redundant Phi (byte*) screen#12 (byte*) screen#14
Redundant Phi (byte*) print::msg#4 (byte*) print::msg#0
Redundant Phi (byte*) screen#23 (byte*) screen#18
Redundant Phi (byte*) screen#16 (byte*) screen#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_msg::$0 if((byte) print_msg::idx#2==(byte/signed byte/word/signed word/dword/signed dword) 1) goto print_msg::@1
Simple Condition (bool~) print::$0 if(*((byte*) print::msg#2)!=(byte) '@') goto print::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) print_msg::idx#0 = 1
Constant (const byte) print_msg::idx#1 = 2
Constant (const byte*) print_msg::msg#0 = print_msg::$2
Constant (const byte*) print_msg::msg#1 = print_msg::$3
Constant (const byte*) screen#20 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@2
Culled Empty Block (label) print_msg::@1
Culled Empty Block (label) print_msg::@5
Culled Empty Block (label) @2
Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) print_msg::idx#0
Inlining constant with var siblings (const byte) print_msg::idx#1
@ -337,13 +337,11 @@ Constant inlined print_msg::idx#0 = (byte/signed byte/word/signed word/dword/sig
Constant inlined screen#20 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined print_msg::$3 = (const byte*) print_msg::msg#1
Constant inlined print_msg::$2 = (const byte*) print_msg::msg#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Inlining constant with var siblings (const byte*) print_msg::msg#0
Inlining constant with var siblings (const byte*) print_msg::msg#1
Inlining constant with var siblings (const byte*) print_msg::msg#0
Inlining constant with var siblings (const byte*) print_msg::msg#1
Block Sequence Planned @begin @3 @end main main::@1 main::@return print_msg print_msg::@3 print_msg::@2 print_msg::@return print print::@1 print::@return print::@2
Block Sequence Planned @begin @3 @end main main::@1 main::@return print_msg print_msg::@3 print_msg::@2 print_msg::@return print print::@1 print::@return print::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -367,7 +365,6 @@ Coalesced (already) [17] screen#26 ← screen#18
Coalesced [24] print::msg#6 ← print::msg#1
Coalesced [25] screen#27 ← screen#6
Coalesced down to 4 phi equivalence classes
Block Sequence Planned @begin @3 @end main main::@1 main::@return print_msg print_msg::@3 print_msg::@2 print_msg::@return print print::@1 print::@return print::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end

View File

@ -110,31 +110,29 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) main::ptr#0 = (byte*~) main::$4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Constant (const byte[]) main::STRING#0 = main::$5
Constant (const byte*) main::PTR#0 = ((byte*))40958
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = <main::STRING#0
Constant (const byte*) main::$1 = main::PTR#0+1
Constant (const byte) main::$2 = >main::STRING#0
Constant (const byte*) main::$3 = main::PTR#0+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Fixing inline constructor with main::$6 ← *(main::$3) w= *(main::PTR#0)
Succesful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization Pass2FixInlineConstructors
Eliminating Noop Cast (byte*) main::ptr#0 ← ((byte*)) (word~) main::$6
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$5 = (const byte[]) main::STRING#0
Constant inlined main::$3 = (const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$1 = (const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$2 = >(const byte[]) main::STRING#0
Constant inlined main::$0 = <(const byte[]) main::STRING#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@return
Block Sequence Planned @begin @1 @end main main::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -145,7 +143,6 @@ Propagating live ranges...
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -230,27 +230,27 @@ Alias (byte*) print::msg#4 = (byte*) print::msg#5
Alias (byte*) screen#12 = (byte*) screen#16 (byte*) screen#13 (byte*) screen#6
Alias (byte*) screen#17 = (byte*) screen#4
Alias (byte*) screen#14 = (byte*) screen#7
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte*) screen#15 (byte*) screen#17
Redundant Phi (byte*) screen#0 (byte*) screen#12
Redundant Phi (byte*) screen#1 (byte*) screen#12
Redundant Phi (byte*) screen#10 (byte*) screen#12
Redundant Phi (byte*) screen#14 (byte*) screen#10
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print::$0 if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte[]) msg1#0 = $0
Constant (const byte[]) main::msg2#0 = main::$3
Constant (const byte*) print::msg#2 = main::msg
Constant (const byte*) screen#17 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print::msg#0 = msg1#0
Constant (const byte*) print::msg#1 = main::msg2#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@3
Culled Empty Block (label) @1
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) print::msg#2
Inlining constant with var siblings (const byte*) print::msg#0
@ -262,9 +262,7 @@ Constant inlined $0 = (const byte[]) msg1#0
Constant inlined print::msg#1 = (const byte[]) main::msg2#0
Constant inlined print::msg#0 = (const byte[]) msg1#0
Constant inlined screen#17 = ((byte*))(word/signed word/dword/signed dword) 1024
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return print print::@1 print::@return print::@2
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return print print::@1 print::@return print::@2
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -285,7 +283,6 @@ Coalesced (already) [13] screen#21 ← screen#18
Coalesced [20] print::msg#8 ← print::msg#3
Coalesced [21] screen#22 ← screen#5
Coalesced down to 2 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return print print::@1 print::@return print::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -166,40 +166,40 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) main::sc#0 = (byte*~) main::$5
Alias (byte) main::h#2 = (byte) main::h#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) main::h#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) main::h#2 (byte) main::h#4
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$6 if((byte) main::l#1!=rangelast(4,7)) goto main::@2
Simple Condition (bool~) main::$7 if((byte) main::h#1!=rangelast(0,2)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::h#0 = 0
Constant (const byte) main::l#0 = 4
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = >SCREEN#0
Constant (const byte*) main::$1 = SCREEN#0+256
Constant (const byte*) main::$3 = SCREEN#0+512
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$2 = >main::$1
Constant (const byte) main::$4 = >main::$3
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::his#0 = { main::$0, main::$2, main::$4 }
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Fixing inline constructor with main::$8 ← *(main::his#0 + main::h#4) w= main::l#2
Succesful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization Pass2FixInlineConstructors
Eliminating Noop Cast (byte*) main::sc#0 ← ((byte*)) (word) main::w#0
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
Resolved ranged next value main::l#1 ← ++ main::l#2 to ++
Resolved ranged comparison value if(main::l#1!=rangelast(4,7)) goto main::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value main::h#1 ← ++ main::h#4 to ++
Resolved ranged comparison value if(main::h#1!=rangelast(0,2)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 3
Alias (word) main::w#0 = (word~) main::$8
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::h#0
Inlining constant with var siblings (const byte) main::l#0
@ -210,11 +210,9 @@ Constant inlined main::$0 = >(const byte*) SCREEN#0
Constant inlined main::h#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::$3 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 512
Constant inlined main::$4 = >(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 512
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@3 and main::@1)
Added new block during phi lifting main::@6(between main::@2 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -233,7 +231,6 @@ Coalesced [15] main::l#3 ← main::l#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -133,28 +133,28 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Self Phi Eliminated (byte*) SCREEN2#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN2#2 (byte*) SCREEN2#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if((byte) main::i#1!=rangelast(0,3)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const word/signed word/dword/signed dword) $0 = 1024+40
Constant (const byte[]) main::txt#0 = main::$1
Constant (const byte[]) main::data#0 = { 1, 2, 3 }
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) SCREEN2#0 = ((byte*))$0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,3)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4
OPTIMIZING CONTROL FLOW GRAPH
@ -162,10 +162,8 @@ Inlining constant with var siblings (const byte) main::i#0
Constant inlined $0 = (word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined main::$1 = (const byte[]) main::txt#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -179,7 +177,6 @@ Created 1 initial phi equivalence classes
Coalesced [11] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -196,32 +196,32 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word/dword/signed dword) 3
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::i#2 = (byte) main::i#4
Alias (byte*) main::screen#1 = (byte*) main::screen#3
Alias (byte*) main::cols#1 = (byte*) main::cols#3
Alias (byte) WHITE#0 = (byte) WHITE#2
Alias (byte) RED#0 = (byte) RED#2
Alias (byte) GREEN#0 = (byte) GREEN#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) main::screen#1 = (byte*) main::screen#2
Alias (byte*) main::cols#1 = (byte*) main::cols#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::screen#1
Self Phi Eliminated (byte*) main::cols#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) WHITE#1 (byte) WHITE#0
Redundant Phi (byte) RED#1 (byte) RED#0
Redundant Phi (byte) GREEN#1 (byte) GREEN#0
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
Redundant Phi (byte*) main::cols#1 (byte*) main::cols#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@2
Simple Condition (bool~) main::$2 if((byte) main::i#1!=rangelast(0,39)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) WHITE#0 = 1
Constant (const byte) RED#0 = 2
Constant (const byte) GREEN#0 = 5
@ -230,9 +230,9 @@ Constant (const byte*) main::cols#0 = ((byte*))55296
Constant (const byte) main::j#0 = 0
Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#2 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::colseq#0 = { WHITE#0, RED#0, GREEN#0 }
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,39)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
OPTIMIZING CONTROL FLOW GRAPH
@ -242,11 +242,9 @@ Inlining constant with var siblings (const byte) main::j#2
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@2 and main::@1)
Added new block during phi lifting main::@6(between main::@1 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -267,7 +265,6 @@ Coalesced [17] main::j#6 ← main::j#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -154,30 +154,30 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word/dword/signed dword) 8 from (bool~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word/dword/signed dword) 8
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::i#2 = (byte) main::i#4
Alias (byte*) SCREEN#1 = (byte*) SCREEN#5
Alias (byte*) SCREEN#0 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) SCREEN#1 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2
Simple Condition (bool~) main::$2 if((byte) main::i#1!=rangelast(0,100)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte[]) TXT#0 = { 3, 1, 13, 5, 12, 15, 20, 32 }
Constant (const byte) main::j#0 = 0
Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#2 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,100)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 101
OPTIMIZING CONTROL FLOW GRAPH
@ -187,11 +187,9 @@ Inlining constant with var siblings (const byte) main::j#2
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@2 and main::@1)
Added new block during phi lifting main::@6(between main::@1 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -212,7 +210,6 @@ Coalesced [16] main::j#6 ← main::j#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -161,32 +161,32 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8 from (bool~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word/dword/signed dword) 8
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte*) main::cursor#2 = (byte*) main::cursor#4
Alias (byte*) SCREEN#4 = (byte*) SCREEN#5
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte*) main::cursor#2 = (byte*) main::cursor#3
Alias (byte*) SCREEN#2 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@2
Simple Condition (bool~) main::$3 if((byte*) main::cursor#1<(byte*~) main::$2) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte[]) TEXT#0 = $0
Constant (const byte) main::i#0 = 0
Constant (const byte) main::i#2 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::cursor#0 = SCREEN#0
Constant (const byte*) main::$2 = SCREEN#0+1000
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#2
@ -196,11 +196,9 @@ Constant inlined main::i#2 = (byte/signed byte/word/signed word/dword/signed dwo
Constant inlined $0 = (const byte[]) TEXT#0
Constant inlined main::$2 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000
Constant inlined main::cursor#0 = (const byte*) SCREEN#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@5(between main::@2 and main::@1)
Added new block during phi lifting main::@6(between main::@1 and main::@2)
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return main::@5 main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -221,7 +219,6 @@ Coalesced [16] main::i#6 ← main::i#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@5
Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return main::@6
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -706,7 +706,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) irq::@1
Culled Empty Block (label) @7
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
@ -724,18 +724,16 @@ Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
Constant (const byte) BLACK#0 = 0
Constant (const byte) WHITE#0 = 1
Constant (const void()*) main::$0 = &irq
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq()
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @6 @end main main::@2 irq irq::@return do_irq do_irq::@return
Block Sequence Planned @begin @6 @end main main::@2 irq irq::@return do_irq do_irq::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @6
Adding NOP phi() at start of @end
@ -747,7 +745,6 @@ Calls in [irq] to do_irq:15
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @6 @end main main::@2 irq irq::@return do_irq do_irq::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @6
Adding NOP phi() at start of @end

View File

@ -289,7 +289,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
@ -307,18 +307,16 @@ Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte) PROCPORT_RAM_IO#0 = 53
Constant (const void()*) main::$0 = &irq
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq()
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@2 irq irq::@return
Block Sequence Planned @begin @2 @end main main::@2 irq irq::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -328,7 +326,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@2 irq irq::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -289,7 +289,7 @@ interrupt(HARDWARE_ALL)(void()) irq()
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
@ -307,18 +307,16 @@ Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte) PROCPORT_RAM_IO#0 = 53
Constant (const void()*) main::$0 = &irq
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$0 = &interrupt(HARDWARE_ALL)(void()) irq()
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@2 irq irq::@return
Block Sequence Planned @begin @2 @end main main::@2 irq irq::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -328,7 +326,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@2 irq irq::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -290,7 +290,7 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
@ -307,17 +307,15 @@ Constant (const byte*) GHOST_BYTE#0 = ((byte*))16383
Constant (const void()*) main::$0 = &irq_bottom_1
Constant (const void()*) irq_bottom_1::$1 = &irq_bottom_2
Constant (const void()*) irq_bottom_2::$0 = &irq_bottom_1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) irq_bottom_1::$0 = 255^VIC_RSEL#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined irq_bottom_2::$0 = &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
Constant inlined irq_bottom_1::$0 = (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0
Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
Constant inlined irq_bottom_1::$1 = &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @3 @end main main::@return irq_bottom_2 irq_bottom_2::@return irq_bottom_1 irq_bottom_1::@return
Block Sequence Planned @begin @3 @end main main::@return irq_bottom_2 irq_bottom_2::@return irq_bottom_1 irq_bottom_1::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -327,7 +325,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @3 @end main main::@return irq_bottom_2 irq_bottom_2::@return irq_bottom_1 irq_bottom_1::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end

View File

@ -201,7 +201,7 @@ interrupt(KERNEL_KEYBOARD)(void()) irq()
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
@ -214,12 +214,10 @@ Constant (const byte) BLACK#0 = 0
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
Constant (const void()*) main::$0 = &irq
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$0 = &interrupt(KERNEL_KEYBOARD)(void()) irq()
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@return irq irq::@return
Block Sequence Planned @begin @2 @end main main::@return irq irq::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -229,7 +227,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@return irq irq::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -201,7 +201,7 @@ interrupt(KERNEL_MIN)(void()) irq()
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
@ -214,12 +214,10 @@ Constant (const byte) BLACK#0 = 0
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
Constant (const void()*) main::$0 = &irq
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) irq()
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@return irq irq::@return
Block Sequence Planned @begin @2 @end main main::@return irq irq::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -229,7 +227,6 @@ Calls in [] to main:2
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@return irq irq::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -102,26 +102,24 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::i#1 = (byte/signed word/word/dword/signed dword~) main::$2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) main::$3 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte[16]) main::buf#0 = ((byte*))4352
Constant (const byte) main::i#0 = 5
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated constant in assignment main::$1
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2
Alias (byte) main::i#2 = (byte~) main::$0
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 5
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -135,7 +133,6 @@ Created 1 initial phi equivalence classes
Coalesced [11] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -1843,12 +1843,12 @@ OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) menu::@18
Culled Empty Block (label) pressed::@4
Culled Empty Block (label) @14
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) menu::$2 ← (byte~) menu::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$1 ← (byte~) menu::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) menu::$6 ← (byte~) menu::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$5 ← (byte~) menu::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) menu::$9 ← (byte~) menu::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$8 ← (byte~) menu::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) pressed::$2 ← (byte~) pressed::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) pressed::$1 ← (byte~) pressed::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2UnaryNotSimplification
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
Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1
@ -1861,21 +1861,21 @@ Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::retur
Alias (byte) keyboard_key_pressed::return#4 = (byte) keyboard_key_pressed::return#9
Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#5
Alias (byte*) SCREEN#0 = (byte*) SCREEN#14
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#10
Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#12
Redundant Phi (byte*) SCREEN#9 (byte*) SCREEN#10
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#9
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) menu::$2 if((byte~) menu::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@4
Simple Condition (bool~) menu::$6 if((byte~) menu::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@5
Simple Condition (bool~) menu::$9 if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6
Simple Condition (bool~) pressed::$2 if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
@ -1889,25 +1889,25 @@ Constant (const byte) KEY_SPACE#0 = 60
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
Constant (const byte*) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) keyboard_key_pressed::key#0 = KEY_C#0
Constant (const byte) keyboard_key_pressed::key#1 = KEY_I#0
Constant (const byte) keyboard_key_pressed::key#2 = KEY_E#0
Constant (const byte) keyboard_key_pressed::key#3 = KEY_SPACE#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination if(true) goto main::@2
if() condition always true - replacing block destination if(true) goto menu::@2
if() condition always true - replacing block destination if(true) goto pressed::@2
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Culled Empty Block (label) @3
Culled Empty Block (label) main::@1
Culled Empty Block (label) main::@7
Culled Empty Block (label) @11
Culled Empty Block (label) menu::@1
Culled Empty Block (label) pressed::@1
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) keyboard_key_pressed::key#0
Inlining constant with var siblings (const byte) keyboard_key_pressed::key#1
@ -1917,9 +1917,7 @@ Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_C#0
Constant inlined keyboard_key_pressed::key#1 = (const byte) KEY_I#0
Constant inlined keyboard_key_pressed::key#2 = (const byte) KEY_E#0
Constant inlined keyboard_key_pressed::key#3 = (const byte) KEY_SPACE#0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @13 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return
Block Sequence Planned @begin @13 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @end
@ -1946,7 +1944,6 @@ Propagating live ranges...
Propagating live ranges...
Created 1 initial phi equivalence classes
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @13 @end main main::@2 menu menu::@2 menu::@16 menu::@9 menu::@return menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@2 pressed::@10 pressed::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @end

View File

@ -3046,12 +3046,12 @@ OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@6
Culled Empty Block (label) @19
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
Inversing boolean not (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
Succesful SSA optimization Pass2UnaryNotSimplification
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
Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4
@ -3131,7 +3131,7 @@ Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0
Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3
Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3
Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6
@ -3147,16 +3147,16 @@ Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte)
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
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#2
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#1
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (word) divr16u::divisor#1
Self Phi Eliminated (byte) screen_fill::ch#1
Self Phi Eliminated (byte) screen_fill::y#2
Self Phi Eliminated (byte*) bitmap_init::bitmap#1
Self Phi Eliminated (byte) bitmap_clear::y#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (word) divr16u::rem#8 (word) divr16u::rem#3
Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1
Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0
@ -3176,7 +3176,7 @@ Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5
Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4
Redundant Phi (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0
Redundant Phi (word) bitmap_plot::x#1 (word) bitmap_plot::x#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
Simple Condition (bool~) divr16u::$9 if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
Simple Condition (bool~) divr16u::$11 if((byte) divr16u::i#1!=rangelast(0,15)) goto divr16u::@1
@ -3196,9 +3196,9 @@ Simple Condition (bool~) bitmap_init::$9 if((byte~) bitmap_init::$7!=(byte/signe
Simple Condition (bool~) bitmap_init::$12 if((byte) bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3
Simple Condition (bool~) bitmap_clear::$1 if((byte) bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2
Simple Condition (bool~) bitmap_clear::$2 if((byte) bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting || if()-condition to two if()s (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
Succesful SSA optimization Pass2ConditionalAndOrRewriting
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
@ -3247,7 +3247,7 @@ Constant (const byte) bitmap_init::y#0 = 0
Constant (const word/signed word/dword/signed dword) bitmap_init::$10 = 40*8
Constant (const byte) bitmap_clear::y#0 = 0
Constant (const byte) bitmap_clear::x#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const bool) divr16s::$0 = divr16s::dividend#0<0
Constant (const signed word) divr16s::$5 = -divr16s::dividend#0
Constant (const word) divr16s::dividendu#2 = ((word))divr16s::dividend#0
@ -3257,39 +3257,39 @@ Constant (const byte*) main::toD0181_screen#0 = SCREEN#0
Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0
Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0
Constant (const byte*) screen_fill::screen#0 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const word) divr16s::dividendu#1 = ((word))divr16s::$5
Constant (const byte) main::$1 = main::$0|VIC_RSEL#0
Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0
Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0
Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte/word/dword) main::$2 = main::$1|3
Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0
Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383
Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6
Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2
Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0
Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0
Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating if((const bool) divr16s::$0) goto divr16s::@1
if() condition always true - replacing block destination if(true) goto main::@5
Succesful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantIfs
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0)
Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#0) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#0)
Succesful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization Pass2FixInlineConstructors
Eliminating unused constant (const word) divr16s::dividendu#0
Eliminating unused constant (const word) divr16s::remu#0
Eliminating unused constant (const word) divr16s::divisoru#0
Eliminating unused constant (const bool) divr16s::$0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Eliminating Noop Cast (word) divr16s::remu#1 ← ((word)) (signed word~) divr16s::$7
Eliminating Noop Cast (word) divr16s::remu#2 ← ((word)) (signed word) divr16s::rem#0
Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) divr16s::$11
@ -3305,9 +3305,9 @@ Eliminating Noop Cast (word) point_init::abs16s2_return#1 ← ((word)) (signed w
Eliminating Noop Cast (signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3
Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3
Succesful SSA optimization Pass2NopCastElimination
Successful SSA optimization Pass2NopCastElimination
Removing unused block main::@return
Succesful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++
Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Resolved ranged next value screen_fill::x#1 ← ++ screen_fill::x#2 to ++
@ -3337,16 +3337,16 @@ Culled Empty Block (label) point_init::@9
Culled Empty Block (label) point_init::abs16s2_@3
Culled Empty Block (label) @15
Culled Empty Block (label) bitmap_init::@6
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (byte) screen_fill::ch#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) screen_fill::ch#2 (const byte) screen_fill::ch#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16s::$1 if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Consolidated array index constant in *(bitmap_plot_yhi#0+0)
Consolidated array index constant in *(bitmap_plot_ylo#0+0)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const word) divr16u::quotient#0
Inlining constant with var siblings (const byte) divr16u::i#0
@ -3401,10 +3401,9 @@ Constant inlined bitmap_init::y#0 = (byte/signed byte/word/signed word/dword/sig
Constant inlined screen_fill::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero bitmap_plot_yhi#0+0
Simplifying constant plus zero bitmap_plot_ylo#0+0
Block Sequence Planned @begin @18 @end main main::vicSelectGfxBank1 main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_@1 main::toD0181 main::@16 main::@17 main::@18 main::@1 main::@20 main::@21 main::@5 main::@7 bitmap_plot bitmap_plot::@return point_init point_init::abs16s1 point_init::abs16s1_@return point_init::abs16s2 point_init::abs16s2_@return point_init::@10 point_init::@2 point_init::@return point_init::@1 point_init::@7 point_init::@4 point_init::@11 point_init::@3 point_init::abs16s2_@1 point_init::abs16s1_@1 divr16s divr16s::@16 divr16s::@2 divr16s::@4 divr16s::@15 divr16s::@11 divr16s::@return divr16s::@3 divr16s::@1 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return screen_fill screen_fill::@1 screen_fill::@2 screen_fill::@3 screen_fill::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return
Added new block during phi lifting main::@22(between main::@21 and main::@1)
Added new block during phi lifting point_init::@12(between point_init::abs16s1 and point_init::abs16s1_@return)
Added new block during phi lifting point_init::@13(between point_init::abs16s2 and point_init::abs16s2_@return)
@ -3424,7 +3423,6 @@ Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and b
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3)
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4)
Block Sequence Planned @begin @18 @end main main::vicSelectGfxBank1 main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_@1 main::toD0181 main::@16 main::@17 main::@18 main::@1 main::@20 main::@21 main::@5 main::@7 main::@22 bitmap_plot bitmap_plot::@return point_init point_init::abs16s1 point_init::@12 point_init::abs16s1_@return point_init::abs16s2 point_init::@13 point_init::abs16s2_@return point_init::@10 point_init::@2 point_init::@return point_init::@1 point_init::@7 point_init::@4 point_init::@11 point_init::@3 point_init::abs16s2_@1 point_init::abs16s1_@1 divr16s divr16s::@16 divr16s::@17 divr16s::@2 divr16s::@18 divr16s::@4 divr16s::@15 divr16s::@11 divr16s::@return divr16s::@19 divr16s::@3 divr16s::@1 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 screen_fill screen_fill::@1 screen_fill::@2 screen_fill::@3 screen_fill::@return screen_fill::@5 screen_fill::@6 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @18
Adding NOP phi() at start of @end
@ -3507,7 +3505,6 @@ Culled Empty Block (label) bitmap_init::@5
Culled Empty Block (label) bitmap_init::@11
Culled Empty Block (label) bitmap_init::@12
Culled Empty Block (label) bitmap_init::@9
Block Sequence Planned @begin @18 @end main main::vicSelectGfxBank1 main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_@1 main::toD0181 main::@16 main::@17 main::@18 main::@1 main::@20 main::@21 main::@5 main::@7 bitmap_plot bitmap_plot::@return point_init point_init::abs16s1 point_init::@12 point_init::abs16s1_@return point_init::abs16s2 point_init::@13 point_init::abs16s2_@return point_init::@10 point_init::@2 point_init::@return point_init::@1 point_init::@7 point_init::@4 point_init::@11 point_init::@3 point_init::abs16s2_@1 point_init::abs16s1_@1 divr16s divr16s::@16 divr16s::@17 divr16s::@2 divr16s::@18 divr16s::@4 divr16s::@15 divr16s::@11 divr16s::@return divr16s::@19 divr16s::@3 divr16s::@1 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return screen_fill screen_fill::@1 screen_fill::@2 screen_fill::@3 screen_fill::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @18
Adding NOP phi() at start of @end

View File

@ -2551,7 +2551,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Inversing boolean not (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2
Succesful SSA optimization Pass2UnaryNotSimplification
Successful SSA optimization Pass2UnaryNotSimplification
Not aliassing identity: lin16u_gen::step#1 lin16u_gen::step#1
Not aliassing identity: lin16u_gen::length#5 lin16u_gen::length#5
Not aliassing identity: rem16u#23 rem16u#23
@ -2640,7 +2640,7 @@ Alias (word) rem16u#18 = (word) rem16u#23 (word) rem16u#9
Alias (word) rem16u#10 = (word) rem16u#19
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#20
Alias (byte*) print_char_cursor#39 = (byte*) print_char_cursor#77
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: lin16u_gen::step#1 lin16u_gen::step#1
Not aliassing identity: lin16u_gen::length#5 lin16u_gen::length#5
Not aliassing identity: rem16u#18 rem16u#18
@ -2649,7 +2649,7 @@ Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6
Alias (word) divr16u::divisor#2 = (word) divr16u::divisor#4 (word) divr16u::divisor#7
Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5
Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Not aliassing identity: lin16u_gen::step#1 lin16u_gen::step#1
Not aliassing identity: lin16u_gen::length#5 lin16u_gen::length#5
Not aliassing identity: rem16u#18 rem16u#18
@ -2660,7 +2660,7 @@ Self Phi Eliminated (word) rem16u#15
Self Phi Eliminated (dword) lin16u_gen::step#1
Self Phi Eliminated (word) lin16u_gen::length#5
Self Phi Eliminated (word) rem16u#18
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6
Redundant Phi (byte*) print_char_cursor#42 (byte*) print_char_cursor#79
Redundant Phi (byte*) print_char_cursor#44 (byte*) print_char_cursor#10
@ -2712,12 +2712,12 @@ Redundant Phi (word) rem16u#18 (word) rem16u#17
Redundant Phi (word) rem16u#10 (word) rem16u#15
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#18
Redundant Phi (byte*) print_char_cursor#39 (byte*) print_char_cursor#37
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) print_char_cursor#79 (byte*) print_char_cursor#11
Redundant Phi (byte*) print_char_cursor#80 (byte*) print_char_cursor#2
Redundant Phi (byte*) print_char_cursor#83 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_line_cursor#24 (byte*) print_line_cursor#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
Simple Condition (bool~) divr16u::$9 if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
Simple Condition (bool~) divr16u::$11 if((byte) divr16u::i#1!=rangelast(0,15)) goto divr16u::@1
@ -2726,7 +2726,7 @@ Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) pri
Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
Simple Condition (bool~) main::$21 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword~) main::$20) goto main::@1
Simple Condition (bool~) lin16u_gen::$8 if((word) lin16u_gen::i#1<(word) lin16u_gen::length#3) goto lin16u_gen::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const word) rem16u#0 = 0
Constant (const word) divr16u::quotient#0 = 0
Constant (const byte) divr16u::i#0 = 0
@ -2764,20 +2764,20 @@ Constant (const word) print_word::w#8 = 25736
Constant (const word) divr16u::rem#3 = 0
Constant (const word) divr16u::dividend#2 = 0
Constant (const word) lin16u_gen::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Constant (const word*) lin16u_gen::lintab#0 = main::lintab1#0
Constant (const word*) lin16u_gen::lintab#1 = main::lintab2#0
Constant (const word*) lin16u_gen::lintab#2 = main::lintab3#0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Fixing inline constructor with lin16u_gen::$9 ← lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0
Fixing inline constructor with lin16u_gen::$10 ← lin16u_gen::min#3 dw= 0
Succesful SSA optimization Pass2FixInlineConstructors
Successful SSA optimization Pass2FixInlineConstructors
Eliminating unused variable - keeping the phi block (word) rem16u#22
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const word) rem16u#0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++
Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
Culled Empty Block (label) @2
@ -2790,10 +2790,10 @@ Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@13
Culled Empty Block (label) main::@28
Culled Empty Block (label) @25
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (dword) lin16u_gen::step#0 = (dword~) lin16u_gen::$9
Alias (dword) lin16u_gen::val#0 = (dword~) lin16u_gen::$10
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const word) divr16u::quotient#0
Inlining constant with var siblings (const byte) divr16u::i#0
@ -2868,18 +2868,17 @@ Constant inlined lin16u_gen::min#2 = (byte/signed byte/word/signed word/dword/si
Constant inlined print_str::str#6 = (const string) main::str5
Constant inlined lin16u_gen::lintab#0 = (const word[20]) main::lintab1#0
Constant inlined print_str::str#5 = (const string) main::str4
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Identical Phi Values (word) lin16u_gen::length#3 (byte/signed byte/word/signed word/dword/signed dword) 20
Succesful SSA optimization Pass2IdenticalPhiElimination
Successful SSA optimization Pass2IdenticalPhiElimination
Constant (const word) divr16u::divisor#0 = 20-1
Constant (const word) divr16u::divisor#1 = 20-1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Inlining constant with var siblings (const word) divr16u::divisor#0
Inlining constant with var siblings (const word) divr16u::divisor#1
Constant inlined divr16u::divisor#1 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr16u::divisor#0 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @24 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@29(between main::@21 and main::@1)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
@ -2887,7 +2886,6 @@ Added new block during phi lifting lin16u_gen::@5(between lin16u_gen::@1 and lin
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Block Sequence Planned @begin @24 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return main::@29 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return lin16u_gen::@5 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @24
Adding NOP phi() at start of @end
@ -2988,7 +2986,6 @@ Culled Empty Block (label) lin16u_gen::@5
Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9
Block Sequence Planned @begin @24 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @24
Adding NOP phi() at start of @end

View File

@ -158,53 +158,51 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte[]) str#0 = (string~) $1
Alias (byte) char#0 = (byte) char#2
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Alias (byte) num#0 = (byte) num#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) SCREEN#2
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) char#1 (byte) char#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte) num#1 (byte) num#0
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$2 if((byte) main::i#1!=rangelast(0,3)) goto main::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) char#0 = 'a'
Constant (const byte) num#0 = 1
Constant (const string) $0 = "bc"+"d"
Constant (const byte[]) nums#0 = { 2, 3, 4, 5 }
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) str#0 = "bc"+"d"+'e'
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(SCREEN#0+0)
Consolidated array index constant in *(SCREEN#0+2)
Consolidated array index constant in assignment *(SCREEN#0+4 + main::$0)
Consolidated array index constant in assignment *(SCREEN#0+9 + main::$1)
Succesful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantAdditionElimination
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2
Eliminating unused constant (const string) $2
Eliminating unused constant (const string) $3
Eliminating unused constant (const string) $0
Succesful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,3)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4
Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantInlining
Simplifying constant plus zero SCREEN#0+0
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Added new block during phi lifting main::@3(between main::@1 and main::@1)
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -217,7 +215,6 @@ Created 1 initial phi equivalence classes
Coalesced [12] main::i#3 ← main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@3
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

View File

@ -146,10 +146,8 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@4
Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@3 main::@return incw2 incw2::@return incw1 incw1::@return
Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@3 main::@return incw2 incw2::@return incw1 incw1::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -166,7 +164,6 @@ Calls in [main] to incw1:5 incw2:7 incw1:9 incw2:11
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@3 main::@return incw2 incw2::@return incw1 incw1::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end

View File

@ -207,29 +207,27 @@ Alias (byte) i#11 = (byte) i#4 (byte/signed word/word/dword/signed dword~) inci:
Alias (byte) inci::return#2 = (byte) inci::return#6 (byte) inci::return#3
Alias (byte) i#0 = (byte) i#14
Alias (byte) i#12 = (byte) i#6
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Redundant Phi (byte) i#13 (byte) i#0
Redundant Phi (byte) i#1 (byte) i#11
Redundant Phi (byte) i#2 (byte) i#11
Redundant Phi (byte) i#12 (byte) i#2
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const byte) i#0 = 0
Constant (const byte) main::a#0 = 4
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::$4 = main::SCREEN#0+1
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::a#0
Inlining constant with var siblings (const byte) i#0
Constant inlined main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined main::$4 = (const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return inci inci::@return
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return inci inci::@return
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
@ -247,7 +245,6 @@ Propagating live ranges...
Created 1 initial phi equivalence classes
Coalesced [9] i#15 ← i#11
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return inci inci::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end

View File

@ -125,27 +125,25 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) main::screen#1 = (byte*) main::screen#2
Succesful SSA optimization Pass2AliasElimination
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte*) main::screen#1
Succesful SSA optimization Pass2SelfPhiElimination
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
Succesful SSA optimization Pass2RedundantPhiElimination
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) main::$0 if(*((byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte[]) main::msg#0 = main::$1
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::$1 = (const byte[]) main::msg#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
@ -158,7 +156,6 @@ Propagating live ranges...
Created 1 initial phi equivalence classes
Coalesced [10] main::i#4 ← main::i#1
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end

Some files were not shown because too many files have changed in this diff Show More