From 9334e435da150c4e30ae5e62ccdef5e8e219639c Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sat, 12 Aug 2017 00:31:14 +0200 Subject: [PATCH] refactored addpoint to increment its own counter --- .../kickc/passes/Pass3LiveRangesAnalysis.java | 6 +- .../dk/camelot64/kickc/test/ref/voronoi.asm | 62 +- .../dk/camelot64/kickc/test/ref/voronoi.cfg | 95 +- .../dk/camelot64/kickc/test/ref/voronoi.log | 2428 ++++++++--------- .../dk/camelot64/kickc/test/ref/voronoi.sym | 24 +- .../java/dk/camelot64/kickc/test/voronoi.kc | 23 +- 6 files changed, 1202 insertions(+), 1436 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java index 33d8d30b4..e4a1affc9 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java @@ -141,8 +141,10 @@ public class Pass3LiveRangesAnalysis extends Pass2Base { if(currentBlock.getLabel().equals(predecessor.getCallSuccessor())) { // Add to last statement before call in predecessor StatementCall callStatement = (StatementCall) predecessorStatements.get(predecessorStatements.size() - 1); - Statement predecessorLastStatementBeforeCall = predecessorStatements.get(predecessorStatements.size() - 2); - liveRanges.addAlive((VariableRef) phiRValue.getrValue(), predecessorLastStatementBeforeCall); + if(predecessorStatements.size()>1) { + Statement predecessorLastStatementBeforeCall = predecessorStatements.get(predecessorStatements.size() - 2); + liveRanges.addAlive((VariableRef) phiRValue.getrValue(), predecessorLastStatementBeforeCall); + } } else { // Add to last statement of predecessor Statement predecessorLastStatement = predecessorStatements.get(predecessorStatements.size() - 1); diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm index 9e76829e6..ab4408c45 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm @@ -5,48 +5,44 @@ main: addpoint_from_main: lda #1 sta 2 - ldx #5 - ldy #0 + ldy #5 + lda #0 + sta 8 lda #5 jsr addpoint main__B3: addpoint_from_B3: lda #2 sta 2 - ldx #8 - ldy #1 + ldy #8 lda #15 jsr addpoint main__B4: addpoint_from_B4: lda #3 sta 2 - ldx #14 - ldy #2 + ldy #14 lda #6 jsr addpoint main__B5: addpoint_from_B5: lda #4 sta 2 - ldx #2 - ldy #3 + ldy #2 lda #34 jsr addpoint main__B6: addpoint_from_B6: lda #5 sta 2 - ldx #17 - ldy #4 + ldy #17 lda #21 jsr addpoint main__B7: addpoint_from_B7: lda #7 sta 2 - ldx #22 - ldy #5 + ldy #22 lda #31 jsr addpoint main__B8: @@ -148,9 +144,9 @@ render__B2_from_B1: render__B2_from_B5: render__B2: lda 5 - sta 8 - lda 2 sta 9 + lda 2 + sta 10 jsr findcol render__B5: tya @@ -185,28 +181,28 @@ findcol__B1: lda 4096,x sta 7 lda 4352,x - sta 10 - lda 8 + sta 11 + lda 9 cmp 7 beq findcol__B2 findcol__B3: - lda 8 + lda 9 cmp 7 bcc findcol__B6 findcol__B7: - lda 8 + lda 9 sec sbc 7 sta 7 findcol__B8_from_B7: findcol__B8: - lda 9 - cmp 10 + lda 10 + cmp 11 bcc findcol__B9 findcol__B10: - lda 9 + lda 10 sec - sbc 10 + sbc 11 clc adc 7 findcol__B11_from_B10: @@ -216,7 +212,7 @@ findcol__B11: findcol__B13_from_B11: findcol__B13: inx - cpx #6 + cpx 8 bcc findcol__B1_from_B13 findcol__Breturn_from_B13: jmp findcol__Breturn @@ -230,9 +226,9 @@ findcol__B12: findcol__B13_from_B12: jmp findcol__B13 findcol__B9: - lda 10 + lda 11 sec - sbc 9 + sbc 10 clc adc 7 findcol__B11_from_B9: @@ -240,13 +236,13 @@ findcol__B11_from_B9: findcol__B6: lda 7 sec - sbc 8 + sbc 9 sta 7 findcol__B8_from_B6: jmp findcol__B8 findcol__B2: - lda 9 - cmp 10 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 initscreen: @@ -275,10 +271,14 @@ initscreen__B1: initscreen__Breturn: rts addpoint: - sta 4096,y - txa + ldx 8 + sta 4096,x + tya + ldy 8 sta 4352,y lda 2 - sta 4608,y + ldx 8 + sta 4608,x + inc 8 addpoint__Breturn: rts diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg index 6f306f2bc..af2ef16d0 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg @@ -101,25 +101,25 @@ animate::@1: from animate render: from main::@1 to:render::@1 render::@1: from render render::@3 - [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 render::colline#2 ] - [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 render::colline#2 ] + [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 render::colline#2 numpoints#1 ] + [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 render::colline#2 numpoints#1 ] to:render::@2 render::@2: from render::@1 render::@5 - [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 render::colline#2 ] - [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] - [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] - [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] + [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 numpoints#1 ] + [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 numpoints#1 ] + [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] to:render::@5 render::@5: from render::@2 - [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] - [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] - [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 ] - [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 ] + [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 numpoints#1 ] + [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] + [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] + [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] to:render::@3 render::@3: from render::@5 - [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] - [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] - [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] + [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] + [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 numpoints#1 ] + [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 numpoints#1 ] to:render::@return render::@return: from render::@3 [63] return [ ] @@ -127,54 +127,54 @@ render::@return: from render::@3 findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 - [64] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [64] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [64] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 - [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@7 findcol::@7: from findcol::@3 - [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@8 findcol::@8: from findcol::@6 findcol::@7 - [70] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] - [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [70] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@10 findcol::@10: from findcol::@8 - [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] - [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@11 findcol::@11: from findcol::@10 findcol::@9 - [74] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] - [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [74] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@13 findcol::@13: from findcol::@11 findcol::@12 - [76] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [76] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] - [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] + [76] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 numpoints#1 ] + [76] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 numpoints#1 ] + [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] + [78] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] to:findcol::@return findcol::@return: from findcol::@13 findcol::@2 - [79] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] - [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [79] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] + [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] to:@RETURN findcol::@12: from findcol::@11 - [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] - [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] + [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 numpoints#1 ] + [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 numpoints#1 ] to:findcol::@13 findcol::@9: from findcol::@8 - [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] - [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] + [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] + [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@11 findcol::@6: from findcol::@3 - [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@8 findcol::@2: from findcol::@1 - [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@3 initscreen: from main::@8 to:initscreen::@1 @@ -188,14 +188,15 @@ initscreen::@return: from initscreen::@1 [91] return [ ] to:@RETURN addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - [92] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [92] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [92] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [92] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] - [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] - [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] + [92] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#1 main::@4/(byte) numpoints#1 main::@5/(byte) numpoints#1 main::@6/(byte) numpoints#1 main::@7/(byte) numpoints#1 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [93] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] + [94] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] + [95] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] + [96] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ ] to:addpoint::@return addpoint::@return: from addpoint - [96] return [ ] + [97] return [ ] to:@RETURN diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log index 91a6e4387..72f52fa80 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -5,7 +5,7 @@ byte *COLORS = $D800; byte FILL = 230; // The total number of voronoi points -byte numpoints = 6; +byte numpoints = 0; // Points to create the Voronoi from byte[$100] XPOS = $1000; @@ -15,12 +15,12 @@ byte[$100] COLS = $1200; main(); void main() { - addpoint(0, 5, 5, 1); - addpoint(1, 15, 8, 2); - addpoint(2, 6, 14, 3); - addpoint(3, 34, 2, 4); - addpoint(4, 21, 17, 5); - addpoint(5, 31, 22, 7); + addpoint(5, 5, 1); + addpoint(15, 8, 2); + addpoint(6, 14, 3); + addpoint(34, 2, 4); + addpoint(21, 17, 5); + addpoint(31, 22, 7); initscreen(); do { render(); @@ -55,10 +55,11 @@ void animate() { } } -void addpoint(byte idx, byte x, byte y, byte c) { - XPOS[idx] = x; - YPOS[idx] = y; - COLS[idx] = c; +void addpoint(byte x, byte y, byte c) { + XPOS[numpoints] = x; + YPOS[numpoints] = y; + COLS[numpoints] = c; + numpoints++; } void initscreen() { @@ -114,6 +115,7 @@ byte findcol(byte x, byte y) { +Adding pre/post-modifier (byte) numpoints ← ++ (byte) numpoints Adding pre/post-modifier (byte*) initscreen::screen ← ++ (byte*) initscreen::screen Adding pre/post-modifier (byte) render::x ← ++ (byte) render::x Adding pre/post-modifier (byte) render::y ← ++ (byte) render::y @@ -122,18 +124,18 @@ PROGRAM (byte*) SCREEN ← (word) 1024 (byte*) COLORS ← (word) 55296 (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 + (byte) numpoints ← (byte) 0 (byte[256]) XPOS ← (word) 4096 (byte[256]) YPOS ← (word) 4352 (byte[256]) COLS ← (word) 4608 (void~) $0 ← call main proc (void()) main() - (void~) main::$0 ← call addpoint (byte) 0 (byte) 5 (byte) 5 (byte) 1 - (void~) main::$1 ← call addpoint (byte) 1 (byte) 15 (byte) 8 (byte) 2 - (void~) main::$2 ← call addpoint (byte) 2 (byte) 6 (byte) 14 (byte) 3 - (void~) main::$3 ← call addpoint (byte) 3 (byte) 34 (byte) 2 (byte) 4 - (void~) main::$4 ← call addpoint (byte) 4 (byte) 21 (byte) 17 (byte) 5 - (void~) main::$5 ← call addpoint (byte) 5 (byte) 31 (byte) 22 (byte) 7 + (void~) main::$0 ← call addpoint (byte) 5 (byte) 5 (byte) 1 + (void~) main::$1 ← call addpoint (byte) 15 (byte) 8 (byte) 2 + (void~) main::$2 ← call addpoint (byte) 6 (byte) 14 (byte) 3 + (void~) main::$3 ← call addpoint (byte) 34 (byte) 2 (byte) 4 + (void~) main::$4 ← call addpoint (byte) 21 (byte) 17 (byte) 5 + (void~) main::$5 ← call addpoint (byte) 31 (byte) 22 (byte) 7 (void~) main::$6 ← call initscreen main::@1: (void~) main::$7 ← call render @@ -208,10 +210,11 @@ animate::@10: animate::@return: return endproc // animate() - proc (void()) addpoint((byte) addpoint::idx , (byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) - *((byte[256]) XPOS + (byte) addpoint::idx) ← (byte) addpoint::x - *((byte[256]) YPOS + (byte) addpoint::idx) ← (byte) addpoint::y - *((byte[256]) COLS + (byte) addpoint::idx) ← (byte) addpoint::c + proc (void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) + *((byte[256]) XPOS + (byte) numpoints) ← (byte) addpoint::x + *((byte[256]) YPOS + (byte) numpoints) ← (byte) addpoint::y + *((byte[256]) COLS + (byte) numpoints) ← (byte) addpoint::c + (byte) numpoints ← ++ (byte) numpoints addpoint::@return: return endproc // addpoint() @@ -316,10 +319,9 @@ SYMBOLS (byte*) SCREEN (byte[256]) XPOS (byte[256]) YPOS -(void()) addpoint((byte) addpoint::idx , (byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) +(void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) (label) addpoint::@return (byte) addpoint::c -(byte) addpoint::idx (byte) addpoint::x (byte) addpoint::y (void()) animate() @@ -437,19 +439,19 @@ INITIAL CONTROL FLOW GRAPH (byte*) SCREEN ← (word) 1024 (byte*) COLORS ← (word) 55296 (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 + (byte) numpoints ← (byte) 0 (byte[256]) XPOS ← (word) 4096 (byte[256]) YPOS ← (word) 4352 (byte[256]) COLS ← (word) 4608 (void~) $0 ← call main to:@1 main: from - (void~) main::$0 ← call addpoint (byte) 0 (byte) 5 (byte) 5 (byte) 1 - (void~) main::$1 ← call addpoint (byte) 1 (byte) 15 (byte) 8 (byte) 2 - (void~) main::$2 ← call addpoint (byte) 2 (byte) 6 (byte) 14 (byte) 3 - (void~) main::$3 ← call addpoint (byte) 3 (byte) 34 (byte) 2 (byte) 4 - (void~) main::$4 ← call addpoint (byte) 4 (byte) 21 (byte) 17 (byte) 5 - (void~) main::$5 ← call addpoint (byte) 5 (byte) 31 (byte) 22 (byte) 7 + (void~) main::$0 ← call addpoint (byte) 5 (byte) 5 (byte) 1 + (void~) main::$1 ← call addpoint (byte) 15 (byte) 8 (byte) 2 + (void~) main::$2 ← call addpoint (byte) 6 (byte) 14 (byte) 3 + (void~) main::$3 ← call addpoint (byte) 34 (byte) 2 (byte) 4 + (void~) main::$4 ← call addpoint (byte) 21 (byte) 17 (byte) 5 + (void~) main::$5 ← call addpoint (byte) 31 (byte) 22 (byte) 7 (void~) main::$6 ← call initscreen to:main::@1 main::@1: from main main::@1 @@ -564,9 +566,10 @@ animate::@return: from animate::@10 @2: from @1 to:@3 addpoint: from - *((byte[256]) XPOS + (byte) addpoint::idx) ← (byte) addpoint::x - *((byte[256]) YPOS + (byte) addpoint::idx) ← (byte) addpoint::y - *((byte[256]) COLS + (byte) addpoint::idx) ← (byte) addpoint::c + *((byte[256]) XPOS + (byte) numpoints) ← (byte) addpoint::x + *((byte[256]) YPOS + (byte) numpoints) ← (byte) addpoint::y + *((byte[256]) COLS + (byte) numpoints) ← (byte) addpoint::c + (byte) numpoints ← ++ (byte) numpoints to:addpoint::@return addpoint::@return: from addpoint return @@ -762,19 +765,19 @@ CONTROL FLOW GRAPH (byte*) SCREEN ← (word) 1024 (byte*) COLORS ← (word) 55296 (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 + (byte) numpoints ← (byte) 0 (byte[256]) XPOS ← (word) 4096 (byte[256]) YPOS ← (word) 4352 (byte[256]) COLS ← (word) 4608 (void~) $0 ← call main to:@END main: from - (void~) main::$0 ← call addpoint (byte) 0 (byte) 5 (byte) 5 (byte) 1 - (void~) main::$1 ← call addpoint (byte) 1 (byte) 15 (byte) 8 (byte) 2 - (void~) main::$2 ← call addpoint (byte) 2 (byte) 6 (byte) 14 (byte) 3 - (void~) main::$3 ← call addpoint (byte) 3 (byte) 34 (byte) 2 (byte) 4 - (void~) main::$4 ← call addpoint (byte) 4 (byte) 21 (byte) 17 (byte) 5 - (void~) main::$5 ← call addpoint (byte) 5 (byte) 31 (byte) 22 (byte) 7 + (void~) main::$0 ← call addpoint (byte) 5 (byte) 5 (byte) 1 + (void~) main::$1 ← call addpoint (byte) 15 (byte) 8 (byte) 2 + (void~) main::$2 ← call addpoint (byte) 6 (byte) 14 (byte) 3 + (void~) main::$3 ← call addpoint (byte) 34 (byte) 2 (byte) 4 + (void~) main::$4 ← call addpoint (byte) 21 (byte) 17 (byte) 5 + (void~) main::$5 ← call addpoint (byte) 31 (byte) 22 (byte) 7 (void~) main::$6 ← call initscreen to:main::@1 main::@1: from main main::@1 @@ -855,9 +858,10 @@ animate::@return: from animate::@11 animate::@8 animate::@9 return to:@RETURN addpoint: from - *((byte[256]) XPOS + (byte) addpoint::idx) ← (byte) addpoint::x - *((byte[256]) YPOS + (byte) addpoint::idx) ← (byte) addpoint::y - *((byte[256]) COLS + (byte) addpoint::idx) ← (byte) addpoint::c + *((byte[256]) XPOS + (byte) numpoints) ← (byte) addpoint::x + *((byte[256]) YPOS + (byte) numpoints) ← (byte) addpoint::y + *((byte[256]) COLS + (byte) numpoints) ← (byte) addpoint::c + (byte) numpoints ← ++ (byte) numpoints to:addpoint::@return addpoint::@return: from addpoint return @@ -969,63 +973,66 @@ findcol::@27: from findcol::@13 @END: from @BEGIN PROCEDURE MODIFY VARIABLE ANALYSIS +main modifies numpoints +addpoint modifies numpoints CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @BEGIN: from (byte*) SCREEN ← (word) 1024 (byte*) COLORS ← (word) 55296 (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 + (byte) numpoints ← (byte) 0 (byte[256]) XPOS ← (word) 4096 (byte[256]) YPOS ← (word) 4352 (byte[256]) COLS ← (word) 4608 call main param-assignment to:@7 @7: from @BEGIN + (byte) numpoints ← (byte) numpoints to:@END main: from @BEGIN - (byte) addpoint::idx ← (byte) 0 (byte) addpoint::x ← (byte) 5 (byte) addpoint::y ← (byte) 5 (byte) addpoint::c ← (byte) 1 call addpoint param-assignment to:main::@3 main::@3: from main - (byte) addpoint::idx ← (byte) 1 + (byte) numpoints ← (byte) numpoints (byte) addpoint::x ← (byte) 15 (byte) addpoint::y ← (byte) 8 (byte) addpoint::c ← (byte) 2 call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) addpoint::idx ← (byte) 2 + (byte) numpoints ← (byte) numpoints (byte) addpoint::x ← (byte) 6 (byte) addpoint::y ← (byte) 14 (byte) addpoint::c ← (byte) 3 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) addpoint::idx ← (byte) 3 + (byte) numpoints ← (byte) numpoints (byte) addpoint::x ← (byte) 34 (byte) addpoint::y ← (byte) 2 (byte) addpoint::c ← (byte) 4 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) addpoint::idx ← (byte) 4 + (byte) numpoints ← (byte) numpoints (byte) addpoint::x ← (byte) 21 (byte) addpoint::y ← (byte) 17 (byte) addpoint::c ← (byte) 5 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) addpoint::idx ← (byte) 5 + (byte) numpoints ← (byte) numpoints (byte) addpoint::x ← (byte) 31 (byte) addpoint::y ← (byte) 22 (byte) addpoint::c ← (byte) 7 call addpoint param-assignment to:main::@8 main::@8: from main::@7 + (byte) numpoints ← (byte) numpoints call initscreen param-assignment to:main::@9 main::@9: from main::@8 @@ -1040,6 +1047,7 @@ main::@11: from main::@10 if(true) goto main::@1 to:main::@return main::@return: from main::@11 + (byte) numpoints ← (byte) numpoints return to:@RETURN animate: from main::@10 @@ -1112,11 +1120,13 @@ animate::@return: from animate::@11 animate::@8 animate::@9 return to:@RETURN addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - *((byte[256]) XPOS + (byte) addpoint::idx) ← (byte) addpoint::x - *((byte[256]) YPOS + (byte) addpoint::idx) ← (byte) addpoint::y - *((byte[256]) COLS + (byte) addpoint::idx) ← (byte) addpoint::c + *((byte[256]) XPOS + (byte) numpoints) ← (byte) addpoint::x + *((byte[256]) YPOS + (byte) numpoints) ← (byte) addpoint::y + *((byte[256]) COLS + (byte) numpoints) ← (byte) addpoint::c + (byte) numpoints ← ++ (byte) numpoints to:addpoint::@return addpoint::@return: from addpoint + (byte) numpoints ← (byte) numpoints return to:@RETURN initscreen: from main::@8 @@ -1244,151 +1254,149 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... -Completing Phi functions... -Completing Phi functions... -Completing Phi functions... -Completing Phi functions... -Completing Phi functions... -Completing Phi functions... CONTROL FLOW GRAPH SSA @BEGIN: from (byte*) SCREEN#0 ← (word) 1024 (byte*) COLORS#0 ← (word) 55296 (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 + (byte) numpoints#0 ← (byte) 0 (byte[256]) XPOS#0 ← (word) 4096 (byte[256]) YPOS#0 ← (word) 4352 (byte[256]) COLS#0 ← (word) 4608 call main param-assignment to:@7 @7: from @BEGIN + (byte) numpoints#11 ← phi( @BEGIN/(byte) numpoints#0 ) + (byte) numpoints#1 ← (byte) numpoints#11 to:@END main: from @BEGIN - (byte) numpoints#28 ← phi( @BEGIN/(byte) numpoints#0 ) (byte*) COLORS#12 ← phi( @BEGIN/(byte*) COLORS#0 ) (byte) FILL#9 ← phi( @BEGIN/(byte) FILL#0 ) (byte*) SCREEN#8 ← phi( @BEGIN/(byte*) SCREEN#0 ) (byte[256]) COLS#3 ← phi( @BEGIN/(byte[256]) COLS#0 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(byte[256]) YPOS#0 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(byte[256]) XPOS#0 ) - (byte) addpoint::idx#0 ← (byte) 0 + (byte) numpoints#22 ← phi( @BEGIN/(byte) numpoints#0 ) (byte) addpoint::x#0 ← (byte) 5 (byte) addpoint::y#0 ← (byte) 5 (byte) addpoint::c#0 ← (byte) 1 call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) (byte) FILL#8 ← phi( main/(byte) FILL#9 ) (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) - (byte) addpoint::idx#1 ← (byte) 1 + (byte) numpoints#12 ← phi( main/(byte) numpoints#22 ) + (byte) numpoints#2 ← (byte) numpoints#12 (byte) addpoint::x#1 ← (byte) 15 (byte) addpoint::y#1 ← (byte) 8 (byte) addpoint::c#1 ← (byte) 2 call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) - (byte) addpoint::idx#2 ← (byte) 2 + (byte) numpoints#13 ← phi( main::@3/(byte) numpoints#2 ) + (byte) numpoints#3 ← (byte) numpoints#13 (byte) addpoint::x#2 ← (byte) 6 (byte) addpoint::y#2 ← (byte) 14 (byte) addpoint::c#2 ← (byte) 3 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) - (byte) addpoint::idx#3 ← (byte) 3 + (byte) numpoints#14 ← phi( main::@4/(byte) numpoints#3 ) + (byte) numpoints#4 ← (byte) numpoints#14 (byte) addpoint::x#3 ← (byte) 34 (byte) addpoint::y#3 ← (byte) 2 (byte) addpoint::c#3 ← (byte) 4 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) - (byte) addpoint::idx#4 ← (byte) 4 + (byte) numpoints#15 ← phi( main::@5/(byte) numpoints#4 ) + (byte) numpoints#5 ← (byte) numpoints#15 (byte) addpoint::x#4 ← (byte) 21 (byte) addpoint::y#4 ← (byte) 17 (byte) addpoint::c#4 ← (byte) 5 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) - (byte) addpoint::idx#5 ← (byte) 5 + (byte) numpoints#16 ← phi( main::@6/(byte) numpoints#5 ) + (byte) numpoints#6 ← (byte) numpoints#16 (byte) addpoint::x#5 ← (byte) 31 (byte) addpoint::y#5 ← (byte) 22 (byte) addpoint::c#5 ← (byte) 7 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + (byte) numpoints#17 ← phi( main::@7/(byte) numpoints#6 ) + (byte) numpoints#7 ← (byte) numpoints#17 call initscreen param-assignment to:main::@9 main::@9: from main::@8 - (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte) numpoints#31 ← phi( main::@8/(byte) numpoints#7 ) (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte) numpoints#29 ← phi( main::@11/(byte) numpoints#23 main::@9/(byte) numpoints#31 ) (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) call render param-assignment to:main::@10 main::@10: from main::@1 - (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) + (byte) numpoints#26 ← phi( main::@1/(byte) numpoints#29 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment to:main::@11 main::@11: from main::@10 - (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) + (byte) numpoints#23 ← phi( main::@10/(byte) numpoints#26 ) if(true) goto main::@1 to:main::@return main::@return: from main::@11 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#23 ) + (byte) numpoints#8 ← (byte) numpoints#18 return to:@RETURN animate: from main::@10 @@ -1486,14 +1494,17 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) addpoint::c#0 main::@3/(byte) addpoint::c#1 main::@4/(byte) addpoint::c#2 main::@5/(byte) addpoint::c#3 main::@6/(byte) addpoint::c#4 main::@7/(byte) addpoint::c#5 ) (byte[256]) YPOS#7 ← phi( main/(byte[256]) YPOS#13 main::@3/(byte[256]) YPOS#14 main::@4/(byte[256]) YPOS#15 main::@5/(byte[256]) YPOS#16 main::@6/(byte[256]) YPOS#17 main::@7/(byte[256]) YPOS#18 ) (byte) addpoint::y#6 ← phi( main/(byte) addpoint::y#0 main::@3/(byte) addpoint::y#1 main::@4/(byte) addpoint::y#2 main::@5/(byte) addpoint::y#3 main::@6/(byte) addpoint::y#4 main::@7/(byte) addpoint::y#5 ) - (byte) addpoint::idx#6 ← phi( main/(byte) addpoint::idx#0 main::@3/(byte) addpoint::idx#1 main::@4/(byte) addpoint::idx#2 main::@5/(byte) addpoint::idx#3 main::@6/(byte) addpoint::idx#4 main::@7/(byte) addpoint::idx#5 ) + (byte) numpoints#19 ← phi( main/(byte) numpoints#22 main::@3/(byte) numpoints#2 main::@4/(byte) numpoints#3 main::@5/(byte) numpoints#4 main::@6/(byte) numpoints#5 main::@7/(byte) numpoints#6 ) (byte[256]) XPOS#7 ← phi( main/(byte[256]) XPOS#13 main::@3/(byte[256]) XPOS#14 main::@4/(byte[256]) XPOS#15 main::@5/(byte[256]) XPOS#16 main::@6/(byte[256]) XPOS#17 main::@7/(byte[256]) XPOS#18 ) (byte) addpoint::x#6 ← phi( main/(byte) addpoint::x#0 main::@3/(byte) addpoint::x#1 main::@4/(byte) addpoint::x#2 main::@5/(byte) addpoint::x#3 main::@6/(byte) addpoint::x#4 main::@7/(byte) addpoint::x#5 ) - *((byte[256]) XPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((byte[256]) YPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((byte[256]) COLS#1 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((byte[256]) XPOS#7 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((byte[256]) YPOS#7 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((byte[256]) COLS#1 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#9 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint + (byte) numpoints#20 ← phi( addpoint/(byte) numpoints#9 ) + (byte) numpoints#10 ← (byte) numpoints#20 return to:@RETURN initscreen: from main::@8 @@ -1513,7 +1524,7 @@ initscreen::@return: from initscreen::@1 return to:@RETURN render: from main::@1 - (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) + (byte) numpoints#41 ← phi( main::@1/(byte) numpoints#29 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) @@ -1522,7 +1533,7 @@ render: from main::@1 (byte) render::y#0 ← (byte) 0 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#41 render::@3/(byte) numpoints#42 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) @@ -1531,7 +1542,7 @@ render::@1: from render render::@3 (byte) render::x#0 ← (byte) 0 to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#13 ← phi( render::@1/(byte) numpoints#14 render::@5/(byte) numpoints#15 ) + (byte) numpoints#38 ← phi( render::@1/(byte) numpoints#39 render::@5/(byte) numpoints#40 ) (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) @@ -1543,7 +1554,7 @@ render::@2: from render::@1 render::@5 (byte) findcol::return#0 ← call findcol param-assignment to:render::@5 render::@5: from render::@2 - (byte) numpoints#15 ← phi( render::@2/(byte) numpoints#13 ) + (byte) numpoints#40 ← phi( render::@2/(byte) numpoints#38 ) (byte[256]) COLS#22 ← phi( render::@2/(byte[256]) COLS#20 ) (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) @@ -1559,7 +1570,7 @@ render::@5: from render::@2 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) + (byte) numpoints#42 ← phi( render::@5/(byte) numpoints#40 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) @@ -1575,7 +1586,7 @@ render::@return: from render::@3 return to:@RETURN findcol: from render::@2 - (byte) numpoints#12 ← phi( render::@2/(byte) numpoints#13 ) + (byte) numpoints#37 ← phi( render::@2/(byte) numpoints#38 ) (byte[256]) COLS#18 ← phi( render::@2/(byte[256]) COLS#20 ) (byte) findcol::y#8 ← phi( render::@2/(byte) findcol::y#0 ) (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) @@ -1587,7 +1598,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@13/(byte) findcol::mincol#3 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 findcol::@13/(byte) numpoints#1 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 findcol::@13/(byte) numpoints#21 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 findcol::@13/(byte[256]) COLS#19 ) (byte) findcol::mindiff#9 ← phi( findcol/(byte) findcol::mindiff#0 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#5 ← phi( findcol/(byte) findcol::y#8 findcol::@13/(byte) findcol::y#9 ) @@ -1606,7 +1617,7 @@ findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) - (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) + (byte) numpoints#36 ← phi( findcol::@1/(byte) numpoints#35 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) (byte) findcol::mindiff#10 ← phi( findcol::@1/(byte) findcol::mindiff#9 ) @@ -1621,7 +1632,7 @@ findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) - (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) + (byte) numpoints#34 ← phi( findcol::@1/(byte) numpoints#35 findcol::@2/(byte) numpoints#36 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) (byte) findcol::mindiff#8 ← phi( findcol::@1/(byte) findcol::mindiff#9 findcol::@2/(byte) findcol::mindiff#10 ) @@ -1644,7 +1655,7 @@ findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) + (byte) numpoints#32 ← phi( findcol::@3/(byte) numpoints#34 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) (byte) findcol::mindiff#6 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) @@ -1659,7 +1670,7 @@ findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) + (byte) numpoints#33 ← phi( findcol::@3/(byte) numpoints#34 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) (byte) findcol::mindiff#7 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) @@ -1675,7 +1686,7 @@ findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) - (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) + (byte) numpoints#30 ← phi( findcol::@6/(byte) numpoints#32 findcol::@7/(byte) numpoints#33 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) (byte) findcol::mindiff#5 ← phi( findcol::@6/(byte) findcol::mindiff#6 findcol::@7/(byte) findcol::mindiff#7 ) @@ -1690,7 +1701,7 @@ findcol::@9: from findcol::@8 (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) + (byte) numpoints#28 ← phi( findcol::@8/(byte) numpoints#30 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) (byte) findcol::mindiff#4 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) @@ -1706,7 +1717,7 @@ findcol::@10: from findcol::@8 (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) + (byte) numpoints#27 ← phi( findcol::@8/(byte) numpoints#30 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) (byte) findcol::mindiff#3 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) @@ -1723,7 +1734,7 @@ findcol::@11: from findcol::@10 findcol::@9 (byte) findcol::x#8 ← phi( findcol::@10/(byte) findcol::x#10 findcol::@9/(byte) findcol::x#11 ) (byte[256]) YPOS#23 ← phi( findcol::@10/(byte[256]) YPOS#28 findcol::@9/(byte[256]) YPOS#29 ) (byte[256]) XPOS#25 ← phi( findcol::@10/(byte[256]) XPOS#31 findcol::@9/(byte[256]) XPOS#32 ) - (byte) numpoints#2 ← phi( findcol::@10/(byte) numpoints#4 findcol::@9/(byte) numpoints#5 ) + (byte) numpoints#24 ← phi( findcol::@10/(byte) numpoints#27 findcol::@9/(byte) numpoints#28 ) (byte) findcol::i#5 ← phi( findcol::@10/(byte) findcol::i#6 findcol::@9/(byte) findcol::i#7 ) (byte[256]) COLS#9 ← phi( findcol::@10/(byte[256]) COLS#10 findcol::@9/(byte[256]) COLS#11 ) (byte) findcol::mindiff#2 ← phi( findcol::@10/(byte) findcol::mindiff#3 findcol::@9/(byte) findcol::mindiff#4 ) @@ -1736,7 +1747,7 @@ findcol::@12: from findcol::@11 (byte) findcol::x#9 ← phi( findcol::@11/(byte) findcol::x#8 ) (byte[256]) YPOS#24 ← phi( findcol::@11/(byte[256]) YPOS#23 ) (byte[256]) XPOS#26 ← phi( findcol::@11/(byte[256]) XPOS#25 ) - (byte) numpoints#3 ← phi( findcol::@11/(byte) numpoints#2 ) + (byte) numpoints#25 ← phi( findcol::@11/(byte) numpoints#24 ) (byte) findcol::i#3 ← phi( findcol::@11/(byte) findcol::i#5 ) (byte[256]) COLS#2 ← phi( findcol::@11/(byte[256]) COLS#9 ) (byte) findcol::diff#7 ← phi( findcol::@11/(byte) findcol::diff#6 ) @@ -1752,10 +1763,10 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::x#6 ← phi( findcol::@11/(byte) findcol::x#8 findcol::@12/(byte) findcol::x#9 ) (byte[256]) YPOS#20 ← phi( findcol::@11/(byte[256]) YPOS#23 findcol::@12/(byte[256]) YPOS#24 ) (byte[256]) XPOS#20 ← phi( findcol::@11/(byte[256]) XPOS#25 findcol::@12/(byte[256]) XPOS#26 ) - (byte) numpoints#1 ← phi( findcol::@11/(byte) numpoints#2 findcol::@12/(byte) numpoints#3 ) + (byte) numpoints#21 ← phi( findcol::@11/(byte) numpoints#24 findcol::@12/(byte) numpoints#25 ) (byte) findcol::i#4 ← phi( findcol::@11/(byte) findcol::i#5 findcol::@12/(byte) findcol::i#3 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#4 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#1 + (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#21 if((boolean~) findcol::$14) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 @@ -1769,140 +1780,144 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN (byte*) SCREEN#0 ← (word) 1024 (byte*) COLORS#0 ← (word) 55296 (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 + (byte) numpoints#0 ← (byte) 0 (byte[256]) XPOS#0 ← (word) 4096 (byte[256]) YPOS#0 ← (word) 4352 (byte[256]) COLS#0 ← (word) 4608 call main param-assignment to:@7 @7: from @BEGIN + (byte) numpoints#11 ← phi( @BEGIN/(byte) numpoints#8 ) + (byte) numpoints#1 ← (byte) numpoints#11 to:@END main: from @BEGIN - (byte) numpoints#28 ← phi( @BEGIN/(byte) numpoints#0 ) (byte*) COLORS#12 ← phi( @BEGIN/(byte*) COLORS#0 ) (byte) FILL#9 ← phi( @BEGIN/(byte) FILL#0 ) (byte*) SCREEN#8 ← phi( @BEGIN/(byte*) SCREEN#0 ) (byte[256]) COLS#3 ← phi( @BEGIN/(byte[256]) COLS#0 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(byte[256]) YPOS#0 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(byte[256]) XPOS#0 ) - (byte) addpoint::idx#0 ← (byte) 0 + (byte) numpoints#22 ← phi( @BEGIN/(byte) numpoints#0 ) (byte) addpoint::x#0 ← (byte) 5 (byte) addpoint::y#0 ← (byte) 5 (byte) addpoint::c#0 ← (byte) 1 call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) (byte) FILL#8 ← phi( main/(byte) FILL#9 ) (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) - (byte) addpoint::idx#1 ← (byte) 1 + (byte) numpoints#12 ← phi( main/(byte) numpoints#10 ) + (byte) numpoints#2 ← (byte) numpoints#12 (byte) addpoint::x#1 ← (byte) 15 (byte) addpoint::y#1 ← (byte) 8 (byte) addpoint::c#1 ← (byte) 2 call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) - (byte) addpoint::idx#2 ← (byte) 2 + (byte) numpoints#13 ← phi( main::@3/(byte) numpoints#10 ) + (byte) numpoints#3 ← (byte) numpoints#13 (byte) addpoint::x#2 ← (byte) 6 (byte) addpoint::y#2 ← (byte) 14 (byte) addpoint::c#2 ← (byte) 3 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) - (byte) addpoint::idx#3 ← (byte) 3 + (byte) numpoints#14 ← phi( main::@4/(byte) numpoints#10 ) + (byte) numpoints#4 ← (byte) numpoints#14 (byte) addpoint::x#3 ← (byte) 34 (byte) addpoint::y#3 ← (byte) 2 (byte) addpoint::c#3 ← (byte) 4 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) - (byte) addpoint::idx#4 ← (byte) 4 + (byte) numpoints#15 ← phi( main::@5/(byte) numpoints#10 ) + (byte) numpoints#5 ← (byte) numpoints#15 (byte) addpoint::x#4 ← (byte) 21 (byte) addpoint::y#4 ← (byte) 17 (byte) addpoint::c#4 ← (byte) 5 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) - (byte) addpoint::idx#5 ← (byte) 5 + (byte) numpoints#16 ← phi( main::@6/(byte) numpoints#10 ) + (byte) numpoints#6 ← (byte) numpoints#16 (byte) addpoint::x#5 ← (byte) 31 (byte) addpoint::y#5 ← (byte) 22 (byte) addpoint::c#5 ← (byte) 7 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + (byte) numpoints#17 ← phi( main::@7/(byte) numpoints#10 ) + (byte) numpoints#7 ← (byte) numpoints#17 call initscreen param-assignment to:main::@9 main::@9: from main::@8 - (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte) numpoints#31 ← phi( main::@8/(byte) numpoints#7 ) (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte) numpoints#29 ← phi( main::@11/(byte) numpoints#23 main::@9/(byte) numpoints#31 ) (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) call render param-assignment to:main::@10 main::@10: from main::@1 - (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) + (byte) numpoints#26 ← phi( main::@1/(byte) numpoints#29 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment to:main::@11 main::@11: from main::@10 - (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) + (byte) numpoints#23 ← phi( main::@10/(byte) numpoints#26 ) if(true) goto main::@1 to:main::@return main::@return: from main::@11 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#23 ) + (byte) numpoints#8 ← (byte) numpoints#18 return to:@RETURN animate: from main::@10 @@ -2000,14 +2015,17 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) addpoint::c#0 main::@3/(byte) addpoint::c#1 main::@4/(byte) addpoint::c#2 main::@5/(byte) addpoint::c#3 main::@6/(byte) addpoint::c#4 main::@7/(byte) addpoint::c#5 ) (byte[256]) YPOS#7 ← phi( main/(byte[256]) YPOS#13 main::@3/(byte[256]) YPOS#14 main::@4/(byte[256]) YPOS#15 main::@5/(byte[256]) YPOS#16 main::@6/(byte[256]) YPOS#17 main::@7/(byte[256]) YPOS#18 ) (byte) addpoint::y#6 ← phi( main/(byte) addpoint::y#0 main::@3/(byte) addpoint::y#1 main::@4/(byte) addpoint::y#2 main::@5/(byte) addpoint::y#3 main::@6/(byte) addpoint::y#4 main::@7/(byte) addpoint::y#5 ) - (byte) addpoint::idx#6 ← phi( main/(byte) addpoint::idx#0 main::@3/(byte) addpoint::idx#1 main::@4/(byte) addpoint::idx#2 main::@5/(byte) addpoint::idx#3 main::@6/(byte) addpoint::idx#4 main::@7/(byte) addpoint::idx#5 ) + (byte) numpoints#19 ← phi( main/(byte) numpoints#22 main::@3/(byte) numpoints#2 main::@4/(byte) numpoints#3 main::@5/(byte) numpoints#4 main::@6/(byte) numpoints#5 main::@7/(byte) numpoints#6 ) (byte[256]) XPOS#7 ← phi( main/(byte[256]) XPOS#13 main::@3/(byte[256]) XPOS#14 main::@4/(byte[256]) XPOS#15 main::@5/(byte[256]) XPOS#16 main::@6/(byte[256]) XPOS#17 main::@7/(byte[256]) XPOS#18 ) (byte) addpoint::x#6 ← phi( main/(byte) addpoint::x#0 main::@3/(byte) addpoint::x#1 main::@4/(byte) addpoint::x#2 main::@5/(byte) addpoint::x#3 main::@6/(byte) addpoint::x#4 main::@7/(byte) addpoint::x#5 ) - *((byte[256]) XPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((byte[256]) YPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((byte[256]) COLS#1 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((byte[256]) XPOS#7 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((byte[256]) YPOS#7 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((byte[256]) COLS#1 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#9 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint + (byte) numpoints#20 ← phi( addpoint/(byte) numpoints#9 ) + (byte) numpoints#10 ← (byte) numpoints#20 return to:@RETURN initscreen: from main::@8 @@ -2027,7 +2045,7 @@ initscreen::@return: from initscreen::@1 return to:@RETURN render: from main::@1 - (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) + (byte) numpoints#41 ← phi( main::@1/(byte) numpoints#29 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) @@ -2036,7 +2054,7 @@ render: from main::@1 (byte) render::y#0 ← (byte) 0 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#41 render::@3/(byte) numpoints#42 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) @@ -2045,7 +2063,7 @@ render::@1: from render render::@3 (byte) render::x#0 ← (byte) 0 to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#13 ← phi( render::@1/(byte) numpoints#14 render::@5/(byte) numpoints#15 ) + (byte) numpoints#38 ← phi( render::@1/(byte) numpoints#39 render::@5/(byte) numpoints#40 ) (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) @@ -2058,7 +2076,7 @@ render::@2: from render::@1 render::@5 (byte) findcol::return#0 ← (byte) findcol::return#2 to:render::@5 render::@5: from render::@2 - (byte) numpoints#15 ← phi( render::@2/(byte) numpoints#13 ) + (byte) numpoints#40 ← phi( render::@2/(byte) numpoints#38 ) (byte[256]) COLS#22 ← phi( render::@2/(byte[256]) COLS#20 ) (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) @@ -2074,7 +2092,7 @@ render::@5: from render::@2 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) + (byte) numpoints#42 ← phi( render::@5/(byte) numpoints#40 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) @@ -2090,7 +2108,7 @@ render::@return: from render::@3 return to:@RETURN findcol: from render::@2 - (byte) numpoints#12 ← phi( render::@2/(byte) numpoints#13 ) + (byte) numpoints#37 ← phi( render::@2/(byte) numpoints#38 ) (byte[256]) COLS#18 ← phi( render::@2/(byte[256]) COLS#20 ) (byte) findcol::y#8 ← phi( render::@2/(byte) findcol::y#0 ) (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) @@ -2102,7 +2120,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@13/(byte) findcol::mincol#3 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 findcol::@13/(byte) numpoints#1 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 findcol::@13/(byte) numpoints#21 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 findcol::@13/(byte[256]) COLS#19 ) (byte) findcol::mindiff#9 ← phi( findcol/(byte) findcol::mindiff#0 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#5 ← phi( findcol/(byte) findcol::y#8 findcol::@13/(byte) findcol::y#9 ) @@ -2121,7 +2139,7 @@ findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) - (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) + (byte) numpoints#36 ← phi( findcol::@1/(byte) numpoints#35 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) (byte) findcol::mindiff#10 ← phi( findcol::@1/(byte) findcol::mindiff#9 ) @@ -2136,7 +2154,7 @@ findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) - (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) + (byte) numpoints#34 ← phi( findcol::@1/(byte) numpoints#35 findcol::@2/(byte) numpoints#36 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) (byte) findcol::mindiff#8 ← phi( findcol::@1/(byte) findcol::mindiff#9 findcol::@2/(byte) findcol::mindiff#10 ) @@ -2159,7 +2177,7 @@ findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) + (byte) numpoints#32 ← phi( findcol::@3/(byte) numpoints#34 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) (byte) findcol::mindiff#6 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) @@ -2174,7 +2192,7 @@ findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) + (byte) numpoints#33 ← phi( findcol::@3/(byte) numpoints#34 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) (byte) findcol::mindiff#7 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) @@ -2190,7 +2208,7 @@ findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) - (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) + (byte) numpoints#30 ← phi( findcol::@6/(byte) numpoints#32 findcol::@7/(byte) numpoints#33 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) (byte) findcol::mindiff#5 ← phi( findcol::@6/(byte) findcol::mindiff#6 findcol::@7/(byte) findcol::mindiff#7 ) @@ -2205,7 +2223,7 @@ findcol::@9: from findcol::@8 (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) + (byte) numpoints#28 ← phi( findcol::@8/(byte) numpoints#30 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) (byte) findcol::mindiff#4 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) @@ -2221,7 +2239,7 @@ findcol::@10: from findcol::@8 (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) + (byte) numpoints#27 ← phi( findcol::@8/(byte) numpoints#30 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) (byte) findcol::mindiff#3 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) @@ -2238,7 +2256,7 @@ findcol::@11: from findcol::@10 findcol::@9 (byte) findcol::x#8 ← phi( findcol::@10/(byte) findcol::x#10 findcol::@9/(byte) findcol::x#11 ) (byte[256]) YPOS#23 ← phi( findcol::@10/(byte[256]) YPOS#28 findcol::@9/(byte[256]) YPOS#29 ) (byte[256]) XPOS#25 ← phi( findcol::@10/(byte[256]) XPOS#31 findcol::@9/(byte[256]) XPOS#32 ) - (byte) numpoints#2 ← phi( findcol::@10/(byte) numpoints#4 findcol::@9/(byte) numpoints#5 ) + (byte) numpoints#24 ← phi( findcol::@10/(byte) numpoints#27 findcol::@9/(byte) numpoints#28 ) (byte) findcol::i#5 ← phi( findcol::@10/(byte) findcol::i#6 findcol::@9/(byte) findcol::i#7 ) (byte[256]) COLS#9 ← phi( findcol::@10/(byte[256]) COLS#10 findcol::@9/(byte[256]) COLS#11 ) (byte) findcol::mindiff#2 ← phi( findcol::@10/(byte) findcol::mindiff#3 findcol::@9/(byte) findcol::mindiff#4 ) @@ -2251,7 +2269,7 @@ findcol::@12: from findcol::@11 (byte) findcol::x#9 ← phi( findcol::@11/(byte) findcol::x#8 ) (byte[256]) YPOS#24 ← phi( findcol::@11/(byte[256]) YPOS#23 ) (byte[256]) XPOS#26 ← phi( findcol::@11/(byte[256]) XPOS#25 ) - (byte) numpoints#3 ← phi( findcol::@11/(byte) numpoints#2 ) + (byte) numpoints#25 ← phi( findcol::@11/(byte) numpoints#24 ) (byte) findcol::i#3 ← phi( findcol::@11/(byte) findcol::i#5 ) (byte[256]) COLS#2 ← phi( findcol::@11/(byte[256]) COLS#9 ) (byte) findcol::diff#7 ← phi( findcol::@11/(byte) findcol::diff#6 ) @@ -2267,10 +2285,10 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::x#6 ← phi( findcol::@11/(byte) findcol::x#8 findcol::@12/(byte) findcol::x#9 ) (byte[256]) YPOS#20 ← phi( findcol::@11/(byte[256]) YPOS#23 findcol::@12/(byte[256]) YPOS#24 ) (byte[256]) XPOS#20 ← phi( findcol::@11/(byte[256]) XPOS#25 findcol::@12/(byte[256]) XPOS#26 ) - (byte) numpoints#1 ← phi( findcol::@11/(byte) numpoints#2 findcol::@12/(byte) numpoints#3 ) + (byte) numpoints#21 ← phi( findcol::@11/(byte) numpoints#24 findcol::@12/(byte) numpoints#25 ) (byte) findcol::i#4 ← phi( findcol::@11/(byte) findcol::i#5 findcol::@12/(byte) findcol::i#3 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#4 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#1 + (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#21 if((boolean~) findcol::$14) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 @@ -2279,549 +2297,28 @@ findcol::@27: from findcol::@13 to:findcol::@return @END: from @7 -Culled Empty Block (label) @7 -Succesful SSA optimization Pass2CullEmptyBlocks -CONTROL FLOW GRAPH -@BEGIN: from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[256]) XPOS#0 ← (word) 4096 - (byte[256]) YPOS#0 ← (word) 4352 - (byte[256]) COLS#0 ← (word) 4608 - call main param-assignment - to:@END -main: from @BEGIN - (byte) numpoints#28 ← phi( @BEGIN/(byte) numpoints#0 ) - (byte*) COLORS#12 ← phi( @BEGIN/(byte*) COLORS#0 ) - (byte) FILL#9 ← phi( @BEGIN/(byte) FILL#0 ) - (byte*) SCREEN#8 ← phi( @BEGIN/(byte*) SCREEN#0 ) - (byte[256]) COLS#3 ← phi( @BEGIN/(byte[256]) COLS#0 ) - (byte[256]) YPOS#13 ← phi( @BEGIN/(byte[256]) YPOS#0 ) - (byte[256]) XPOS#13 ← phi( @BEGIN/(byte[256]) XPOS#0 ) - (byte) addpoint::idx#0 ← (byte) 0 - (byte) addpoint::x#0 ← (byte) 5 - (byte) addpoint::y#0 ← (byte) 5 - (byte) addpoint::c#0 ← (byte) 1 - call addpoint param-assignment - to:main::@3 -main::@3: from main - (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) - (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) - (byte) FILL#8 ← phi( main/(byte) FILL#9 ) - (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) - (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) - (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) - (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) - (byte) addpoint::idx#1 ← (byte) 1 - (byte) addpoint::x#1 ← (byte) 15 - (byte) addpoint::y#1 ← (byte) 8 - (byte) addpoint::c#1 ← (byte) 2 - call addpoint param-assignment - to:main::@4 -main::@4: from main::@3 - (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) - (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) - (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) - (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) - (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) - (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) - (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) - (byte) addpoint::idx#2 ← (byte) 2 - (byte) addpoint::x#2 ← (byte) 6 - (byte) addpoint::y#2 ← (byte) 14 - (byte) addpoint::c#2 ← (byte) 3 - call addpoint param-assignment - to:main::@5 -main::@5: from main::@4 - (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) - (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) - (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) - (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) - (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) - (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) - (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) - (byte) addpoint::idx#3 ← (byte) 3 - (byte) addpoint::x#3 ← (byte) 34 - (byte) addpoint::y#3 ← (byte) 2 - (byte) addpoint::c#3 ← (byte) 4 - call addpoint param-assignment - to:main::@6 -main::@6: from main::@5 - (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) - (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) - (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) - (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) - (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) - (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) - (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) - (byte) addpoint::idx#4 ← (byte) 4 - (byte) addpoint::x#4 ← (byte) 21 - (byte) addpoint::y#4 ← (byte) 17 - (byte) addpoint::c#4 ← (byte) 5 - call addpoint param-assignment - to:main::@7 -main::@7: from main::@6 - (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) - (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) - (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) - (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) - (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) - (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) - (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) - (byte) addpoint::idx#5 ← (byte) 5 - (byte) addpoint::x#5 ← (byte) 31 - (byte) addpoint::y#5 ← (byte) 22 - (byte) addpoint::c#5 ← (byte) 7 - call addpoint param-assignment - to:main::@8 -main::@8: from main::@7 - (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) - (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) - (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) - (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) - (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) - (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) - (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) - call initscreen param-assignment - to:main::@9 -main::@9: from main::@8 - (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) - (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) - (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) - (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) - (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) - to:main::@1 -main::@1: from main::@11 main::@9 - (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) - (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) - (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) - (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) - (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) - call render param-assignment - to:main::@10 -main::@10: from main::@1 - (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) - (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) - (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) - (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) - (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) - call animate param-assignment - to:main::@11 -main::@11: from main::@10 - (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) - (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) - (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) - (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) - if(true) goto main::@1 - to:main::@return -main::@return: from main::@11 - return - to:@RETURN -animate: from main::@10 - (byte[256]) YPOS#9 ← phi( main::@10/(byte[256]) YPOS#21 ) - (byte[256]) XPOS#1 ← phi( main::@10/(byte[256]) XPOS#9 ) - (byte~) animate::$0 ← (byte[256]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[256]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[256]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 - if((boolean~) animate::$3) goto animate::@1 - to:animate::@2 -animate::@1: from animate - (byte[256]) YPOS#10 ← phi( animate/(byte[256]) YPOS#9 ) - (byte[256]) XPOS#2 ← phi( animate/(byte[256]) XPOS#1 ) - *((byte[256]) XPOS#2 + (byte) 0) ← (byte) 0 - to:animate::@2 -animate::@2: from animate animate::@1 - (byte[256]) XPOS#10 ← phi( animate/(byte[256]) XPOS#1 animate::@1/(byte[256]) XPOS#2 ) - (byte[256]) YPOS#1 ← phi( animate/(byte[256]) YPOS#9 animate::@1/(byte[256]) YPOS#10 ) - (byte~) animate::$4 ← (byte[256]) YPOS#1 *idx (byte) 0 - (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 - *((byte[256]) YPOS#1 + (byte) 0) ← (byte~) animate::$5 - (byte~) animate::$6 ← (byte[256]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$7 ← (byte~) animate::$6 == (byte) 25 - if((boolean~) animate::$7) goto animate::@3 - to:animate::@4 -animate::@3: from animate::@2 - (byte[256]) XPOS#11 ← phi( animate::@2/(byte[256]) XPOS#10 ) - (byte[256]) YPOS#2 ← phi( animate::@2/(byte[256]) YPOS#1 ) - *((byte[256]) YPOS#2 + (byte) 0) ← (byte) 0 - to:animate::@4 -animate::@4: from animate::@2 animate::@3 - (byte[256]) YPOS#11 ← phi( animate::@2/(byte[256]) YPOS#1 animate::@3/(byte[256]) YPOS#2 ) - (byte[256]) XPOS#3 ← phi( animate::@2/(byte[256]) XPOS#10 animate::@3/(byte[256]) XPOS#11 ) - (byte~) animate::$8 ← (byte[256]) XPOS#3 *idx (byte) 1 - (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 - *((byte[256]) XPOS#3 + (byte) 1) ← (byte~) animate::$9 - (byte~) animate::$10 ← (byte[256]) XPOS#3 *idx (byte) 1 - (boolean~) animate::$11 ← (byte~) animate::$10 == (byte) 255 - if((boolean~) animate::$11) goto animate::@5 - to:animate::@6 -animate::@5: from animate::@4 - (byte[256]) YPOS#12 ← phi( animate::@4/(byte[256]) YPOS#11 ) - (byte[256]) XPOS#4 ← phi( animate::@4/(byte[256]) XPOS#3 ) - *((byte[256]) XPOS#4 + (byte) 1) ← (byte) 40 - to:animate::@6 -animate::@6: from animate::@4 animate::@5 - (byte[256]) XPOS#22 ← phi( animate::@4/(byte[256]) XPOS#3 animate::@5/(byte[256]) XPOS#4 ) - (byte[256]) YPOS#3 ← phi( animate::@4/(byte[256]) YPOS#11 animate::@5/(byte[256]) YPOS#12 ) - (byte~) animate::$12 ← (byte[256]) YPOS#3 *idx (byte) 2 - (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 - *((byte[256]) YPOS#3 + (byte) 2) ← (byte~) animate::$13 - (byte~) animate::$14 ← (byte[256]) YPOS#3 *idx (byte) 2 - (boolean~) animate::$15 ← (byte~) animate::$14 == (byte) 25 - if((boolean~) animate::$15) goto animate::@7 - to:animate::@8 -animate::@7: from animate::@6 - (byte[256]) XPOS#23 ← phi( animate::@6/(byte[256]) XPOS#22 ) - (byte[256]) YPOS#4 ← phi( animate::@6/(byte[256]) YPOS#3 ) - *((byte[256]) YPOS#4 + (byte) 2) ← (byte) 0 - to:animate::@8 -animate::@8: from animate::@6 animate::@7 - (byte[256]) XPOS#12 ← phi( animate::@6/(byte[256]) XPOS#22 animate::@7/(byte[256]) XPOS#23 ) - (byte[256]) YPOS#5 ← phi( animate::@6/(byte[256]) YPOS#3 animate::@7/(byte[256]) YPOS#4 ) - (byte~) animate::$16 ← (byte[256]) YPOS#5 *idx (byte) 3 - (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 - *((byte[256]) YPOS#5 + (byte) 3) ← (byte~) animate::$17 - (byte~) animate::$18 ← (byte[256]) YPOS#5 *idx (byte) 3 - (boolean~) animate::$19 ← (byte~) animate::$18 == (byte) 255 - if((boolean~) animate::$19) goto animate::@9 - to:animate::@return -animate::@9: from animate::@8 - (byte[256]) XPOS#5 ← phi( animate::@8/(byte[256]) XPOS#12 ) - (byte[256]) YPOS#6 ← phi( animate::@8/(byte[256]) YPOS#5 ) - *((byte[256]) YPOS#6 + (byte) 3) ← (byte) 25 - (byte~) animate::$20 ← (byte[256]) XPOS#5 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 - *((byte[256]) XPOS#5 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[256]) XPOS#5 *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 >= (byte) 40 - if((boolean~) animate::$23) goto animate::@11 - to:animate::@return -animate::@11: from animate::@9 - (byte[256]) XPOS#6 ← phi( animate::@9/(byte[256]) XPOS#5 ) - (byte~) animate::$24 ← (byte[256]) XPOS#6 *idx (byte) 3 - (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 - *((byte[256]) XPOS#6 + (byte) 3) ← (byte~) animate::$25 - to:animate::@return -animate::@return: from animate::@11 animate::@8 animate::@9 - return - to:@RETURN -addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - (byte[256]) COLS#1 ← phi( main/(byte[256]) COLS#3 main::@3/(byte[256]) COLS#4 main::@4/(byte[256]) COLS#5 main::@5/(byte[256]) COLS#6 main::@6/(byte[256]) COLS#7 main::@7/(byte[256]) COLS#8 ) - (byte) addpoint::c#6 ← phi( main/(byte) addpoint::c#0 main::@3/(byte) addpoint::c#1 main::@4/(byte) addpoint::c#2 main::@5/(byte) addpoint::c#3 main::@6/(byte) addpoint::c#4 main::@7/(byte) addpoint::c#5 ) - (byte[256]) YPOS#7 ← phi( main/(byte[256]) YPOS#13 main::@3/(byte[256]) YPOS#14 main::@4/(byte[256]) YPOS#15 main::@5/(byte[256]) YPOS#16 main::@6/(byte[256]) YPOS#17 main::@7/(byte[256]) YPOS#18 ) - (byte) addpoint::y#6 ← phi( main/(byte) addpoint::y#0 main::@3/(byte) addpoint::y#1 main::@4/(byte) addpoint::y#2 main::@5/(byte) addpoint::y#3 main::@6/(byte) addpoint::y#4 main::@7/(byte) addpoint::y#5 ) - (byte) addpoint::idx#6 ← phi( main/(byte) addpoint::idx#0 main::@3/(byte) addpoint::idx#1 main::@4/(byte) addpoint::idx#2 main::@5/(byte) addpoint::idx#3 main::@6/(byte) addpoint::idx#4 main::@7/(byte) addpoint::idx#5 ) - (byte[256]) XPOS#7 ← phi( main/(byte[256]) XPOS#13 main::@3/(byte[256]) XPOS#14 main::@4/(byte[256]) XPOS#15 main::@5/(byte[256]) XPOS#16 main::@6/(byte[256]) XPOS#17 main::@7/(byte[256]) XPOS#18 ) - (byte) addpoint::x#6 ← phi( main/(byte) addpoint::x#0 main::@3/(byte) addpoint::x#1 main::@4/(byte) addpoint::x#2 main::@5/(byte) addpoint::x#3 main::@6/(byte) addpoint::x#4 main::@7/(byte) addpoint::x#5 ) - *((byte[256]) XPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((byte[256]) YPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((byte[256]) COLS#1 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 - to:addpoint::@return -addpoint::@return: from addpoint - return - to:@RETURN -initscreen: from main::@8 - (byte) FILL#2 ← phi( main::@8/(byte) FILL#3 ) - (byte*) SCREEN#1 ← phi( main::@8/(byte*) SCREEN#2 ) - (byte*) initscreen::screen#0 ← (byte*) SCREEN#1 - to:initscreen::@1 -initscreen::@1: from initscreen initscreen::@1 - (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) - (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) - *((byte*) initscreen::screen#2) ← (byte) FILL#1 - (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (boolean~) initscreen::$0 ← (byte*) initscreen::screen#1 < (word) 2048 - if((boolean~) initscreen::$0) goto initscreen::@1 - to:initscreen::@return -initscreen::@return: from initscreen::@1 - return - to:@RETURN -render: from main::@1 - (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) - (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) - (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) - (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) - (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) - (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 - to:render::@1 -render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) - (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) - (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) - (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) - (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) - (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 - to:render::@2 -render::@2: from render::@1 render::@5 - (byte) numpoints#13 ← phi( render::@1/(byte) numpoints#14 render::@5/(byte) numpoints#15 ) - (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) - (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) - (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) - (byte*) render::colline#4 ← phi( render::@1/(byte*) render::colline#5 render::@5/(byte*) render::colline#2 ) - (byte) render::y#2 ← phi( render::@1/(byte) render::y#4 render::@5/(byte) render::y#5 ) - (byte) render::x#2 ← phi( render::@1/(byte) render::x#0 render::@5/(byte) render::x#1 ) - (byte) findcol::x#0 ← (byte) render::x#2 - (byte) findcol::y#0 ← (byte) render::y#2 - call findcol param-assignment - (byte) findcol::return#0 ← (byte) findcol::return#2 - to:render::@5 -render::@5: from render::@2 - (byte) numpoints#15 ← phi( render::@2/(byte) numpoints#13 ) - (byte[256]) COLS#22 ← phi( render::@2/(byte[256]) COLS#20 ) - (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) - (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) - (byte) render::y#5 ← phi( render::@2/(byte) render::y#2 ) - (byte) render::x#3 ← phi( render::@2/(byte) render::x#2 ) - (byte*) render::colline#2 ← phi( render::@2/(byte*) render::colline#4 ) - (byte) findcol::return#4 ← phi( render::@2/(byte) findcol::return#0 ) - (byte~) render::$0 ← (byte) findcol::return#4 - (byte) render::col#0 ← (byte~) render::$0 - *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 - (byte) render::x#1 ← ++ (byte) render::x#3 - (boolean~) render::$1 ← (byte) render::x#1 < (byte) 40 - if((boolean~) render::$1) goto render::@2 - to:render::@3 -render::@3: from render::@5 - (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) - (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) - (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) - (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) - (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) - (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 - (byte*) render::colline#1 ← (byte*~) render::$2 - (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$3 ← (byte) render::y#1 < (byte) 25 - if((boolean~) render::$3) goto render::@1 - to:render::@return -render::@return: from render::@3 - return - to:@RETURN -findcol: from render::@2 - (byte) numpoints#12 ← phi( render::@2/(byte) numpoints#13 ) - (byte[256]) COLS#18 ← phi( render::@2/(byte[256]) COLS#20 ) - (byte) findcol::y#8 ← phi( render::@2/(byte) findcol::y#0 ) - (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) - (byte[256]) YPOS#19 ← phi( render::@2/(byte[256]) YPOS#22 ) - (byte[256]) XPOS#19 ← phi( render::@2/(byte[256]) XPOS#24 ) - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 - to:findcol::@1 -findcol::@1: from findcol findcol::@13 - (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@13/(byte) findcol::mincol#3 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 findcol::@13/(byte) numpoints#1 ) - (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 findcol::@13/(byte[256]) COLS#19 ) - (byte) findcol::mindiff#9 ← phi( findcol/(byte) findcol::mindiff#0 findcol::@13/(byte) findcol::mindiff#11 ) - (byte) findcol::y#5 ← phi( findcol/(byte) findcol::y#8 findcol::@13/(byte) findcol::y#9 ) - (byte) findcol::x#1 ← phi( findcol/(byte) findcol::x#5 findcol::@13/(byte) findcol::x#6 ) - (byte[256]) YPOS#8 ← phi( findcol/(byte[256]) YPOS#19 findcol::@13/(byte[256]) YPOS#20 ) - (byte) findcol::i#2 ← phi( findcol/(byte) findcol::i#0 findcol::@13/(byte) findcol::i#1 ) - (byte[256]) XPOS#8 ← phi( findcol/(byte[256]) XPOS#19 findcol::@13/(byte[256]) XPOS#20 ) - (byte~) findcol::$0 ← (byte[256]) XPOS#8 *idx (byte) findcol::i#2 - (byte) findcol::xp#0 ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[256]) YPOS#8 *idx (byte) findcol::i#2 - (byte) findcol::yp#0 ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 - if((boolean~) findcol::$2) goto findcol::@2 - to:findcol::@3 -findcol::@2: from findcol::@1 - (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) - (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) - (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) - (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) - (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) - (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) - (byte) findcol::mindiff#10 ← phi( findcol::@1/(byte) findcol::mindiff#9 ) - (byte) findcol::xp#4 ← phi( findcol::@1/(byte) findcol::xp#0 ) - (byte) findcol::x#7 ← phi( findcol::@1/(byte) findcol::x#1 ) - (byte) findcol::yp#1 ← phi( findcol::@1/(byte) findcol::yp#0 ) - (byte) findcol::y#1 ← phi( findcol::@1/(byte) findcol::y#5 ) - (boolean~) findcol::$3 ← (byte) findcol::y#1 == (byte) findcol::yp#1 - if((boolean~) findcol::$3) goto findcol::@4 - to:findcol::@3 -findcol::@3: from findcol::@1 findcol::@2 - (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) - (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) - (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) - (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) - (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) - (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) - (byte) findcol::mindiff#8 ← phi( findcol::@1/(byte) findcol::mindiff#9 findcol::@2/(byte) findcol::mindiff#10 ) - (byte) findcol::yp#7 ← phi( findcol::@1/(byte) findcol::yp#0 findcol::@2/(byte) findcol::yp#1 ) - (byte) findcol::y#10 ← phi( findcol::@1/(byte) findcol::y#5 findcol::@2/(byte) findcol::y#1 ) - (byte) findcol::xp#1 ← phi( findcol::@1/(byte) findcol::xp#0 findcol::@2/(byte) findcol::xp#4 ) - (byte) findcol::x#2 ← phi( findcol::@1/(byte) findcol::x#1 findcol::@2/(byte) findcol::x#7 ) - (boolean~) findcol::$4 ← (byte) findcol::x#2 < (byte) findcol::xp#1 - if((boolean~) findcol::$4) goto findcol::@6 - to:findcol::@7 -findcol::@4: from findcol::@2 - (byte) findcol::return#1 ← (byte) 0 - to:findcol::@return -findcol::@return: from findcol::@27 findcol::@4 - (byte) findcol::return#5 ← phi( findcol::@27/(byte) findcol::return#3 findcol::@4/(byte) findcol::return#1 ) - (byte) findcol::return#2 ← (byte) findcol::return#5 - return - to:@RETURN -findcol::@6: from findcol::@3 - (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) - (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) - (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) - (byte) findcol::mindiff#6 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) - (byte) findcol::yp#5 ← phi( findcol::@3/(byte) findcol::yp#7 ) - (byte) findcol::y#6 ← phi( findcol::@3/(byte) findcol::y#10 ) - (byte) findcol::x#3 ← phi( findcol::@3/(byte) findcol::x#2 ) - (byte) findcol::xp#2 ← phi( findcol::@3/(byte) findcol::xp#1 ) - (byte~) findcol::$5 ← (byte) findcol::xp#2 - (byte) findcol::x#3 - (byte) findcol::diff#0 ← (byte~) findcol::$5 - to:findcol::@8 -findcol::@7: from findcol::@3 - (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) - (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) - (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) - (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) - (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) - (byte) findcol::mindiff#7 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) - (byte) findcol::yp#6 ← phi( findcol::@3/(byte) findcol::yp#7 ) - (byte) findcol::y#7 ← phi( findcol::@3/(byte) findcol::y#10 ) - (byte) findcol::xp#3 ← phi( findcol::@3/(byte) findcol::xp#1 ) - (byte) findcol::x#4 ← phi( findcol::@3/(byte) findcol::x#2 ) - (byte~) findcol::$6 ← (byte) findcol::x#4 - (byte) findcol::xp#3 - (byte) findcol::diff#1 ← (byte~) findcol::$6 - to:findcol::@8 -findcol::@8: from findcol::@6 findcol::@7 - (byte) findcol::mincol#7 ← phi( findcol::@6/(byte) findcol::mincol#8 findcol::@7/(byte) findcol::mincol#9 ) - (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) - (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) - (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) - (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) - (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) - (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) - (byte) findcol::mindiff#5 ← phi( findcol::@6/(byte) findcol::mindiff#6 findcol::@7/(byte) findcol::mindiff#7 ) - (byte) findcol::diff#8 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) - (byte) findcol::yp#2 ← phi( findcol::@6/(byte) findcol::yp#5 findcol::@7/(byte) findcol::yp#6 ) - (byte) findcol::y#2 ← phi( findcol::@6/(byte) findcol::y#6 findcol::@7/(byte) findcol::y#7 ) - (boolean~) findcol::$7 ← (byte) findcol::y#2 < (byte) findcol::yp#2 - if((boolean~) findcol::$7) goto findcol::@9 - to:findcol::@10 -findcol::@9: from findcol::@8 - (byte) findcol::mincol#6 ← phi( findcol::@8/(byte) findcol::mincol#7 ) - (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) - (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) - (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) - (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) - (byte) findcol::mindiff#4 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) - (byte) findcol::diff#4 ← phi( findcol::@8/(byte) findcol::diff#8 ) - (byte) findcol::y#3 ← phi( findcol::@8/(byte) findcol::y#2 ) - (byte) findcol::yp#3 ← phi( findcol::@8/(byte) findcol::yp#2 ) - (byte~) findcol::$8 ← (byte) findcol::yp#3 - (byte) findcol::y#3 - (byte~) findcol::$9 ← (byte) findcol::diff#4 + (byte~) findcol::$8 - (byte) findcol::diff#2 ← (byte~) findcol::$9 - to:findcol::@11 -findcol::@10: from findcol::@8 - (byte) findcol::mincol#5 ← phi( findcol::@8/(byte) findcol::mincol#7 ) - (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) - (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) - (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) - (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) - (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) - (byte) findcol::mindiff#3 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) - (byte) findcol::diff#5 ← phi( findcol::@8/(byte) findcol::diff#8 ) - (byte) findcol::yp#4 ← phi( findcol::@8/(byte) findcol::yp#2 ) - (byte) findcol::y#4 ← phi( findcol::@8/(byte) findcol::y#2 ) - (byte~) findcol::$10 ← (byte) findcol::y#4 - (byte) findcol::yp#4 - (byte~) findcol::$11 ← (byte) findcol::diff#5 + (byte~) findcol::$10 - (byte) findcol::diff#3 ← (byte~) findcol::$11 - to:findcol::@11 -findcol::@11: from findcol::@10 findcol::@9 - (byte) findcol::y#11 ← phi( findcol::@10/(byte) findcol::y#4 findcol::@9/(byte) findcol::y#3 ) - (byte) findcol::mincol#4 ← phi( findcol::@10/(byte) findcol::mincol#5 findcol::@9/(byte) findcol::mincol#6 ) - (byte) findcol::x#8 ← phi( findcol::@10/(byte) findcol::x#10 findcol::@9/(byte) findcol::x#11 ) - (byte[256]) YPOS#23 ← phi( findcol::@10/(byte[256]) YPOS#28 findcol::@9/(byte[256]) YPOS#29 ) - (byte[256]) XPOS#25 ← phi( findcol::@10/(byte[256]) XPOS#31 findcol::@9/(byte[256]) XPOS#32 ) - (byte) numpoints#2 ← phi( findcol::@10/(byte) numpoints#4 findcol::@9/(byte) numpoints#5 ) - (byte) findcol::i#5 ← phi( findcol::@10/(byte) findcol::i#6 findcol::@9/(byte) findcol::i#7 ) - (byte[256]) COLS#9 ← phi( findcol::@10/(byte[256]) COLS#10 findcol::@9/(byte[256]) COLS#11 ) - (byte) findcol::mindiff#2 ← phi( findcol::@10/(byte) findcol::mindiff#3 findcol::@9/(byte) findcol::mindiff#4 ) - (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) - (boolean~) findcol::$12 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 - if((boolean~) findcol::$12) goto findcol::@12 - to:findcol::@13 -findcol::@12: from findcol::@11 - (byte) findcol::y#12 ← phi( findcol::@11/(byte) findcol::y#11 ) - (byte) findcol::x#9 ← phi( findcol::@11/(byte) findcol::x#8 ) - (byte[256]) YPOS#24 ← phi( findcol::@11/(byte[256]) YPOS#23 ) - (byte[256]) XPOS#26 ← phi( findcol::@11/(byte[256]) XPOS#25 ) - (byte) numpoints#3 ← phi( findcol::@11/(byte) numpoints#2 ) - (byte) findcol::i#3 ← phi( findcol::@11/(byte) findcol::i#5 ) - (byte[256]) COLS#2 ← phi( findcol::@11/(byte[256]) COLS#9 ) - (byte) findcol::diff#7 ← phi( findcol::@11/(byte) findcol::diff#6 ) - (byte) findcol::mindiff#1 ← (byte) findcol::diff#7 - (byte~) findcol::$13 ← (byte[256]) COLS#2 *idx (byte) findcol::i#3 - (byte) findcol::mincol#1 ← (byte~) findcol::$13 - to:findcol::@13 -findcol::@13: from findcol::@11 findcol::@12 - (byte[256]) COLS#19 ← phi( findcol::@11/(byte[256]) COLS#9 findcol::@12/(byte[256]) COLS#2 ) - (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#2 findcol::@12/(byte) findcol::mindiff#1 ) - (byte) findcol::y#9 ← phi( findcol::@11/(byte) findcol::y#11 findcol::@12/(byte) findcol::y#12 ) - (byte) findcol::mincol#3 ← phi( findcol::@11/(byte) findcol::mincol#4 findcol::@12/(byte) findcol::mincol#1 ) - (byte) findcol::x#6 ← phi( findcol::@11/(byte) findcol::x#8 findcol::@12/(byte) findcol::x#9 ) - (byte[256]) YPOS#20 ← phi( findcol::@11/(byte[256]) YPOS#23 findcol::@12/(byte[256]) YPOS#24 ) - (byte[256]) XPOS#20 ← phi( findcol::@11/(byte[256]) XPOS#25 findcol::@12/(byte[256]) XPOS#26 ) - (byte) numpoints#1 ← phi( findcol::@11/(byte) numpoints#2 findcol::@12/(byte) numpoints#3 ) - (byte) findcol::i#4 ← phi( findcol::@11/(byte) findcol::i#5 findcol::@12/(byte) findcol::i#3 ) - (byte) findcol::i#1 ← ++ (byte) findcol::i#4 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$14) goto findcol::@1 - to:findcol::@27 -findcol::@27: from findcol::@13 - (byte) findcol::mincol#2 ← phi( findcol::@13/(byte) findcol::mincol#3 ) - (byte) findcol::return#3 ← (byte) findcol::mincol#2 - to:findcol::@return -@END: from @BEGIN - Constant (byte*) SCREEN#0 (word) 1024 Constant (byte*) COLORS#0 (word) 55296 Constant (byte) FILL#0 (byte) 230 -Constant (byte) numpoints#0 (byte) 6 +Constant (byte) numpoints#0 (byte) 0 Constant (byte[256]) XPOS#0 (word) 4096 Constant (byte[256]) YPOS#0 (word) 4352 Constant (byte[256]) COLS#0 (word) 4608 -Constant (byte) addpoint::idx#0 (byte) 0 Constant (byte) addpoint::x#0 (byte) 5 Constant (byte) addpoint::y#0 (byte) 5 Constant (byte) addpoint::c#0 (byte) 1 -Constant (byte) addpoint::idx#1 (byte) 1 Constant (byte) addpoint::x#1 (byte) 15 Constant (byte) addpoint::y#1 (byte) 8 Constant (byte) addpoint::c#1 (byte) 2 -Constant (byte) addpoint::idx#2 (byte) 2 Constant (byte) addpoint::x#2 (byte) 6 Constant (byte) addpoint::y#2 (byte) 14 Constant (byte) addpoint::c#2 (byte) 3 -Constant (byte) addpoint::idx#3 (byte) 3 Constant (byte) addpoint::x#3 (byte) 34 Constant (byte) addpoint::y#3 (byte) 2 Constant (byte) addpoint::c#3 (byte) 4 -Constant (byte) addpoint::idx#4 (byte) 4 Constant (byte) addpoint::x#4 (byte) 21 Constant (byte) addpoint::y#4 (byte) 17 Constant (byte) addpoint::c#4 (byte) 5 -Constant (byte) addpoint::idx#5 (byte) 5 Constant (byte) addpoint::x#5 (byte) 31 Constant (byte) addpoint::y#5 (byte) 22 Constant (byte) addpoint::c#5 (byte) 7 @@ -2835,109 +2332,121 @@ Succesful SSA optimization Pass2ConstantPropagation CONTROL FLOW GRAPH @BEGIN: from call main param-assignment + to:@7 +@7: from @BEGIN + (byte) numpoints#11 ← phi( @BEGIN/(byte) numpoints#8 ) + (byte) numpoints#1 ← (byte) numpoints#11 to:@END main: from @BEGIN - (byte) numpoints#28 ← phi( @BEGIN/(byte) 6 ) (byte*) COLORS#12 ← phi( @BEGIN/(word) 55296 ) (byte) FILL#9 ← phi( @BEGIN/(byte) 230 ) (byte*) SCREEN#8 ← phi( @BEGIN/(word) 1024 ) (byte[256]) COLS#3 ← phi( @BEGIN/(word) 4608 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(word) 4352 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(word) 4096 ) + (byte) numpoints#22 ← phi( @BEGIN/(byte) 0 ) call addpoint param-assignment to:main::@3 main::@3: from main - (byte) numpoints#27 ← phi( main/(byte) numpoints#28 ) (byte*) COLORS#11 ← phi( main/(byte*) COLORS#12 ) (byte) FILL#8 ← phi( main/(byte) FILL#9 ) (byte*) SCREEN#7 ← phi( main/(byte*) SCREEN#8 ) (byte[256]) COLS#4 ← phi( main/(byte[256]) COLS#3 ) (byte[256]) YPOS#14 ← phi( main/(byte[256]) YPOS#13 ) (byte[256]) XPOS#14 ← phi( main/(byte[256]) XPOS#13 ) + (byte) numpoints#12 ← phi( main/(byte) numpoints#10 ) + (byte) numpoints#2 ← (byte) numpoints#12 call addpoint param-assignment to:main::@4 main::@4: from main::@3 - (byte) numpoints#26 ← phi( main::@3/(byte) numpoints#27 ) (byte*) COLORS#10 ← phi( main::@3/(byte*) COLORS#11 ) (byte) FILL#7 ← phi( main::@3/(byte) FILL#8 ) (byte*) SCREEN#6 ← phi( main::@3/(byte*) SCREEN#7 ) (byte[256]) COLS#5 ← phi( main::@3/(byte[256]) COLS#4 ) (byte[256]) YPOS#15 ← phi( main::@3/(byte[256]) YPOS#14 ) (byte[256]) XPOS#15 ← phi( main::@3/(byte[256]) XPOS#14 ) + (byte) numpoints#13 ← phi( main::@3/(byte) numpoints#10 ) + (byte) numpoints#3 ← (byte) numpoints#13 call addpoint param-assignment to:main::@5 main::@5: from main::@4 - (byte) numpoints#25 ← phi( main::@4/(byte) numpoints#26 ) (byte*) COLORS#9 ← phi( main::@4/(byte*) COLORS#10 ) (byte) FILL#6 ← phi( main::@4/(byte) FILL#7 ) (byte*) SCREEN#5 ← phi( main::@4/(byte*) SCREEN#6 ) (byte[256]) COLS#6 ← phi( main::@4/(byte[256]) COLS#5 ) (byte[256]) YPOS#16 ← phi( main::@4/(byte[256]) YPOS#15 ) (byte[256]) XPOS#16 ← phi( main::@4/(byte[256]) XPOS#15 ) + (byte) numpoints#14 ← phi( main::@4/(byte) numpoints#10 ) + (byte) numpoints#4 ← (byte) numpoints#14 call addpoint param-assignment to:main::@6 main::@6: from main::@5 - (byte) numpoints#24 ← phi( main::@5/(byte) numpoints#25 ) (byte*) COLORS#8 ← phi( main::@5/(byte*) COLORS#9 ) (byte) FILL#5 ← phi( main::@5/(byte) FILL#6 ) (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#5 ) (byte[256]) COLS#7 ← phi( main::@5/(byte[256]) COLS#6 ) (byte[256]) YPOS#17 ← phi( main::@5/(byte[256]) YPOS#16 ) (byte[256]) XPOS#17 ← phi( main::@5/(byte[256]) XPOS#16 ) + (byte) numpoints#15 ← phi( main::@5/(byte) numpoints#10 ) + (byte) numpoints#5 ← (byte) numpoints#15 call addpoint param-assignment to:main::@7 main::@7: from main::@6 - (byte) numpoints#23 ← phi( main::@6/(byte) numpoints#24 ) (byte*) COLORS#7 ← phi( main::@6/(byte*) COLORS#8 ) (byte) FILL#4 ← phi( main::@6/(byte) FILL#5 ) (byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 ) (byte[256]) COLS#8 ← phi( main::@6/(byte[256]) COLS#7 ) (byte[256]) YPOS#18 ← phi( main::@6/(byte[256]) YPOS#17 ) (byte[256]) XPOS#18 ← phi( main::@6/(byte[256]) XPOS#17 ) + (byte) numpoints#16 ← phi( main::@6/(byte) numpoints#10 ) + (byte) numpoints#6 ← (byte) numpoints#16 call addpoint param-assignment to:main::@8 main::@8: from main::@7 - (byte) numpoints#21 ← phi( main::@7/(byte) numpoints#23 ) (byte[256]) COLS#28 ← phi( main::@7/(byte[256]) COLS#8 ) (byte[256]) YPOS#35 ← phi( main::@7/(byte[256]) YPOS#18 ) (byte[256]) XPOS#33 ← phi( main::@7/(byte[256]) XPOS#18 ) (byte*) COLORS#5 ← phi( main::@7/(byte*) COLORS#7 ) (byte) FILL#3 ← phi( main::@7/(byte) FILL#4 ) (byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 ) + (byte) numpoints#17 ← phi( main::@7/(byte) numpoints#10 ) + (byte) numpoints#7 ← (byte) numpoints#17 call initscreen param-assignment to:main::@9 main::@9: from main::@8 - (byte) numpoints#20 ← phi( main::@8/(byte) numpoints#21 ) (byte[256]) COLS#27 ← phi( main::@8/(byte[256]) COLS#28 ) (byte[256]) YPOS#31 ← phi( main::@8/(byte[256]) YPOS#35 ) + (byte) numpoints#31 ← phi( main::@8/(byte) numpoints#7 ) (byte[256]) XPOS#28 ← phi( main::@8/(byte[256]) XPOS#33 ) (byte*) COLORS#4 ← phi( main::@8/(byte*) COLORS#5 ) to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#19 main::@9/(byte) numpoints#20 ) (byte[256]) COLS#25 ← phi( main::@11/(byte[256]) COLS#26 main::@9/(byte[256]) COLS#27 ) (byte[256]) YPOS#25 ← phi( main::@11/(byte[256]) YPOS#30 main::@9/(byte[256]) YPOS#31 ) + (byte) numpoints#29 ← phi( main::@11/(byte) numpoints#23 main::@9/(byte) numpoints#31 ) (byte[256]) XPOS#21 ← phi( main::@11/(byte[256]) XPOS#27 main::@9/(byte[256]) XPOS#28 ) (byte*) COLORS#2 ← phi( main::@11/(byte*) COLORS#3 main::@9/(byte*) COLORS#4 ) call render param-assignment to:main::@10 main::@10: from main::@1 - (byte) numpoints#22 ← phi( main::@1/(byte) numpoints#18 ) (byte[256]) COLS#29 ← phi( main::@1/(byte[256]) COLS#25 ) (byte*) COLORS#6 ← phi( main::@1/(byte*) COLORS#2 ) (byte[256]) YPOS#21 ← phi( main::@1/(byte[256]) YPOS#25 ) + (byte) numpoints#26 ← phi( main::@1/(byte) numpoints#29 ) (byte[256]) XPOS#9 ← phi( main::@1/(byte[256]) XPOS#21 ) call animate param-assignment to:main::@11 main::@11: from main::@10 - (byte) numpoints#19 ← phi( main::@10/(byte) numpoints#22 ) (byte[256]) COLS#26 ← phi( main::@10/(byte[256]) COLS#29 ) (byte[256]) YPOS#30 ← phi( main::@10/(byte[256]) YPOS#21 ) (byte[256]) XPOS#27 ← phi( main::@10/(byte[256]) XPOS#9 ) (byte*) COLORS#3 ← phi( main::@10/(byte*) COLORS#6 ) + (byte) numpoints#23 ← phi( main::@10/(byte) numpoints#26 ) if(true) goto main::@1 to:main::@return main::@return: from main::@11 + (byte) numpoints#18 ← phi( main::@11/(byte) numpoints#23 ) + (byte) numpoints#8 ← (byte) numpoints#18 return to:@RETURN animate: from main::@10 @@ -3035,14 +2544,17 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte[256]) YPOS#7 ← phi( main/(byte[256]) YPOS#13 main::@3/(byte[256]) YPOS#14 main::@4/(byte[256]) YPOS#15 main::@5/(byte[256]) YPOS#16 main::@6/(byte[256]) YPOS#17 main::@7/(byte[256]) YPOS#18 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) numpoints#22 main::@3/(byte) numpoints#2 main::@4/(byte) numpoints#3 main::@5/(byte) numpoints#4 main::@6/(byte) numpoints#5 main::@7/(byte) numpoints#6 ) (byte[256]) XPOS#7 ← phi( main/(byte[256]) XPOS#13 main::@3/(byte[256]) XPOS#14 main::@4/(byte[256]) XPOS#15 main::@5/(byte[256]) XPOS#16 main::@6/(byte[256]) XPOS#17 main::@7/(byte[256]) XPOS#18 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((byte[256]) XPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((byte[256]) YPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((byte[256]) COLS#1 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((byte[256]) XPOS#7 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((byte[256]) YPOS#7 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((byte[256]) COLS#1 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#9 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint + (byte) numpoints#20 ← phi( addpoint/(byte) numpoints#9 ) + (byte) numpoints#10 ← (byte) numpoints#20 return to:@RETURN initscreen: from main::@8 @@ -3062,7 +2574,7 @@ initscreen::@return: from initscreen::@1 return to:@RETURN render: from main::@1 - (byte) numpoints#16 ← phi( main::@1/(byte) numpoints#18 ) + (byte) numpoints#41 ← phi( main::@1/(byte) numpoints#29 ) (byte[256]) COLS#23 ← phi( main::@1/(byte[256]) COLS#25 ) (byte[256]) YPOS#32 ← phi( main::@1/(byte[256]) YPOS#25 ) (byte[256]) XPOS#34 ← phi( main::@1/(byte[256]) XPOS#21 ) @@ -3070,7 +2582,7 @@ render: from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#17 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#41 render::@3/(byte) numpoints#42 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#24 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#32 render::@3/(byte[256]) YPOS#33 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#34 render::@3/(byte[256]) XPOS#35 ) @@ -3078,7 +2590,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#13 ← phi( render::@1/(byte) numpoints#14 render::@5/(byte) numpoints#15 ) + (byte) numpoints#38 ← phi( render::@1/(byte) numpoints#39 render::@5/(byte) numpoints#40 ) (byte[256]) COLS#20 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#22 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#24 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#30 ) @@ -3091,7 +2603,7 @@ render::@2: from render::@1 render::@5 (byte) findcol::return#0 ← (byte) findcol::return#2 to:render::@5 render::@5: from render::@2 - (byte) numpoints#15 ← phi( render::@2/(byte) numpoints#13 ) + (byte) numpoints#40 ← phi( render::@2/(byte) numpoints#38 ) (byte[256]) COLS#22 ← phi( render::@2/(byte[256]) COLS#20 ) (byte[256]) YPOS#27 ← phi( render::@2/(byte[256]) YPOS#22 ) (byte[256]) XPOS#30 ← phi( render::@2/(byte[256]) XPOS#24 ) @@ -3107,7 +2619,7 @@ render::@5: from render::@2 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: from render::@5 - (byte) numpoints#17 ← phi( render::@5/(byte) numpoints#15 ) + (byte) numpoints#42 ← phi( render::@5/(byte) numpoints#40 ) (byte[256]) COLS#24 ← phi( render::@5/(byte[256]) COLS#22 ) (byte[256]) YPOS#33 ← phi( render::@5/(byte[256]) YPOS#27 ) (byte[256]) XPOS#35 ← phi( render::@5/(byte[256]) XPOS#30 ) @@ -3123,7 +2635,7 @@ render::@return: from render::@3 return to:@RETURN findcol: from render::@2 - (byte) numpoints#12 ← phi( render::@2/(byte) numpoints#13 ) + (byte) numpoints#37 ← phi( render::@2/(byte) numpoints#38 ) (byte[256]) COLS#18 ← phi( render::@2/(byte[256]) COLS#20 ) (byte) findcol::y#8 ← phi( render::@2/(byte) findcol::y#0 ) (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) @@ -3132,7 +2644,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#3 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 findcol::@13/(byte) numpoints#1 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 findcol::@13/(byte) numpoints#21 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 findcol::@13/(byte[256]) COLS#19 ) (byte) findcol::mindiff#9 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#5 ← phi( findcol/(byte) findcol::y#8 findcol::@13/(byte) findcol::y#9 ) @@ -3151,7 +2663,7 @@ findcol::@2: from findcol::@1 (byte) findcol::mincol#12 ← phi( findcol::@1/(byte) findcol::mincol#11 ) (byte[256]) YPOS#39 ← phi( findcol::@1/(byte[256]) YPOS#8 ) (byte[256]) XPOS#40 ← phi( findcol::@1/(byte[256]) XPOS#8 ) - (byte) numpoints#11 ← phi( findcol::@1/(byte) numpoints#10 ) + (byte) numpoints#36 ← phi( findcol::@1/(byte) numpoints#35 ) (byte) findcol::i#12 ← phi( findcol::@1/(byte) findcol::i#2 ) (byte[256]) COLS#17 ← phi( findcol::@1/(byte[256]) COLS#16 ) (byte) findcol::mindiff#10 ← phi( findcol::@1/(byte) findcol::mindiff#9 ) @@ -3166,7 +2678,7 @@ findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#12 ) (byte[256]) YPOS#38 ← phi( findcol::@1/(byte[256]) YPOS#8 findcol::@2/(byte[256]) YPOS#39 ) (byte[256]) XPOS#39 ← phi( findcol::@1/(byte[256]) XPOS#8 findcol::@2/(byte[256]) XPOS#40 ) - (byte) numpoints#9 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#11 ) + (byte) numpoints#34 ← phi( findcol::@1/(byte) numpoints#35 findcol::@2/(byte) numpoints#36 ) (byte) findcol::i#11 ← phi( findcol::@1/(byte) findcol::i#2 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#15 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#17 ) (byte) findcol::mindiff#8 ← phi( findcol::@1/(byte) findcol::mindiff#9 findcol::@2/(byte) findcol::mindiff#10 ) @@ -3188,7 +2700,7 @@ findcol::@6: from findcol::@3 (byte) findcol::mincol#8 ← phi( findcol::@3/(byte) findcol::mincol#10 ) (byte[256]) YPOS#36 ← phi( findcol::@3/(byte[256]) YPOS#38 ) (byte[256]) XPOS#37 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#7 ← phi( findcol::@3/(byte) numpoints#9 ) + (byte) numpoints#32 ← phi( findcol::@3/(byte) numpoints#34 ) (byte) findcol::i#9 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#13 ← phi( findcol::@3/(byte[256]) COLS#15 ) (byte) findcol::mindiff#6 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) @@ -3203,7 +2715,7 @@ findcol::@7: from findcol::@3 (byte) findcol::mincol#9 ← phi( findcol::@3/(byte) findcol::mincol#10 ) (byte[256]) YPOS#37 ← phi( findcol::@3/(byte[256]) YPOS#38 ) (byte[256]) XPOS#38 ← phi( findcol::@3/(byte[256]) XPOS#39 ) - (byte) numpoints#8 ← phi( findcol::@3/(byte) numpoints#9 ) + (byte) numpoints#33 ← phi( findcol::@3/(byte) numpoints#34 ) (byte) findcol::i#10 ← phi( findcol::@3/(byte) findcol::i#11 ) (byte[256]) COLS#14 ← phi( findcol::@3/(byte[256]) COLS#15 ) (byte) findcol::mindiff#7 ← phi( findcol::@3/(byte) findcol::mindiff#8 ) @@ -3219,7 +2731,7 @@ findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::x#12 ← phi( findcol::@6/(byte) findcol::x#3 findcol::@7/(byte) findcol::x#4 ) (byte[256]) YPOS#34 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#37 ) (byte[256]) XPOS#36 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#38 ) - (byte) numpoints#6 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#8 ) + (byte) numpoints#30 ← phi( findcol::@6/(byte) numpoints#32 findcol::@7/(byte) numpoints#33 ) (byte) findcol::i#8 ← phi( findcol::@6/(byte) findcol::i#9 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#12 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#14 ) (byte) findcol::mindiff#5 ← phi( findcol::@6/(byte) findcol::mindiff#6 findcol::@7/(byte) findcol::mindiff#7 ) @@ -3234,7 +2746,7 @@ findcol::@9: from findcol::@8 (byte) findcol::x#11 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#29 ← phi( findcol::@8/(byte[256]) YPOS#34 ) (byte[256]) XPOS#32 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#5 ← phi( findcol::@8/(byte) numpoints#6 ) + (byte) numpoints#28 ← phi( findcol::@8/(byte) numpoints#30 ) (byte) findcol::i#7 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#11 ← phi( findcol::@8/(byte[256]) COLS#12 ) (byte) findcol::mindiff#4 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) @@ -3250,7 +2762,7 @@ findcol::@10: from findcol::@8 (byte) findcol::x#10 ← phi( findcol::@8/(byte) findcol::x#12 ) (byte[256]) YPOS#28 ← phi( findcol::@8/(byte[256]) YPOS#34 ) (byte[256]) XPOS#31 ← phi( findcol::@8/(byte[256]) XPOS#36 ) - (byte) numpoints#4 ← phi( findcol::@8/(byte) numpoints#6 ) + (byte) numpoints#27 ← phi( findcol::@8/(byte) numpoints#30 ) (byte) findcol::i#6 ← phi( findcol::@8/(byte) findcol::i#8 ) (byte[256]) COLS#10 ← phi( findcol::@8/(byte[256]) COLS#12 ) (byte) findcol::mindiff#3 ← phi( findcol::@8/(byte) findcol::mindiff#5 ) @@ -3267,7 +2779,7 @@ findcol::@11: from findcol::@10 findcol::@9 (byte) findcol::x#8 ← phi( findcol::@10/(byte) findcol::x#10 findcol::@9/(byte) findcol::x#11 ) (byte[256]) YPOS#23 ← phi( findcol::@10/(byte[256]) YPOS#28 findcol::@9/(byte[256]) YPOS#29 ) (byte[256]) XPOS#25 ← phi( findcol::@10/(byte[256]) XPOS#31 findcol::@9/(byte[256]) XPOS#32 ) - (byte) numpoints#2 ← phi( findcol::@10/(byte) numpoints#4 findcol::@9/(byte) numpoints#5 ) + (byte) numpoints#24 ← phi( findcol::@10/(byte) numpoints#27 findcol::@9/(byte) numpoints#28 ) (byte) findcol::i#5 ← phi( findcol::@10/(byte) findcol::i#6 findcol::@9/(byte) findcol::i#7 ) (byte[256]) COLS#9 ← phi( findcol::@10/(byte[256]) COLS#10 findcol::@9/(byte[256]) COLS#11 ) (byte) findcol::mindiff#2 ← phi( findcol::@10/(byte) findcol::mindiff#3 findcol::@9/(byte) findcol::mindiff#4 ) @@ -3280,7 +2792,7 @@ findcol::@12: from findcol::@11 (byte) findcol::x#9 ← phi( findcol::@11/(byte) findcol::x#8 ) (byte[256]) YPOS#24 ← phi( findcol::@11/(byte[256]) YPOS#23 ) (byte[256]) XPOS#26 ← phi( findcol::@11/(byte[256]) XPOS#25 ) - (byte) numpoints#3 ← phi( findcol::@11/(byte) numpoints#2 ) + (byte) numpoints#25 ← phi( findcol::@11/(byte) numpoints#24 ) (byte) findcol::i#3 ← phi( findcol::@11/(byte) findcol::i#5 ) (byte[256]) COLS#2 ← phi( findcol::@11/(byte[256]) COLS#9 ) (byte) findcol::diff#7 ← phi( findcol::@11/(byte) findcol::diff#6 ) @@ -3296,35 +2808,35 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::x#6 ← phi( findcol::@11/(byte) findcol::x#8 findcol::@12/(byte) findcol::x#9 ) (byte[256]) YPOS#20 ← phi( findcol::@11/(byte[256]) YPOS#23 findcol::@12/(byte[256]) YPOS#24 ) (byte[256]) XPOS#20 ← phi( findcol::@11/(byte[256]) XPOS#25 findcol::@12/(byte[256]) XPOS#26 ) - (byte) numpoints#1 ← phi( findcol::@11/(byte) numpoints#2 findcol::@12/(byte) numpoints#3 ) + (byte) numpoints#21 ← phi( findcol::@11/(byte) numpoints#24 findcol::@12/(byte) numpoints#25 ) (byte) findcol::i#4 ← phi( findcol::@11/(byte) findcol::i#5 findcol::@12/(byte) findcol::i#3 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#4 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#1 + (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#21 if((boolean~) findcol::$14) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 (byte) findcol::mincol#2 ← phi( findcol::@13/(byte) findcol::mincol#3 ) (byte) findcol::return#3 ← (byte) findcol::mincol#2 to:findcol::@return -@END: from @BEGIN +@END: from @7 Not aliassing across scopes: initscreen::screen#0 SCREEN#1 Not aliassing across scopes: render::colline#0 COLORS#1 Not aliassing across scopes: findcol::x#0 render::x#2 Not aliassing across scopes: findcol::y#0 render::y#2 Not aliassing across scopes: render::$0 findcol::return#4 +Alias (byte) numpoints#1 = (byte) numpoints#11 (byte) numpoints#8 (byte) numpoints#26 (byte) numpoints#29 (byte) numpoints#23 (byte) numpoints#18 (byte) numpoints#41 +Alias (byte) numpoints#10 = (byte) numpoints#12 (byte) numpoints#2 (byte) numpoints#13 (byte) numpoints#3 (byte) numpoints#14 (byte) numpoints#4 (byte) numpoints#15 (byte) numpoints#5 (byte) numpoints#16 (byte) numpoints#6 (byte) numpoints#17 (byte) numpoints#7 (byte) numpoints#31 (byte) numpoints#20 (byte) numpoints#9 Alias (byte[256]) XPOS#13 = (byte[256]) XPOS#14 (byte[256]) XPOS#15 (byte[256]) XPOS#16 (byte[256]) XPOS#17 (byte[256]) XPOS#18 (byte[256]) XPOS#33 (byte[256]) XPOS#28 Alias (byte[256]) YPOS#13 = (byte[256]) YPOS#14 (byte[256]) YPOS#15 (byte[256]) YPOS#16 (byte[256]) YPOS#17 (byte[256]) YPOS#18 (byte[256]) YPOS#35 (byte[256]) YPOS#31 Alias (byte[256]) COLS#27 = (byte[256]) COLS#4 (byte[256]) COLS#3 (byte[256]) COLS#5 (byte[256]) COLS#6 (byte[256]) COLS#7 (byte[256]) COLS#8 (byte[256]) COLS#28 Alias (byte*) SCREEN#1 = (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#5 (byte*) SCREEN#4 (byte*) SCREEN#3 (byte*) SCREEN#2 Alias (byte) FILL#2 = (byte) FILL#8 (byte) FILL#9 (byte) FILL#7 (byte) FILL#6 (byte) FILL#5 (byte) FILL#4 (byte) FILL#3 Alias (byte*) COLORS#10 = (byte*) COLORS#11 (byte*) COLORS#12 (byte*) COLORS#9 (byte*) COLORS#8 (byte*) COLORS#7 (byte*) COLORS#5 (byte*) COLORS#4 -Alias (byte) numpoints#20 = (byte) numpoints#27 (byte) numpoints#28 (byte) numpoints#26 (byte) numpoints#25 (byte) numpoints#24 (byte) numpoints#23 (byte) numpoints#21 Alias (byte[256]) XPOS#1 = (byte[256]) XPOS#9 (byte[256]) XPOS#21 (byte[256]) XPOS#27 (byte[256]) XPOS#2 (byte[256]) XPOS#34 Alias (byte[256]) YPOS#10 = (byte[256]) YPOS#21 (byte[256]) YPOS#25 (byte[256]) YPOS#30 (byte[256]) YPOS#9 (byte[256]) YPOS#32 Alias (byte*) COLORS#1 = (byte*) COLORS#6 (byte*) COLORS#2 (byte*) COLORS#3 Alias (byte[256]) COLS#23 = (byte[256]) COLS#29 (byte[256]) COLS#25 (byte[256]) COLS#26 -Alias (byte) numpoints#16 = (byte) numpoints#22 (byte) numpoints#18 (byte) numpoints#19 Alias (byte[256]) YPOS#1 = (byte[256]) YPOS#2 Alias (byte[256]) XPOS#10 = (byte[256]) XPOS#11 Alias (byte[256]) XPOS#3 = (byte[256]) XPOS#4 @@ -3340,7 +2852,7 @@ Alias (byte) render::y#2 = (byte) render::y#5 (byte) render::y#3 Alias (byte[256]) XPOS#19 = (byte[256]) XPOS#30 (byte[256]) XPOS#24 (byte[256]) XPOS#35 Alias (byte[256]) YPOS#19 = (byte[256]) YPOS#27 (byte[256]) YPOS#22 (byte[256]) YPOS#33 Alias (byte[256]) COLS#18 = (byte[256]) COLS#22 (byte[256]) COLS#20 (byte[256]) COLS#24 -Alias (byte) numpoints#12 = (byte) numpoints#15 (byte) numpoints#13 (byte) numpoints#17 +Alias (byte) numpoints#37 = (byte) numpoints#40 (byte) numpoints#38 (byte) numpoints#42 Alias (byte) render::col#0 = (byte~) render::$0 Alias (byte*) render::colline#1 = (byte*~) render::$2 Alias (byte) findcol::x#0 = (byte) findcol::x#5 @@ -3352,7 +2864,7 @@ Alias (byte) findcol::x#1 = (byte) findcol::x#7 Alias (byte) findcol::mindiff#10 = (byte) findcol::mindiff#9 Alias (byte[256]) COLS#16 = (byte[256]) COLS#17 Alias (byte) findcol::i#12 = (byte) findcol::i#2 -Alias (byte) numpoints#10 = (byte) numpoints#11 +Alias (byte) numpoints#35 = (byte) numpoints#36 Alias (byte[256]) XPOS#40 = (byte[256]) XPOS#8 Alias (byte[256]) YPOS#39 = (byte[256]) YPOS#8 Alias (byte) findcol::mincol#11 = (byte) findcol::mincol#12 @@ -3363,7 +2875,7 @@ Alias (byte) findcol::yp#5 = (byte) findcol::yp#7 (byte) findcol::yp#6 Alias (byte) findcol::mindiff#6 = (byte) findcol::mindiff#8 (byte) findcol::mindiff#7 Alias (byte[256]) COLS#13 = (byte[256]) COLS#15 (byte[256]) COLS#14 Alias (byte) findcol::i#10 = (byte) findcol::i#9 (byte) findcol::i#11 -Alias (byte) numpoints#7 = (byte) numpoints#9 (byte) numpoints#8 +Alias (byte) numpoints#32 = (byte) numpoints#34 (byte) numpoints#33 Alias (byte[256]) XPOS#37 = (byte[256]) XPOS#39 (byte[256]) XPOS#38 Alias (byte[256]) YPOS#36 = (byte[256]) YPOS#38 (byte[256]) YPOS#37 Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#8 (byte) findcol::mincol#9 @@ -3375,7 +2887,7 @@ Alias (byte) findcol::diff#4 = (byte) findcol::diff#8 (byte) findcol::diff#5 Alias (byte) findcol::mindiff#3 = (byte) findcol::mindiff#4 (byte) findcol::mindiff#5 Alias (byte[256]) COLS#10 = (byte[256]) COLS#11 (byte[256]) COLS#12 Alias (byte) findcol::i#6 = (byte) findcol::i#7 (byte) findcol::i#8 -Alias (byte) numpoints#4 = (byte) numpoints#5 (byte) numpoints#6 +Alias (byte) numpoints#27 = (byte) numpoints#28 (byte) numpoints#30 Alias (byte[256]) XPOS#31 = (byte[256]) XPOS#32 (byte[256]) XPOS#36 Alias (byte[256]) YPOS#28 = (byte[256]) YPOS#29 (byte[256]) YPOS#34 Alias (byte) findcol::x#10 = (byte) findcol::x#11 (byte) findcol::x#12 @@ -3385,7 +2897,7 @@ Alias (byte) findcol::diff#3 = (byte~) findcol::$11 Alias (byte) findcol::diff#6 = (byte) findcol::diff#7 (byte) findcol::mindiff#1 Alias (byte[256]) COLS#2 = (byte[256]) COLS#9 Alias (byte) findcol::i#3 = (byte) findcol::i#5 -Alias (byte) numpoints#2 = (byte) numpoints#3 +Alias (byte) numpoints#24 = (byte) numpoints#25 Alias (byte[256]) XPOS#25 = (byte[256]) XPOS#26 Alias (byte[256]) YPOS#23 = (byte[256]) YPOS#24 Alias (byte) findcol::x#8 = (byte) findcol::x#9 @@ -3396,15 +2908,17 @@ Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @BEGIN: from call main param-assignment + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN - (byte) numpoints#20 ← phi( @BEGIN/(byte) 6 ) (byte*) COLORS#10 ← phi( @BEGIN/(word) 55296 ) (byte) FILL#2 ← phi( @BEGIN/(byte) 230 ) (byte*) SCREEN#1 ← phi( @BEGIN/(word) 1024 ) (byte[256]) COLS#27 ← phi( @BEGIN/(word) 4608 ) (byte[256]) YPOS#13 ← phi( @BEGIN/(word) 4352 ) (byte[256]) XPOS#13 ← phi( @BEGIN/(word) 4096 ) + (byte) numpoints#22 ← phi( @BEGIN/(byte) 0 ) call addpoint param-assignment to:main::@3 main::@3: from main @@ -3428,9 +2942,9 @@ main::@8: from main::@7 main::@9: from main::@8 to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#16 ← phi( main::@11/(byte) numpoints#16 main::@9/(byte) numpoints#20 ) (byte[256]) COLS#23 ← phi( main::@11/(byte[256]) COLS#23 main::@9/(byte[256]) COLS#27 ) (byte[256]) YPOS#10 ← phi( main::@11/(byte[256]) YPOS#10 main::@9/(byte[256]) YPOS#13 ) + (byte) numpoints#1 ← phi( main::@11/(byte) numpoints#1 main::@9/(byte) numpoints#10 ) (byte[256]) XPOS#1 ← phi( main::@11/(byte[256]) XPOS#1 main::@9/(byte[256]) XPOS#13 ) (byte*) COLORS#1 ← phi( main::@11/(byte*) COLORS#1 main::@9/(byte*) COLORS#10 ) call render param-assignment @@ -3526,12 +3040,13 @@ addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte[256]) YPOS#7 ← phi( main/(byte[256]) YPOS#13 main::@3/(byte[256]) YPOS#13 main::@4/(byte[256]) YPOS#13 main::@5/(byte[256]) YPOS#13 main::@6/(byte[256]) YPOS#13 main::@7/(byte[256]) YPOS#13 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) numpoints#22 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte[256]) XPOS#7 ← phi( main/(byte[256]) XPOS#13 main::@3/(byte[256]) XPOS#13 main::@4/(byte[256]) XPOS#13 main::@5/(byte[256]) XPOS#13 main::@6/(byte[256]) XPOS#13 main::@7/(byte[256]) XPOS#13 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((byte[256]) XPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((byte[256]) YPOS#7 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((byte[256]) COLS#1 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((byte[256]) XPOS#7 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((byte[256]) YPOS#7 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((byte[256]) COLS#1 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -3554,7 +3069,7 @@ render: from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) @@ -3562,7 +3077,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 render::@5/(byte) numpoints#12 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 render::@5/(byte) numpoints#37 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#18 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#19 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#19 ) @@ -3593,7 +3108,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 findcol::@13/(byte) numpoints#1 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 findcol::@13/(byte) numpoints#21 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 findcol::@13/(byte[256]) COLS#19 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 findcol::@13/(byte) findcol::y#9 ) @@ -3614,7 +3129,7 @@ findcol::@3: from findcol::@1 findcol::@2 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@2/(byte) findcol::mincol#11 ) (byte[256]) YPOS#36 ← phi( findcol::@1/(byte[256]) YPOS#39 findcol::@2/(byte[256]) YPOS#39 ) (byte[256]) XPOS#37 ← phi( findcol::@1/(byte[256]) XPOS#40 findcol::@2/(byte[256]) XPOS#40 ) - (byte) numpoints#7 ← phi( findcol::@1/(byte) numpoints#10 findcol::@2/(byte) numpoints#10 ) + (byte) numpoints#32 ← phi( findcol::@1/(byte) numpoints#35 findcol::@2/(byte) numpoints#35 ) (byte) findcol::i#10 ← phi( findcol::@1/(byte) findcol::i#12 findcol::@2/(byte) findcol::i#12 ) (byte[256]) COLS#13 ← phi( findcol::@1/(byte[256]) COLS#16 findcol::@2/(byte[256]) COLS#16 ) (byte) findcol::mindiff#6 ← phi( findcol::@1/(byte) findcol::mindiff#10 findcol::@2/(byte) findcol::mindiff#10 ) @@ -3642,7 +3157,7 @@ findcol::@8: from findcol::@6 findcol::@7 (byte) findcol::x#10 ← phi( findcol::@6/(byte) findcol::x#2 findcol::@7/(byte) findcol::x#2 ) (byte[256]) YPOS#28 ← phi( findcol::@6/(byte[256]) YPOS#36 findcol::@7/(byte[256]) YPOS#36 ) (byte[256]) XPOS#31 ← phi( findcol::@6/(byte[256]) XPOS#37 findcol::@7/(byte[256]) XPOS#37 ) - (byte) numpoints#4 ← phi( findcol::@6/(byte) numpoints#7 findcol::@7/(byte) numpoints#7 ) + (byte) numpoints#27 ← phi( findcol::@6/(byte) numpoints#32 findcol::@7/(byte) numpoints#32 ) (byte) findcol::i#6 ← phi( findcol::@6/(byte) findcol::i#10 findcol::@7/(byte) findcol::i#10 ) (byte[256]) COLS#10 ← phi( findcol::@6/(byte[256]) COLS#13 findcol::@7/(byte[256]) COLS#13 ) (byte) findcol::mindiff#3 ← phi( findcol::@6/(byte) findcol::mindiff#6 findcol::@7/(byte) findcol::mindiff#6 ) @@ -3666,7 +3181,7 @@ findcol::@11: from findcol::@10 findcol::@9 (byte) findcol::x#8 ← phi( findcol::@10/(byte) findcol::x#10 findcol::@9/(byte) findcol::x#10 ) (byte[256]) YPOS#23 ← phi( findcol::@10/(byte[256]) YPOS#28 findcol::@9/(byte[256]) YPOS#28 ) (byte[256]) XPOS#25 ← phi( findcol::@10/(byte[256]) XPOS#31 findcol::@9/(byte[256]) XPOS#31 ) - (byte) numpoints#2 ← phi( findcol::@10/(byte) numpoints#4 findcol::@9/(byte) numpoints#4 ) + (byte) numpoints#24 ← phi( findcol::@10/(byte) numpoints#27 findcol::@9/(byte) numpoints#27 ) (byte) findcol::i#3 ← phi( findcol::@10/(byte) findcol::i#6 findcol::@9/(byte) findcol::i#6 ) (byte[256]) COLS#2 ← phi( findcol::@10/(byte[256]) COLS#10 findcol::@9/(byte[256]) COLS#10 ) (byte) findcol::mindiff#2 ← phi( findcol::@10/(byte) findcol::mindiff#3 findcol::@9/(byte) findcol::mindiff#3 ) @@ -3685,23 +3200,23 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::x#6 ← phi( findcol::@11/(byte) findcol::x#8 findcol::@12/(byte) findcol::x#8 ) (byte[256]) YPOS#20 ← phi( findcol::@11/(byte[256]) YPOS#23 findcol::@12/(byte[256]) YPOS#23 ) (byte[256]) XPOS#20 ← phi( findcol::@11/(byte[256]) XPOS#25 findcol::@12/(byte[256]) XPOS#25 ) - (byte) numpoints#1 ← phi( findcol::@11/(byte) numpoints#2 findcol::@12/(byte) numpoints#2 ) + (byte) numpoints#21 ← phi( findcol::@11/(byte) numpoints#24 findcol::@12/(byte) numpoints#24 ) (byte) findcol::i#4 ← phi( findcol::@11/(byte) findcol::i#3 findcol::@12/(byte) findcol::i#3 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#4 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#1 + (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#21 if((boolean~) findcol::$14) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 to:findcol::@return -@END: from @BEGIN +@END: from @7 +Redundant Phi (byte) numpoints#22 (byte) 0 Redundant Phi (byte[256]) XPOS#13 (word) 4096 Redundant Phi (byte[256]) YPOS#13 (word) 4352 Redundant Phi (byte[256]) COLS#27 (word) 4608 Redundant Phi (byte*) SCREEN#1 (word) 1024 Redundant Phi (byte) FILL#2 (byte) 230 Redundant Phi (byte*) COLORS#10 (word) 55296 -Redundant Phi (byte) numpoints#20 (byte) 6 Redundant Phi (byte[256]) YPOS#1 (byte[256]) YPOS#10 Redundant Phi (byte[256]) XPOS#10 (byte[256]) XPOS#1 Redundant Phi (byte[256]) XPOS#3 (byte[256]) XPOS#10 @@ -3720,7 +3235,7 @@ Redundant Phi (byte) findcol::yp#5 (byte) findcol::yp#0 Redundant Phi (byte) findcol::mindiff#6 (byte) findcol::mindiff#10 Redundant Phi (byte[256]) COLS#13 (byte[256]) COLS#16 Redundant Phi (byte) findcol::i#10 (byte) findcol::i#12 -Redundant Phi (byte) numpoints#7 (byte) numpoints#10 +Redundant Phi (byte) numpoints#32 (byte) numpoints#35 Redundant Phi (byte[256]) XPOS#37 (byte[256]) XPOS#40 Redundant Phi (byte[256]) YPOS#36 (byte[256]) YPOS#39 Redundant Phi (byte) findcol::mincol#10 (byte) findcol::mincol#11 @@ -3729,7 +3244,7 @@ Redundant Phi (byte) findcol::yp#2 (byte) findcol::yp#5 Redundant Phi (byte) findcol::mindiff#3 (byte) findcol::mindiff#6 Redundant Phi (byte[256]) COLS#10 (byte[256]) COLS#13 Redundant Phi (byte) findcol::i#6 (byte) findcol::i#10 -Redundant Phi (byte) numpoints#4 (byte) numpoints#7 +Redundant Phi (byte) numpoints#27 (byte) numpoints#32 Redundant Phi (byte[256]) XPOS#31 (byte[256]) XPOS#37 Redundant Phi (byte[256]) YPOS#28 (byte[256]) YPOS#36 Redundant Phi (byte) findcol::x#10 (byte) findcol::x#2 @@ -3737,14 +3252,14 @@ Redundant Phi (byte) findcol::mincol#5 (byte) findcol::mincol#10 Redundant Phi (byte) findcol::mindiff#2 (byte) findcol::mindiff#3 Redundant Phi (byte[256]) COLS#2 (byte[256]) COLS#10 Redundant Phi (byte) findcol::i#3 (byte) findcol::i#6 -Redundant Phi (byte) numpoints#2 (byte) numpoints#4 +Redundant Phi (byte) numpoints#24 (byte) numpoints#27 Redundant Phi (byte[256]) XPOS#25 (byte[256]) XPOS#31 Redundant Phi (byte[256]) YPOS#23 (byte[256]) YPOS#28 Redundant Phi (byte) findcol::x#8 (byte) findcol::x#10 Redundant Phi (byte) findcol::mincol#4 (byte) findcol::mincol#5 Redundant Phi (byte) findcol::y#11 (byte) findcol::y#2 Redundant Phi (byte) findcol::i#4 (byte) findcol::i#3 -Redundant Phi (byte) numpoints#1 (byte) numpoints#2 +Redundant Phi (byte) numpoints#21 (byte) numpoints#24 Redundant Phi (byte[256]) XPOS#20 (byte[256]) XPOS#25 Redundant Phi (byte[256]) YPOS#20 (byte[256]) YPOS#23 Redundant Phi (byte) findcol::x#6 (byte) findcol::x#8 @@ -3754,6 +3269,8 @@ Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @BEGIN: from call main param-assignment + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN call addpoint param-assignment @@ -3779,9 +3296,9 @@ main::@8: from main::@7 main::@9: from main::@8 to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#16 ← phi( main::@11/(byte) numpoints#16 main::@9/(byte) 6 ) (byte[256]) COLS#23 ← phi( main::@11/(byte[256]) COLS#23 main::@9/(word) 4608 ) (byte[256]) YPOS#10 ← phi( main::@11/(byte[256]) YPOS#10 main::@9/(word) 4352 ) + (byte) numpoints#1 ← phi( main::@11/(byte) numpoints#1 main::@9/(byte) numpoints#10 ) (byte[256]) XPOS#1 ← phi( main::@11/(byte[256]) XPOS#1 main::@9/(word) 4096 ) (byte*) COLORS#1 ← phi( main::@11/(byte*) COLORS#1 main::@9/(word) 55296 ) call render param-assignment @@ -3867,11 +3384,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -3894,7 +3412,7 @@ render: from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) @@ -3902,7 +3420,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 render::@5/(byte) numpoints#12 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 render::@5/(byte) numpoints#37 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 render::@5/(byte[256]) COLS#18 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 render::@5/(byte[256]) YPOS#19 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 render::@5/(byte[256]) XPOS#19 ) @@ -3933,7 +3451,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 findcol::@13/(byte) numpoints#10 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 findcol::@13/(byte) numpoints#35 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 findcol::@13/(byte[256]) COLS#16 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 findcol::@13/(byte) findcol::y#1 ) @@ -3991,35 +3509,37 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#10 + (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#35 if((boolean~) findcol::$14) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 to:findcol::@return -@END: from @BEGIN +@END: from @7 Self Phi Eliminated (byte*) COLORS#1 Self Phi Eliminated (byte[256]) XPOS#1 +Self Phi Eliminated (byte) numpoints#1 Self Phi Eliminated (byte[256]) YPOS#10 Self Phi Eliminated (byte[256]) COLS#23 -Self Phi Eliminated (byte) numpoints#16 Self Phi Eliminated (byte) FILL#1 Self Phi Eliminated (byte) render::y#2 Self Phi Eliminated (byte*) render::colline#2 Self Phi Eliminated (byte[256]) XPOS#19 Self Phi Eliminated (byte[256]) YPOS#19 Self Phi Eliminated (byte[256]) COLS#18 -Self Phi Eliminated (byte) numpoints#12 +Self Phi Eliminated (byte) numpoints#37 Self Phi Eliminated (byte[256]) XPOS#40 Self Phi Eliminated (byte[256]) YPOS#39 Self Phi Eliminated (byte) findcol::x#1 Self Phi Eliminated (byte) findcol::y#1 Self Phi Eliminated (byte[256]) COLS#16 -Self Phi Eliminated (byte) numpoints#10 +Self Phi Eliminated (byte) numpoints#35 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @BEGIN: from call main param-assignment + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN call addpoint param-assignment @@ -4045,9 +3565,9 @@ main::@8: from main::@7 main::@9: from main::@8 to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#16 ← phi( main::@9/(byte) 6 ) (byte[256]) COLS#23 ← phi( main::@9/(word) 4608 ) (byte[256]) YPOS#10 ← phi( main::@9/(word) 4352 ) + (byte) numpoints#1 ← phi( main::@9/(byte) numpoints#10 ) (byte[256]) XPOS#1 ← phi( main::@9/(word) 4096 ) (byte*) COLORS#1 ← phi( main::@9/(word) 55296 ) call render param-assignment @@ -4133,11 +3653,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -4160,7 +3681,7 @@ render: from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) @@ -4168,7 +3689,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) @@ -4199,7 +3720,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) @@ -4257,12 +3778,12 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#10 + (boolean~) findcol::$14 ← (byte) findcol::i#1 < (byte) numpoints#35 if((boolean~) findcol::$14) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 to:findcol::@return -@END: from @BEGIN +@END: from @7 Simple Condition (boolean~) animate::$3 if((byte~) animate::$2==(byte) 40) goto animate::@1 Simple Condition (boolean~) animate::$7 if((byte~) animate::$6==(byte) 25) goto animate::@3 @@ -4278,11 +3799,13 @@ Simple Condition (boolean~) findcol::$3 if((byte) findcol::y#1==(byte) findcol:: Simple Condition (boolean~) findcol::$4 if((byte) findcol::x#1<(byte) findcol::xp#0) goto findcol::@6 Simple Condition (boolean~) findcol::$7 if((byte) findcol::y#1<(byte) findcol::yp#0) goto findcol::@9 Simple Condition (boolean~) findcol::$12 if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 -Simple Condition (boolean~) findcol::$14 if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 +Simple Condition (boolean~) findcol::$14 if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @BEGIN: from call main param-assignment + to:@7 +@7: from @BEGIN to:@END main: from @BEGIN call addpoint param-assignment @@ -4308,9 +3831,9 @@ main::@8: from main::@7 main::@9: from main::@8 to:main::@1 main::@1: from main::@11 main::@9 - (byte) numpoints#16 ← phi( main::@9/(byte) 6 ) (byte[256]) COLS#23 ← phi( main::@9/(word) 4608 ) (byte[256]) YPOS#10 ← phi( main::@9/(word) 4352 ) + (byte) numpoints#1 ← phi( main::@9/(byte) numpoints#10 ) (byte[256]) XPOS#1 ← phi( main::@9/(word) 4096 ) (byte*) COLORS#1 ← phi( main::@9/(word) 55296 ) call render param-assignment @@ -4390,11 +3913,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -4416,7 +3940,7 @@ render: from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) @@ -4424,7 +3948,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) @@ -4453,7 +3977,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) @@ -4506,12 +4030,13 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 to:findcol::@27 findcol::@27: from findcol::@13 to:findcol::@return -@END: from @BEGIN +@END: from @7 +Culled Empty Block (label) @7 Culled Empty Block (label) main::@9 Culled Empty Block (label) findcol::@4 Culled Empty Block (label) findcol::@27 @@ -4542,9 +4067,9 @@ main::@8: from main::@7 call initscreen param-assignment to:main::@1 main::@1: from main::@11 main::@8 - (byte) numpoints#16 ← phi( main::@8/(byte) 6 ) (byte[256]) COLS#23 ← phi( main::@8/(word) 4608 ) (byte[256]) YPOS#10 ← phi( main::@8/(word) 4352 ) + (byte) numpoints#1 ← phi( main::@8/(byte) numpoints#10 ) (byte[256]) XPOS#1 ← phi( main::@8/(word) 4096 ) (byte*) COLORS#1 ← phi( main::@8/(word) 55296 ) call render param-assignment @@ -4624,11 +4149,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -4650,7 +4176,7 @@ render: from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) numpoints#16 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(byte[256]) COLS#23 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(byte[256]) YPOS#10 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(byte[256]) XPOS#1 render::@3/(byte[256]) XPOS#19 ) @@ -4658,7 +4184,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) @@ -4687,7 +4213,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) @@ -4738,7 +4264,7 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 to:findcol::@return @END: from @BEGIN @@ -4746,7 +4272,6 @@ Constant (byte*) COLORS#1 (word) 55296 Constant (byte[256]) XPOS#1 (word) 4096 Constant (byte[256]) YPOS#10 (word) 4352 Constant (byte[256]) COLS#23 (word) 4608 -Constant (byte) numpoints#16 (byte) 6 Constant (byte*) initscreen::screen#0 (word) 1024 Constant (byte) FILL#1 (byte) 230 Succesful SSA optimization Pass2ConstantPropagation @@ -4776,6 +4301,7 @@ main::@8: from main::@7 call initscreen param-assignment to:main::@1 main::@1: from main::@11 main::@8 + (byte) numpoints#1 ← phi( main::@8/(byte) numpoints#10 ) call render param-assignment to:main::@10 main::@10: from main::@1 @@ -4853,11 +4379,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -4877,7 +4404,7 @@ render: from main::@1 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) 6 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(word) 4608 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(word) 4352 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(word) 4096 render::@3/(byte[256]) XPOS#19 ) @@ -4885,7 +4412,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) @@ -4914,7 +4441,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) @@ -4965,7 +4492,7 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 to:findcol::@return @END: from @BEGIN @@ -5021,6 +4548,7 @@ main::@8: from main::@7 call initscreen param-assignment to:main::@1 main::@1: from main::@11 main::@8 + (byte) numpoints#1 ← phi( main::@8/(byte) numpoints#10 ) call render param-assignment to:main::@10 main::@10: from main::@1 @@ -5098,11 +4626,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#10 main::@4/(byte) numpoints#10 main::@5/(byte) numpoints#10 main::@6/(byte) numpoints#10 main::@7/(byte) numpoints#10 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#10 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -5122,7 +4651,7 @@ render: from main::@1 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#14 ← phi( render/(byte) 6 render::@3/(byte) numpoints#12 ) + (byte) numpoints#39 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#37 ) (byte[256]) COLS#21 ← phi( render/(word) 4608 render::@3/(byte[256]) COLS#18 ) (byte[256]) YPOS#26 ← phi( render/(word) 4352 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#29 ← phi( render/(word) 4096 render::@3/(byte[256]) XPOS#19 ) @@ -5130,7 +4659,7 @@ render::@1: from render render::@3 (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: from render::@1 render::@5 - (byte) numpoints#12 ← phi( render::@1/(byte) numpoints#14 ) + (byte) numpoints#37 ← phi( render::@1/(byte) numpoints#39 ) (byte[256]) COLS#18 ← phi( render::@1/(byte[256]) COLS#21 ) (byte[256]) YPOS#19 ← phi( render::@1/(byte[256]) YPOS#26 ) (byte[256]) XPOS#19 ← phi( render::@1/(byte[256]) XPOS#29 ) @@ -5159,7 +4688,7 @@ findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) - (byte) numpoints#10 ← phi( findcol/(byte) numpoints#12 ) + (byte) numpoints#35 ← phi( findcol/(byte) numpoints#37 ) (byte[256]) COLS#16 ← phi( findcol/(byte[256]) COLS#18 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) (byte) findcol::y#1 ← phi( findcol/(byte) findcol::y#0 ) @@ -5210,19 +4739,20 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 to:findcol::@return @END: from @BEGIN Not aliassing across scopes: findcol::x#0 render::x#2 Not aliassing across scopes: findcol::y#0 render::y#2 Not aliassing across scopes: render::col#0 findcol::return#0 +Alias (byte) numpoints#1 = (byte) numpoints#10 Alias (byte) render::y#2 = (byte) render::y#4 Alias (byte*) render::colline#2 = (byte*) render::colline#5 Alias (byte[256]) XPOS#19 = (byte[256]) XPOS#29 (byte[256]) XPOS#40 Alias (byte[256]) YPOS#19 = (byte[256]) YPOS#26 (byte[256]) YPOS#39 Alias (byte[256]) COLS#16 = (byte[256]) COLS#18 (byte[256]) COLS#21 -Alias (byte) numpoints#10 = (byte) numpoints#12 (byte) numpoints#14 +Alias (byte) numpoints#35 = (byte) numpoints#37 (byte) numpoints#39 Alias (byte) findcol::x#0 = (byte) findcol::x#1 Alias (byte) findcol::y#0 = (byte) findcol::y#1 Succesful SSA optimization Pass2AliasElimination @@ -5329,11 +4859,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#1 main::@4/(byte) numpoints#1 main::@5/(byte) numpoints#1 main::@6/(byte) numpoints#1 main::@7/(byte) numpoints#1 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#1 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -5353,7 +4884,7 @@ render: from main::@1 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#10 ← phi( render/(byte) 6 render::@3/(byte) numpoints#10 ) + (byte) numpoints#35 ← phi( render/(byte) numpoints#1 render::@3/(byte) numpoints#35 ) (byte[256]) COLS#16 ← phi( render/(word) 4608 render::@3/(byte[256]) COLS#16 ) (byte[256]) YPOS#19 ← phi( render/(word) 4352 render::@3/(byte[256]) YPOS#19 ) (byte[256]) XPOS#19 ← phi( render/(word) 4096 render::@3/(byte[256]) XPOS#19 ) @@ -5429,14 +4960,14 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 to:findcol::@return @END: from @BEGIN Self Phi Eliminated (byte[256]) XPOS#19 Self Phi Eliminated (byte[256]) YPOS#19 Self Phi Eliminated (byte[256]) COLS#16 -Self Phi Eliminated (byte) numpoints#10 +Self Phi Eliminated (byte) numpoints#35 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @BEGIN: from @@ -5541,11 +5072,12 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#1 main::@4/(byte) numpoints#1 main::@5/(byte) numpoints#1 main::@6/(byte) numpoints#1 main::@7/(byte) numpoints#1 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#1 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -5565,7 +5097,7 @@ render: from main::@1 (byte*) render::colline#0 ← (word) 55296 to:render::@1 render::@1: from render render::@3 - (byte) numpoints#10 ← phi( render/(byte) 6 ) + (byte) numpoints#35 ← phi( render/(byte) numpoints#1 ) (byte[256]) COLS#16 ← phi( render/(word) 4608 ) (byte[256]) YPOS#19 ← phi( render/(word) 4352 ) (byte[256]) XPOS#19 ← phi( render/(word) 4096 ) @@ -5641,7 +5173,7 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) numpoints#10) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 to:findcol::@return @END: from @BEGIN @@ -5649,7 +5181,6 @@ Constant (byte*) render::colline#0 (word) 55296 Constant (byte[256]) XPOS#19 (word) 4096 Constant (byte[256]) YPOS#19 (word) 4352 Constant (byte[256]) COLS#16 (word) 4608 -Constant (byte) numpoints#10 (byte) 6 Succesful SSA optimization Pass2ConstantPropagation CONTROL FLOW GRAPH @BEGIN: from @@ -5754,11 +5285,224 @@ animate::@return: from animate::@11 animate::@8 animate::@9 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#1 main::@4/(byte) numpoints#1 main::@5/(byte) numpoints#1 main::@6/(byte) numpoints#1 main::@7/(byte) numpoints#1 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#1 ← ++ (byte) numpoints#19 + to:addpoint::@return +addpoint::@return: from addpoint + return + to:@RETURN +initscreen: from main::@8 + to:initscreen::@1 +initscreen::@1: from initscreen initscreen::@1 + (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@1/(byte*) initscreen::screen#1 ) + *((byte*) initscreen::screen#2) ← (byte) 230 + (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 + if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 + to:initscreen::@return +initscreen::@return: from initscreen::@1 + return + to:@RETURN +render: from main::@1 + to:render::@1 +render::@1: from render render::@3 + (byte) numpoints#35 ← phi( render/(byte) numpoints#1 ) + (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) + (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) + to:render::@2 +render::@2: from render::@1 render::@5 + (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) + (byte) findcol::x#0 ← (byte) render::x#2 + (byte) findcol::y#0 ← (byte) render::y#2 + call findcol param-assignment + to:render::@5 +render::@5: from render::@2 + (byte) render::col#0 ← (byte) findcol::return#0 + *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 + (byte) render::x#1 ← ++ (byte) render::x#2 + if((byte) render::x#1<(byte) 40) goto render::@2 + to:render::@3 +render::@3: from render::@5 + (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 + (byte) render::y#1 ← ++ (byte) render::y#2 + if((byte) render::y#1<(byte) 25) goto render::@1 + to:render::@return +render::@return: from render::@3 + return + to:@RETURN +findcol: from render::@2 + to:findcol::@1 +findcol::@1: from findcol findcol::@13 + (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) + (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) + (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) + (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 + (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 + if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 + to:findcol::@3 +findcol::@2: from findcol::@1 + if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return + to:findcol::@3 +findcol::@3: from findcol::@1 findcol::@2 + if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 + to:findcol::@7 +findcol::@return: from findcol::@13 findcol::@2 + (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) + return + to:@RETURN +findcol::@6: from findcol::@3 + (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 + to:findcol::@8 +findcol::@7: from findcol::@3 + (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 + to:findcol::@8 +findcol::@8: from findcol::@6 findcol::@7 + (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) + if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 + to:findcol::@10 +findcol::@9: from findcol::@8 + (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 + to:findcol::@11 +findcol::@10: from findcol::@8 + (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 + to:findcol::@11 +findcol::@11: from findcol::@10 findcol::@9 + (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) + if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 + to:findcol::@13 +findcol::@12: from findcol::@11 + (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 + to:findcol::@13 +findcol::@13: from findcol::@11 findcol::@12 + (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) + (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) + (byte) findcol::i#1 ← ++ (byte) findcol::i#12 + if((byte) findcol::i#1<(byte) numpoints#35) goto findcol::@1 + to:findcol::@return +@END: from @BEGIN + +Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 +Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 +Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 +Not aliassing across scopes: findcol::x#0 render::x#2 +Not aliassing across scopes: findcol::y#0 render::y#2 +Not aliassing across scopes: render::col#0 findcol::return#0 +Alias (byte) numpoints#1 = (byte) numpoints#35 +Succesful SSA optimization Pass2AliasElimination +CONTROL FLOW GRAPH +@BEGIN: from + call main param-assignment + to:@END +main: from @BEGIN + call addpoint param-assignment + to:main::@3 +main::@3: from main + call addpoint param-assignment + to:main::@4 +main::@4: from main::@3 + call addpoint param-assignment + to:main::@5 +main::@5: from main::@4 + call addpoint param-assignment + to:main::@6 +main::@6: from main::@5 + call addpoint param-assignment + to:main::@7 +main::@7: from main::@6 + call addpoint param-assignment + to:main::@8 +main::@8: from main::@7 + call initscreen param-assignment + to:main::@1 +main::@1: from main::@11 main::@8 + call render param-assignment + to:main::@10 +main::@10: from main::@1 + call animate param-assignment + to:main::@11 +main::@11: from main::@10 + if(true) goto main::@1 + to:main::@return +main::@return: from main::@11 + return + to:@RETURN +animate: from main::@10 + (byte~) animate::$0 ← * (word) 4096 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 + *((word) 4096) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (word) 4096 + if((byte~) animate::$2==(byte) 40) goto animate::@1 + to:animate::@2 +animate::@1: from animate + *((word) 4096) ← (byte) 0 + to:animate::@2 +animate::@2: from animate animate::@1 + (byte~) animate::$4 ← * (word) 4352 + (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 + *((word) 4352) ← (byte~) animate::$5 + (byte~) animate::$6 ← * (word) 4352 + if((byte~) animate::$6==(byte) 25) goto animate::@3 + to:animate::@4 +animate::@3: from animate::@2 + *((word) 4352) ← (byte) 0 + to:animate::@4 +animate::@4: from animate::@2 animate::@3 + (byte~) animate::$8 ← * (word) 4097 + (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 + *((word) 4097) ← (byte~) animate::$9 + (byte~) animate::$10 ← * (word) 4097 + if((byte~) animate::$10==(byte) 255) goto animate::@5 + to:animate::@6 +animate::@5: from animate::@4 + *((word) 4097) ← (byte) 40 + to:animate::@6 +animate::@6: from animate::@4 animate::@5 + (byte~) animate::$12 ← * (word) 4354 + (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 + *((word) 4354) ← (byte~) animate::$13 + (byte~) animate::$14 ← * (word) 4354 + if((byte~) animate::$14==(byte) 25) goto animate::@7 + to:animate::@8 +animate::@7: from animate::@6 + *((word) 4354) ← (byte) 0 + to:animate::@8 +animate::@8: from animate::@6 animate::@7 + (byte~) animate::$16 ← * (word) 4355 + (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 + *((word) 4355) ← (byte~) animate::$17 + (byte~) animate::$18 ← * (word) 4355 + if((byte~) animate::$18==(byte) 255) goto animate::@9 + to:animate::@return +animate::@9: from animate::@8 + *((word) 4355) ← (byte) 25 + (byte~) animate::$20 ← * (word) 4099 + (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 + *((word) 4099) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (word) 4099 + if((byte~) animate::$22>=(byte) 40) goto animate::@11 + to:animate::@return +animate::@11: from animate::@9 + (byte~) animate::$24 ← * (word) 4099 + (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 + *((word) 4099) ← (byte~) animate::$25 + to:animate::@return +animate::@return: from animate::@11 animate::@8 animate::@9 + return + to:@RETURN +addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 + (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) + (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#1 main::@4/(byte) numpoints#1 main::@5/(byte) numpoints#1 main::@6/(byte) numpoints#1 main::@7/(byte) numpoints#1 ) + (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#1 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -5849,16 +5593,10 @@ findcol::@13: from findcol::@11 findcol::@12 (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte) findcol::diff#6 ) (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) 6) goto findcol::@1 + if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 to:findcol::@return @END: from @BEGIN -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 -Not aliassing across scopes: findcol::x#0 render::x#2 -Not aliassing across scopes: findcol::y#0 render::y#2 -Not aliassing across scopes: render::col#0 findcol::return#0 Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#12 @@ -5882,18 +5620,23 @@ main: from @BEGIN call addpoint param-assignment to:main::@3 main::@3: from main + (byte~) numpoints#43 ← (byte) numpoints#1 call addpoint param-assignment to:main::@4 main::@4: from main::@3 + (byte~) numpoints#44 ← (byte) numpoints#1 call addpoint param-assignment to:main::@5 main::@5: from main::@4 + (byte~) numpoints#45 ← (byte) numpoints#1 call addpoint param-assignment to:main::@6 main::@6: from main::@5 + (byte~) numpoints#46 ← (byte) numpoints#1 call addpoint param-assignment to:main::@7 main::@7: from main::@6 + (byte~) numpoints#47 ← (byte) numpoints#1 call addpoint param-assignment to:main::@8 main::@8: from main::@7 @@ -6045,7 +5788,7 @@ findcol::@13: from findcol::@12 findcol::@30 (byte) findcol::mindiff#11 ← phi( findcol::@30/(byte~) findcol::mindiff#13 findcol::@12/(byte~) findcol::diff#13 ) (byte) findcol::mincol#2 ← phi( findcol::@30/(byte~) findcol::mincol#14 findcol::@12/(byte~) findcol::mincol#15 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#12 - if((byte) findcol::i#1<(byte) 6) goto findcol::@29 + if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@29 to:findcol::@31 findcol::@31: from findcol::@13 (byte~) findcol::mincol#16 ← (byte) findcol::mincol#2 @@ -6093,11 +5836,12 @@ initscreen::@3: from initscreen::@1 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) - (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) + (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte~) numpoints#43 main::@4/(byte~) numpoints#44 main::@5/(byte~) numpoints#45 main::@6/(byte~) numpoints#46 main::@7/(byte~) numpoints#47 ) (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) - *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 - *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 - *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 + *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 + *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 + *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 + (byte) numpoints#1 ← ++ (byte) numpoints#19 to:addpoint::@return addpoint::@return: from addpoint return @@ -6124,253 +5868,269 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... CONTROL FLOW GRAPH - LIVE RANGES @BEGIN: from [0] call main param-assignment [ ] to:@END @END: from @BEGIN main: from @BEGIN - [1] call addpoint param-assignment [ ] + [1] call addpoint param-assignment [ numpoints#1 ] to:main::@3 main::@3: from main - [2] call addpoint param-assignment [ ] + [2] (byte~) numpoints#43 ← (byte) numpoints#1 [ numpoints#43 ] + [3] call addpoint param-assignment [ numpoints#1 ] to:main::@4 main::@4: from main::@3 - [3] call addpoint param-assignment [ ] + [4] (byte~) numpoints#44 ← (byte) numpoints#1 [ numpoints#44 ] + [5] call addpoint param-assignment [ numpoints#1 ] to:main::@5 main::@5: from main::@4 - [4] call addpoint param-assignment [ ] + [6] (byte~) numpoints#45 ← (byte) numpoints#1 [ numpoints#45 ] + [7] call addpoint param-assignment [ numpoints#1 ] to:main::@6 main::@6: from main::@5 - [5] call addpoint param-assignment [ ] + [8] (byte~) numpoints#46 ← (byte) numpoints#1 [ numpoints#46 ] + [9] call addpoint param-assignment [ numpoints#1 ] to:main::@7 main::@7: from main::@6 - [6] call addpoint param-assignment [ ] + [10] (byte~) numpoints#47 ← (byte) numpoints#1 [ numpoints#47 ] + [11] call addpoint param-assignment [ ] to:main::@8 main::@8: from main::@7 - [7] call initscreen param-assignment [ ] + [12] call initscreen param-assignment [ ] to:main::@1 main::@1: from main::@11 main::@8 - [8] call render param-assignment [ ] + [13] call render param-assignment [ ] to:main::@10 main::@10: from main::@1 - [9] call animate param-assignment [ ] + [14] call animate param-assignment [ ] to:main::@11 main::@11: from main::@10 - [10] if(true) goto main::@1 [ ] + [15] if(true) goto main::@1 [ ] to:main::@return main::@return: from main::@11 - [11] return [ ] + [16] return [ ] to:@RETURN animate: from main::@10 - [12] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 ] - [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] - [14] *((word) 4096) ← (byte~) animate::$1 [ ] - [15] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 ] - [16] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ ] + [17] (byte~) animate::$0 ← * (word) 4096 [ animate::$0 ] + [18] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] + [19] *((word) 4096) ← (byte~) animate::$1 [ ] + [20] (byte~) animate::$2 ← * (word) 4096 [ animate::$2 ] + [21] if((byte~) animate::$2==(byte) 40) goto animate::@1 [ ] to:animate::@2 animate::@2: from animate animate::@1 - [17] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 ] - [18] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 ] - [19] *((word) 4352) ← (byte~) animate::$5 [ ] - [20] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 ] - [21] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ ] + [22] (byte~) animate::$4 ← * (word) 4352 [ animate::$4 ] + [23] (byte~) animate::$5 ← (byte~) animate::$4 + (byte) 1 [ animate::$5 ] + [24] *((word) 4352) ← (byte~) animate::$5 [ ] + [25] (byte~) animate::$6 ← * (word) 4352 [ animate::$6 ] + [26] if((byte~) animate::$6==(byte) 25) goto animate::@3 [ ] to:animate::@4 animate::@4: from animate::@2 animate::@3 - [22] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 ] - [23] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 ] - [24] *((word) 4097) ← (byte~) animate::$9 [ ] - [25] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 ] - [26] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ ] + [27] (byte~) animate::$8 ← * (word) 4097 [ animate::$8 ] + [28] (byte~) animate::$9 ← (byte~) animate::$8 - (byte) 1 [ animate::$9 ] + [29] *((word) 4097) ← (byte~) animate::$9 [ ] + [30] (byte~) animate::$10 ← * (word) 4097 [ animate::$10 ] + [31] if((byte~) animate::$10==(byte) 255) goto animate::@5 [ ] to:animate::@6 animate::@6: from animate::@4 animate::@5 - [27] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 ] - [28] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 ] - [29] *((word) 4354) ← (byte~) animate::$13 [ ] - [30] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 ] - [31] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ ] + [32] (byte~) animate::$12 ← * (word) 4354 [ animate::$12 ] + [33] (byte~) animate::$13 ← (byte~) animate::$12 + (byte) 1 [ animate::$13 ] + [34] *((word) 4354) ← (byte~) animate::$13 [ ] + [35] (byte~) animate::$14 ← * (word) 4354 [ animate::$14 ] + [36] if((byte~) animate::$14==(byte) 25) goto animate::@7 [ ] to:animate::@8 animate::@8: from animate::@6 animate::@7 - [32] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 ] - [33] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 ] - [34] *((word) 4355) ← (byte~) animate::$17 [ ] - [35] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 ] - [36] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ ] + [37] (byte~) animate::$16 ← * (word) 4355 [ animate::$16 ] + [38] (byte~) animate::$17 ← (byte~) animate::$16 - (byte) 1 [ animate::$17 ] + [39] *((word) 4355) ← (byte~) animate::$17 [ ] + [40] (byte~) animate::$18 ← * (word) 4355 [ animate::$18 ] + [41] if((byte~) animate::$18==(byte) 255) goto animate::@9 [ ] to:animate::@return animate::@return: from animate::@11 animate::@8 animate::@9 - [37] return [ ] + [42] return [ ] to:@RETURN animate::@9: from animate::@8 - [38] *((word) 4355) ← (byte) 25 [ ] - [39] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 ] - [40] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 ] - [41] *((word) 4099) ← (byte~) animate::$21 [ ] - [42] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 ] - [43] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ ] + [43] *((word) 4355) ← (byte) 25 [ ] + [44] (byte~) animate::$20 ← * (word) 4099 [ animate::$20 ] + [45] (byte~) animate::$21 ← (byte~) animate::$20 + (byte) 7 [ animate::$21 ] + [46] *((word) 4099) ← (byte~) animate::$21 [ ] + [47] (byte~) animate::$22 ← * (word) 4099 [ animate::$22 ] + [48] if((byte~) animate::$22>=(byte) 40) goto animate::@11 [ ] to:animate::@return animate::@11: from animate::@9 - [44] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 ] - [45] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 ] - [46] *((word) 4099) ← (byte~) animate::$25 [ ] + [49] (byte~) animate::$24 ← * (word) 4099 [ animate::$24 ] + [50] (byte~) animate::$25 ← (byte~) animate::$24 - (byte) 40 [ animate::$25 ] + [51] *((word) 4099) ← (byte~) animate::$25 [ ] to:animate::@return animate::@7: from animate::@6 - [47] *((word) 4354) ← (byte) 0 [ ] + [52] *((word) 4354) ← (byte) 0 [ ] to:animate::@8 animate::@5: from animate::@4 - [48] *((word) 4097) ← (byte) 40 [ ] + [53] *((word) 4097) ← (byte) 40 [ ] to:animate::@6 animate::@3: from animate::@2 - [49] *((word) 4352) ← (byte) 0 [ ] + [54] *((word) 4352) ← (byte) 0 [ ] to:animate::@4 animate::@1: from animate - [50] *((word) 4096) ← (byte) 0 [ ] + [55] *((word) 4096) ← (byte) 0 [ ] to:animate::@2 render: from main::@1 to:render::@1 render::@1: from render render::@6 - [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@6/(byte*~) render::colline#6 ) [ render::y#2 render::colline#2 ] - [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) [ render::y#2 render::colline#2 ] + [56] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@6/(byte*~) render::colline#6 ) [ numpoints#1 render::y#2 render::colline#2 ] + [56] (byte) render::y#2 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) [ numpoints#1 render::y#2 render::colline#2 ] to:render::@2 render::@2: from render::@1 render::@7 - [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@7/(byte~) render::x#4 ) [ render::x#2 render::y#2 render::colline#2 ] - [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] - [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] - [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [57] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@7/(byte~) render::x#4 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 ] + [58] (byte) findcol::x#0 ← (byte) render::x#2 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::x#0 ] + [59] (byte) findcol::y#0 ← (byte) render::y#2 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] + [60] call findcol param-assignment [ numpoints#1 render::x#2 render::y#2 findcol::return#0 render::colline#2 ] to:render::@5 render::@5: from render::@2 - [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] - [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] - [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#2 render::colline#2 render::x#1 ] - [59] if((byte) render::x#1<(byte) 40) goto render::@7 [ render::y#2 render::colline#2 render::x#1 ] + [61] (byte) render::col#0 ← (byte) findcol::return#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 render::col#0 ] + [62] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 ] + [63] (byte) render::x#1 ← ++ (byte) render::x#2 [ numpoints#1 render::y#2 render::colline#2 render::x#1 ] + [64] if((byte) render::x#1<(byte) 40) goto render::@7 [ numpoints#1 render::y#2 render::colline#2 render::x#1 ] to:render::@3 render::@3: from render::@5 - [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::y#2 render::colline#1 ] - [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] - [62] if((byte) render::y#1<(byte) 25) goto render::@6 [ render::y#1 render::colline#1 ] + [65] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ numpoints#1 render::y#2 render::colline#1 ] + [66] (byte) render::y#1 ← ++ (byte) render::y#2 [ numpoints#1 render::y#1 render::colline#1 ] + [67] if((byte) render::y#1<(byte) 25) goto render::@6 [ numpoints#1 render::y#1 render::colline#1 ] to:render::@return render::@return: from render::@3 - [63] return [ ] + [68] return [ ] to:@RETURN render::@6: from render::@3 - [64] (byte~) render::y#6 ← (byte) render::y#1 [ render::y#6 render::colline#1 ] - [65] (byte*~) render::colline#6 ← (byte*) render::colline#1 [ render::y#6 render::colline#6 ] + [69] (byte~) render::y#6 ← (byte) render::y#1 [ numpoints#1 render::y#6 render::colline#1 ] + [70] (byte*~) render::colline#6 ← (byte*) render::colline#1 [ numpoints#1 render::y#6 render::colline#6 ] to:render::@1 render::@7: from render::@5 - [66] (byte~) render::x#4 ← (byte) render::x#1 [ render::x#4 render::y#2 render::colline#2 ] + [71] (byte~) render::x#4 ← (byte) render::x#1 [ numpoints#1 render::x#4 render::y#2 render::colline#2 ] to:render::@2 findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@29 - [67] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::mincol#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [67] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@29/(byte~) findcol::mindiff#12 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [67] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::i#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [68] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [69] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [70] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::mincol#13 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@29/(byte~) findcol::mindiff#12 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@29/(byte~) findcol::i#13 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [73] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] + [74] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [75] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 - [71] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [76] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@7 findcol::@7: from findcol::@3 - [72] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [73] (byte~) findcol::diff#10 ← (byte) findcol::diff#1 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#10 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [77] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [78] (byte~) findcol::diff#10 ← (byte) findcol::diff#1 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#10 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@8: from findcol::@6 findcol::@7 - [74] (byte) findcol::diff#4 ← phi( findcol::@6/(byte~) findcol::diff#9 findcol::@7/(byte~) findcol::diff#10 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] - [75] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [79] (byte) findcol::diff#4 ← phi( findcol::@6/(byte~) findcol::diff#9 findcol::@7/(byte~) findcol::diff#10 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [80] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@10 findcol::@10: from findcol::@8 - [76] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] - [77] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] - [78] (byte~) findcol::diff#11 ← (byte) findcol::diff#3 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#11 findcol::mindiff#10 findcol::mincol#11 ] + [81] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] + [82] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] + [83] (byte~) findcol::diff#11 ← (byte) findcol::diff#3 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#11 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@11: from findcol::@10 findcol::@9 - [79] (byte) findcol::diff#6 ← phi( findcol::@10/(byte~) findcol::diff#11 findcol::@9/(byte~) findcol::diff#12 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] - [80] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [84] (byte) findcol::diff#6 ← phi( findcol::@10/(byte~) findcol::diff#11 findcol::@9/(byte~) findcol::diff#12 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [85] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@30 findcol::@30: from findcol::@11 - [81] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#11 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#14 ] - [82] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#14 findcol::mindiff#13 ] + [86] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#11 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#14 ] + [87] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#10 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#14 findcol::mindiff#13 ] to:findcol::@13 findcol::@13: from findcol::@12 findcol::@30 - [83] (byte) findcol::mindiff#11 ← phi( findcol::@30/(byte~) findcol::mindiff#13 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] - [83] (byte) findcol::mincol#2 ← phi( findcol::@30/(byte~) findcol::mincol#14 findcol::@12/(byte~) findcol::mincol#15 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] - [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] - [85] if((byte) findcol::i#1<(byte) 6) goto findcol::@29 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] + [88] (byte) findcol::mindiff#11 ← phi( findcol::@30/(byte~) findcol::mindiff#13 findcol::@12/(byte~) findcol::diff#13 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] + [88] (byte) findcol::mincol#2 ← phi( findcol::@30/(byte~) findcol::mincol#14 findcol::@12/(byte~) findcol::mincol#15 ) [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] + [89] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] + [90] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@29 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] to:findcol::@31 findcol::@31: from findcol::@13 - [86] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#2 [ render::x#2 render::y#2 render::colline#2 findcol::mincol#16 ] + [91] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#2 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::mincol#16 ] to:findcol::@return findcol::@return: from findcol::@2 findcol::@31 - [87] (byte) findcol::return#0 ← phi( findcol::@31/(byte~) findcol::mincol#16 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] - [88] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [92] (byte) findcol::return#0 ← phi( findcol::@31/(byte~) findcol::mincol#16 findcol::@2/(byte) 0 ) [ numpoints#1 render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [93] return [ numpoints#1 render::x#2 render::y#2 findcol::return#0 render::colline#2 ] to:@RETURN findcol::@29: from findcol::@13 - [89] (byte~) findcol::i#13 ← (byte) findcol::i#1 [ render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] - [90] (byte~) findcol::mindiff#12 ← (byte) findcol::mindiff#11 [ render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::mindiff#12 findcol::x#0 findcol::y#0 findcol::mincol#2 ] - [91] (byte~) findcol::mincol#13 ← (byte) findcol::mincol#2 [ render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::mindiff#12 findcol::mincol#13 findcol::x#0 findcol::y#0 ] + [94] (byte~) findcol::i#13 ← (byte) findcol::i#1 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 ] + [95] (byte~) findcol::mindiff#12 ← (byte) findcol::mindiff#11 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::mindiff#12 findcol::x#0 findcol::y#0 findcol::mincol#2 ] + [96] (byte~) findcol::mincol#13 ← (byte) findcol::mincol#2 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#13 findcol::mindiff#12 findcol::mincol#13 findcol::x#0 findcol::y#0 ] to:findcol::@1 findcol::@12: from findcol::@11 - [92] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] - [93] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#15 ] - [94] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#15 findcol::diff#13 ] + [97] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] + [98] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#15 ] + [99] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#15 findcol::diff#13 ] to:findcol::@13 findcol::@9: from findcol::@8 - [95] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] - [96] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#2 ] - [97] (byte~) findcol::diff#12 ← (byte) findcol::diff#2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#12 findcol::mindiff#10 findcol::mincol#11 ] + [100] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] + [101] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#2 ] + [102] (byte~) findcol::diff#12 ← (byte) findcol::diff#2 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#12 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@11 findcol::@6: from findcol::@3 - [98] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#0 ] - [99] (byte~) findcol::diff#9 ← (byte) findcol::diff#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#9 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [103] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 findcol::diff#0 ] + [104] (byte~) findcol::diff#9 ← (byte) findcol::diff#0 [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#9 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@8 findcol::@2: from findcol::@1 - [100] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [105] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ numpoints#1 render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] to:findcol::@3 initscreen: from main::@8 to:initscreen::@1 initscreen::@1: from initscreen initscreen::@3 - [101] (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@3/(byte*~) initscreen::screen#3 ) [ initscreen::screen#2 ] - [102] *((byte*) initscreen::screen#2) ← (byte) 230 [ initscreen::screen#2 ] - [103] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] - [104] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@3 [ initscreen::screen#1 ] + [106] (byte*) initscreen::screen#2 ← phi( initscreen/(word) 1024 initscreen::@3/(byte*~) initscreen::screen#3 ) [ initscreen::screen#2 ] + [107] *((byte*) initscreen::screen#2) ← (byte) 230 [ initscreen::screen#2 ] + [108] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] + [109] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@3 [ initscreen::screen#1 ] to:initscreen::@return initscreen::@return: from initscreen::@1 - [105] return [ ] + [110] return [ ] to:@RETURN initscreen::@3: from initscreen::@1 - [106] (byte*~) initscreen::screen#3 ← (byte*) initscreen::screen#1 [ initscreen::screen#3 ] + [111] (byte*~) initscreen::screen#3 ← (byte*) initscreen::screen#1 [ initscreen::screen#3 ] to:initscreen::@1 addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - [107] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [107] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [107] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [107] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [108] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] - [109] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] - [110] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] + [112] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [112] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [112] (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte~) numpoints#43 main::@4/(byte~) numpoints#44 main::@5/(byte~) numpoints#45 main::@6/(byte~) numpoints#46 main::@7/(byte~) numpoints#47 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [112] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [113] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] + [114] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] + [115] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] + [116] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ numpoints#1 ] to:addpoint::@return addpoint::@return: from addpoint - [111] return [ ] + [117] return [ numpoints#1 ] to:@RETURN Created 16 initial phi equivalence classes -Coalesced [64] render::y#6 ← render::y#1 -Coalesced [65] render::colline#6 ← render::colline#1 -Coalesced [66] render::x#4 ← render::x#1 -Coalesced [73] findcol::diff#10 ← findcol::diff#1 -Coalesced [78] findcol::diff#11 ← findcol::diff#3 -Coalesced [81] findcol::mincol#14 ← findcol::mincol#11 -Coalesced [82] findcol::mindiff#13 ← findcol::mindiff#10 -Coalesced [86] findcol::mincol#16 ← findcol::mincol#2 -Coalesced [89] findcol::i#13 ← findcol::i#1 -Coalesced (already) [90] findcol::mindiff#12 ← findcol::mindiff#11 -Coalesced (already) [91] findcol::mincol#13 ← findcol::mincol#2 -Coalesced [93] findcol::mincol#15 ← findcol::mincol#1 -Not coalescing [94] findcol::diff#13 ← findcol::diff#6 -Coalesced [97] findcol::diff#12 ← findcol::diff#2 -Coalesced [99] findcol::diff#9 ← findcol::diff#0 -Coalesced [106] initscreen::screen#3 ← initscreen::screen#1 +Coalesced [2] numpoints#43 ← numpoints#1 +Coalesced (already) [4] numpoints#44 ← numpoints#1 +Coalesced (already) [6] numpoints#45 ← numpoints#1 +Coalesced (already) [8] numpoints#46 ← numpoints#1 +Coalesced (already) [10] numpoints#47 ← numpoints#1 +Coalesced [69] render::y#6 ← render::y#1 +Coalesced [70] render::colline#6 ← render::colline#1 +Coalesced [71] render::x#4 ← render::x#1 +Coalesced [78] findcol::diff#10 ← findcol::diff#1 +Coalesced [83] findcol::diff#11 ← findcol::diff#3 +Coalesced [86] findcol::mincol#14 ← findcol::mincol#11 +Coalesced [87] findcol::mindiff#13 ← findcol::mindiff#10 +Coalesced [91] findcol::mincol#16 ← findcol::mincol#2 +Coalesced [94] findcol::i#13 ← findcol::i#1 +Coalesced (already) [95] findcol::mindiff#12 ← findcol::mindiff#11 +Coalesced (already) [96] findcol::mincol#13 ← findcol::mincol#2 +Coalesced [98] findcol::mincol#15 ← findcol::mincol#1 +Not coalescing [99] findcol::diff#13 ← findcol::diff#6 +Coalesced [102] findcol::diff#12 ← findcol::diff#2 +Coalesced [104] findcol::diff#9 ← findcol::diff#0 +Coalesced [111] initscreen::screen#3 ← initscreen::screen#1 Coalesced down to 13 phi equivalence classes Culled Empty Block (label) render::@6 Culled Empty Block (label) render::@7 @@ -6395,6 +6155,10 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... CONTROL FLOW GRAPH - PHI MEM COALESCED @BEGIN: from [0] call main param-assignment [ ] @@ -6499,25 +6263,25 @@ animate::@1: from animate render: from main::@1 to:render::@1 render::@1: from render render::@3 - [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 render::colline#2 ] - [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 render::colline#2 ] + [51] (byte*) render::colline#2 ← phi( render/(word) 55296 render::@3/(byte*) render::colline#1 ) [ render::y#2 render::colline#2 numpoints#1 ] + [51] (byte) render::y#2 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#2 render::colline#2 numpoints#1 ] to:render::@2 render::@2: from render::@1 render::@5 - [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 render::colline#2 ] - [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] - [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] - [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [52] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] + [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 numpoints#1 ] + [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 numpoints#1 ] + [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] to:render::@5 render::@5: from render::@2 - [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] - [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] - [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 ] - [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 ] + [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 numpoints#1 ] + [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] + [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] + [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] to:render::@3 render::@3: from render::@5 - [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] - [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] - [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] + [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] + [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 numpoints#1 ] + [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 numpoints#1 ] to:render::@return render::@return: from render::@3 [63] return [ ] @@ -6525,54 +6289,54 @@ render::@return: from render::@3 findcol: from render::@2 to:findcol::@1 findcol::@1: from findcol findcol::@13 - [64] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [64] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] - [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] - [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [64] (byte) findcol::mincol#11 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::mincol#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@13/(byte) findcol::mindiff#11 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [64] (byte) findcol::i#12 ← phi( findcol/(byte) 0 findcol::@13/(byte) findcol::i#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@3 findcol::@3: from findcol::@1 findcol::@2 - [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@7 findcol::@7: from findcol::@3 - [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@8 findcol::@8: from findcol::@6 findcol::@7 - [70] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] - [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] + [70] (byte) findcol::diff#4 ← phi( findcol::@6/(byte) findcol::diff#0 findcol::@7/(byte) findcol::diff#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@10 findcol::@10: from findcol::@8 - [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] - [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] + [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@11 findcol::@11: from findcol::@10 findcol::@9 - [74] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] - [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] + [74] (byte) findcol::diff#6 ← phi( findcol::@10/(byte) findcol::diff#3 findcol::@9/(byte) findcol::diff#2 ) [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] + [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@13 findcol::@13: from findcol::@11 findcol::@12 - [76] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [76] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 ] - [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] - [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] + [76] (byte) findcol::mindiff#11 ← phi( findcol::@11/(byte) findcol::mindiff#10 findcol::@12/(byte~) findcol::diff#13 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 numpoints#1 ] + [76] (byte) findcol::mincol#2 ← phi( findcol::@11/(byte) findcol::mincol#11 findcol::@12/(byte) findcol::mincol#1 ) [ render::x#2 render::y#2 render::colline#2 findcol::mindiff#11 findcol::mincol#2 findcol::i#12 findcol::x#0 findcol::y#0 numpoints#1 ] + [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] + [78] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] to:findcol::@return findcol::@return: from findcol::@13 findcol::@2 - [79] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] - [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] + [79] (byte) findcol::return#0 ← phi( findcol::@13/(byte) findcol::mincol#2 findcol::@2/(byte) 0 ) [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] + [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] to:@RETURN findcol::@12: from findcol::@11 - [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] - [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] + [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 numpoints#1 ] + [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 numpoints#1 ] to:findcol::@13 findcol::@9: from findcol::@8 - [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] - [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] + [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] + [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@11 findcol::@6: from findcol::@3 - [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@8 findcol::@2: from findcol::@1 - [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] + [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] to:findcol::@3 initscreen: from main::@8 to:initscreen::@1 @@ -6586,16 +6350,17 @@ initscreen::@return: from initscreen::@1 [91] return [ ] to:@RETURN addpoint: from main main::@3 main::@4 main::@5 main::@6 main::@7 - [92] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [92] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [92] (byte) addpoint::idx#6 ← phi( main/(byte) 0 main::@3/(byte) 1 main::@4/(byte) 2 main::@5/(byte) 3 main::@6/(byte) 4 main::@7/(byte) 5 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [92] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ addpoint::idx#6 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] - [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] - [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] - [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] + [92] (byte) addpoint::c#6 ← phi( main/(byte) 1 main::@3/(byte) 2 main::@4/(byte) 3 main::@5/(byte) 4 main::@6/(byte) 5 main::@7/(byte) 7 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::y#6 ← phi( main/(byte) 5 main::@3/(byte) 8 main::@4/(byte) 14 main::@5/(byte) 2 main::@6/(byte) 17 main::@7/(byte) 22 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) numpoints#19 ← phi( main/(byte) 0 main::@3/(byte) numpoints#1 main::@4/(byte) numpoints#1 main::@5/(byte) numpoints#1 main::@6/(byte) numpoints#1 main::@7/(byte) numpoints#1 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [92] (byte) addpoint::x#6 ← phi( main/(byte) 5 main::@3/(byte) 15 main::@4/(byte) 6 main::@5/(byte) 34 main::@6/(byte) 21 main::@7/(byte) 31 ) [ numpoints#19 addpoint::x#6 addpoint::y#6 addpoint::c#6 ] + [93] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] + [94] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] + [95] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] + [96] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ ] to:addpoint::@return addpoint::@return: from addpoint - [96] return [ ] + [97] return [ ] to:@RETURN CALL GRAPH @@ -6698,11 +6463,9 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte[256]) XPOS (byte[256]) YPOS -(void()) addpoint((byte) addpoint::idx , (byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) +(void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) (byte) addpoint::c (byte) addpoint::c#6 0.6666666666666666 -(byte) addpoint::idx -(byte) addpoint::idx#6 2.0 (byte) addpoint::x (byte) addpoint::x#6 2.0 (byte) addpoint::y @@ -6765,6 +6528,8 @@ VARIABLE REGISTER WEIGHTS (byte*) initscreen::screen#2 16.5 (void()) main() (byte) numpoints +(byte) numpoints#1 286.0857142857144 +(byte) numpoints#19 4.5 (void()) render() (byte) render::col (byte) render::col#0 2002.0 @@ -6789,7 +6554,7 @@ Initial phi equivalence classes [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] [ initscreen::screen#2 initscreen::screen#1 ] [ addpoint::x#6 ] -[ addpoint::idx#6 ] +[ numpoints#19 numpoints#1 ] [ addpoint::y#6 ] [ addpoint::c#6 ] Added variable animate::$0 to zero page equivalence class [ animate::$0 ] @@ -6830,7 +6595,7 @@ Complete equivalence classes [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] [ initscreen::screen#2 initscreen::screen#1 ] [ addpoint::x#6 ] -[ addpoint::idx#6 ] +[ numpoints#19 numpoints#1 ] [ addpoint::y#6 ] [ addpoint::c#6 ] [ animate::$0 ] @@ -6870,7 +6635,7 @@ Allocated zp byte:9 to zp byte:9 [ findcol::diff#6 findcol::diff#3 findcol::diff Allocated zp byte:10 to zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] Allocated zp ptr byte:11 to zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] Allocated zp byte:13 to zp byte:13 [ addpoint::x#6 ] -Allocated zp byte:14 to zp byte:14 [ addpoint::idx#6 ] +Allocated zp byte:14 to zp byte:14 [ numpoints#19 numpoints#1 ] Allocated zp byte:15 to zp byte:15 [ addpoint::y#6 ] Allocated zp byte:16 to zp byte:16 [ addpoint::c#6 ] Allocated zp byte:17 to zp byte:17 [ animate::$0 ] @@ -6919,7 +6684,7 @@ addpoint_from_main: //SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 15 -//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- zpby1=coby1 +//SEG8 [92] phi (byte) numpoints#19 = (byte) 0 -- zpby1=coby1 lda #0 sta 14 //SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- zpby1=coby1 @@ -6938,9 +6703,7 @@ addpoint_from_B3: //SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- zpby1=coby1 lda #8 sta 15 -//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- zpby1=coby1 - lda #1 - sta 14 +//SEG15 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- zpby1=coby1 lda #15 sta 13 @@ -6957,9 +6720,7 @@ addpoint_from_B4: //SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- zpby1=coby1 lda #14 sta 15 -//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- zpby1=coby1 - lda #2 - sta 14 +//SEG22 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- zpby1=coby1 lda #6 sta 13 @@ -6976,9 +6737,7 @@ addpoint_from_B5: //SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 15 -//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- zpby1=coby1 - lda #3 - sta 14 +//SEG29 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- zpby1=coby1 lda #34 sta 13 @@ -6995,9 +6754,7 @@ addpoint_from_B6: //SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- zpby1=coby1 lda #17 sta 15 -//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- zpby1=coby1 - lda #4 - sta 14 +//SEG36 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- zpby1=coby1 lda #21 sta 13 @@ -7014,9 +6771,7 @@ addpoint_from_B7: //SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- zpby1=coby1 lda #22 sta 15 -//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- zpby1=coby1 - lda #5 - sta 14 +//SEG43 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- zpby1=coby1 lda #31 sta 13 @@ -7249,34 +7004,34 @@ render__B2_from_B5: jmp render__B2 //SEG118 render::@2 render__B2: -//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 numpoints#1 ] -- zpby1=zpby2 lda 5 sta 37 -//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- zpby1=zpby2 lda 2 sta 38 -//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] jsr findcol jmp render__B5 //SEG122 render::@5 render__B5: -//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] -- zpby1=zpby2 +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 numpoints#1 ] -- zpby1=zpby2 lda 10 sta 39 -//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] -- zpptrby1_staridx_zpby1=zpby2 +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] -- zpptrby1_staridx_zpby1=zpby2 lda 39 ldy 5 sta (3),y -//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1=_inc_zpby1 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1=_inc_zpby1 inc 5 -//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1_lt_coby1_then_la1 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 5 cmp #40 bcc render__B2_from_B5 jmp render__B3 //SEG127 render::@3 render__B3: -//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -7284,9 +7039,9 @@ render__B3: bcc !+ inc 3+1 !: -//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1=_inc_zpby1 inc 2 -//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 @@ -7317,29 +7072,29 @@ findcol__B1_from_B13: jmp findcol__B1 //SEG142 findcol::@1 findcol__B1: -//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_zpby2 +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_zpby2 ldx 6 lda 4096,x sta 40 -//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_zpby2 +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_zpby2 ldx 6 lda 4352,x sta 41 -//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 lda 37 cmp 40 beq findcol__B2 jmp findcol__B3 //SEG146 findcol::@3 findcol__B3: -//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 lda 37 cmp 40 bcc findcol__B6 jmp findcol__B7 //SEG148 findcol::@7 findcol__B7: -//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_minus_zpby3 lda 37 sec sbc 40 @@ -7350,19 +7105,19 @@ findcol__B8_from_B7: jmp findcol__B8 //SEG152 findcol::@8 findcol__B8: -//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 lda 38 cmp 41 bcc findcol__B9 jmp findcol__B10 //SEG154 findcol::@10 findcol__B10: -//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_minus_zpby3 lda 38 sec sbc 41 sta 42 -//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_plus_zpby3 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_plus_zpby3 lda 8 clc adc 42 @@ -7373,7 +7128,7 @@ findcol__B11_from_B10: jmp findcol__B11 //SEG159 findcol::@11 findcol__B11: -//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 lda 9 cmp 7 bcc findcol__B12 @@ -7384,11 +7139,11 @@ findcol__B13_from_B11: jmp findcol__B13 //SEG164 findcol::@13 findcol__B13: -//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- zpby1=_inc_zpby1 +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- zpby1=_inc_zpby1 inc 6 -//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- zpby1_lt_coby1_then_la1 +//SEG166 [78] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 lda 6 - cmp #6 + cmp 14 bcc findcol__B1_from_B13 //SEG167 [79] phi from findcol::@13 to findcol::@return findcol__Breturn_from_B13: @@ -7402,15 +7157,15 @@ findcol__Breturn_from_B2: jmp findcol__Breturn //SEG171 findcol::@return findcol__Breturn: -//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] rts //SEG173 findcol::@12 findcol__B12: -//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- zpby1=cowo1_staridx_zpby2 +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 numpoints#1 ] -- zpby1=cowo1_staridx_zpby2 ldx 6 lda 4608,x sta 10 -//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=zpby2 +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 numpoints#1 ] -- zpby1=zpby2 lda 9 sta 7 //SEG176 [76] phi from findcol::@12 to findcol::@13 @@ -7420,12 +7175,12 @@ findcol__B13_from_B12: jmp findcol__B13 //SEG179 findcol::@9 findcol__B9: -//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- zpby1=zpby2_minus_zpby3 +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] -- zpby1=zpby2_minus_zpby3 lda 41 sec sbc 38 sta 43 -//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_plus_zpby3 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_plus_zpby3 lda 8 clc adc 43 @@ -7436,7 +7191,7 @@ findcol__B11_from_B9: jmp findcol__B11 //SEG184 findcol::@6 findcol__B6: -//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby3 +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_minus_zpby3 lda 40 sec sbc 37 @@ -7447,7 +7202,7 @@ findcol__B8_from_B6: jmp findcol__B8 //SEG188 findcol::@2 findcol__B2: -//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 lda 38 cmp 41 beq findcol__Breturn_from_B2 @@ -7493,22 +7248,24 @@ initscreen__Breturn: rts //SEG201 addpoint addpoint: -//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 +//SEG202 [93] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 lda 13 ldx 14 sta 4096,x -//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 +//SEG203 [94] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] -- cowo1_staridx_zpby1=zpby2 lda 15 ldx 14 sta 4352,x -//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] -- cowo1_staridx_zpby1=zpby2 +//SEG204 [95] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] -- cowo1_staridx_zpby1=zpby2 lda 16 ldx 14 sta 4608,x +//SEG205 [96] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ ] -- zpby1=_inc_zpby1 + inc 14 jmp addpoint__Breturn -//SEG205 addpoint::@return +//SEG206 addpoint::@return addpoint__Breturn: -//SEG206 [96] return [ ] +//SEG207 [97] return [ ] rts Statement [38] *((word) 4355) ← (byte) 25 [ ] always clobbers reg byte a @@ -7518,9 +7275,10 @@ Statement [47] *((word) 4354) ← (byte) 0 [ ] always clobbers reg byte a Statement [48] *((word) 4097) ← (byte) 40 [ ] always clobbers reg byte a Statement [49] *((word) 4352) ← (byte) 0 [ ] always clobbers reg byte a Statement [50] *((word) 4096) ← (byte) 0 [ ] always clobbers reg byte a -Statement [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] always clobbers reg byte a +Statement [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp byte:2 [ render::y#2 render::y#1 ] -Statement [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp byte:14 [ numpoints#19 numpoints#1 ] +Statement [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp byte:5 [ render::x#2 render::x#1 ] Removing always clobbered register reg byte a as potential for zp byte:6 [ findcol::i#12 findcol::i#1 ] Removing always clobbered register reg byte a as potential for zp byte:37 [ findcol::x#0 ] @@ -7528,10 +7286,10 @@ Removing always clobbered register reg byte a as potential for zp byte:38 [ find Removing always clobbered register reg byte a as potential for zp byte:41 [ findcol::yp#0 ] Removing always clobbered register reg byte a as potential for zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] Removing always clobbered register reg byte a as potential for zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] -Statement [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] -Statement [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] always clobbers reg byte a -Statement [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] always clobbers reg byte a +Statement [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] always clobbers reg byte a Statement [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ initscreen::screen#2 ] always clobbers reg byte a reg byte y Statement [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ initscreen::screen#1 ] always clobbers reg byte a Statement [38] *((word) 4355) ← (byte) 25 [ ] always clobbers reg byte a @@ -7541,11 +7299,11 @@ Statement [47] *((word) 4354) ← (byte) 0 [ ] always clobbers reg byte a Statement [48] *((word) 4097) ← (byte) 40 [ ] always clobbers reg byte a Statement [49] *((word) 4352) ← (byte) 0 [ ] always clobbers reg byte a Statement [50] *((word) 4096) ← (byte) 0 [ ] always clobbers reg byte a -Statement [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] always clobbers reg byte a -Statement [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Statement [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a -Statement [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] always clobbers reg byte a -Statement [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] always clobbers reg byte a +Statement [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] always clobbers reg byte a +Statement [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] always clobbers reg byte a +Statement [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] always clobbers reg byte a +Statement [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] always clobbers reg byte a +Statement [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] always clobbers reg byte a Statement [88] *((byte*) initscreen::screen#2) ← (byte) 230 [ initscreen::screen#2 ] always clobbers reg byte a reg byte y Statement [90] if((byte*) initscreen::screen#1<(word) 2048) goto initscreen::@1 [ initscreen::screen#1 ] always clobbers reg byte a Equivalence Class zp byte:17 [ animate::$0 ] has ALU potential. @@ -7563,7 +7321,7 @@ Potential registers zp byte:9 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 Potential registers zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] : zp byte:10 , reg byte x , reg byte y , Potential registers zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] : zp ptr byte:11 , Potential registers zp byte:13 [ addpoint::x#6 ] : zp byte:13 , reg byte a , reg byte x , reg byte y , -Potential registers zp byte:14 [ addpoint::idx#6 ] : zp byte:14 , reg byte a , reg byte x , reg byte y , +Potential registers zp byte:14 [ numpoints#19 numpoints#1 ] : zp byte:14 , reg byte x , reg byte y , Potential registers zp byte:15 [ addpoint::y#6 ] : zp byte:15 , reg byte a , reg byte x , reg byte y , Potential registers zp byte:16 [ addpoint::c#6 ] : zp byte:16 , reg byte a , reg byte x , reg byte y , Potential registers zp byte:17 [ animate::$0 ] : zp byte:17 , reg byte a , reg byte x , reg byte y , reg byte alu , @@ -7597,48 +7355,49 @@ Potential registers zp byte:43 [ findcol::$8 ] : zp byte:43 , reg byte a , reg b REGISTER UPLIFT SCOPES Uplift Scope [findcol] 53,338.67: zp byte:9 [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] 50,005: zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] 31,878.19: zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] 28,253.12: zp byte:10 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] 20,002: zp byte:42 [ findcol::$10 ] 20,002: zp byte:43 [ findcol::$8 ] 17,633.34: zp byte:6 [ findcol::i#12 findcol::i#1 ] 10,001: zp byte:40 [ findcol::xp#0 ] 6,250.62: zp byte:41 [ findcol::yp#0 ] 1,863.86: zp byte:38 [ findcol::y#0 ] 1,782.83: zp byte:37 [ findcol::x#0 ] Uplift Scope [render] 2,002: zp byte:39 [ render::col#0 ] 1,639.57: zp byte:5 [ render::x#2 render::x#1 ] 187.95: zp byte:2 [ render::y#2 render::y#1 ] 104.93: zp ptr byte:3 [ render::colline#2 render::colline#1 ] +Uplift Scope [] 290.59: zp byte:14 [ numpoints#19 numpoints#1 ] Uplift Scope [animate] 4: zp byte:17 [ animate::$0 ] 4: zp byte:18 [ animate::$1 ] 4: zp byte:19 [ animate::$2 ] 4: zp byte:20 [ animate::$4 ] 4: zp byte:21 [ animate::$5 ] 4: zp byte:22 [ animate::$6 ] 4: zp byte:23 [ animate::$8 ] 4: zp byte:24 [ animate::$9 ] 4: zp byte:25 [ animate::$10 ] 4: zp byte:26 [ animate::$12 ] 4: zp byte:27 [ animate::$13 ] 4: zp byte:28 [ animate::$14 ] 4: zp byte:29 [ animate::$16 ] 4: zp byte:30 [ animate::$17 ] 4: zp byte:31 [ animate::$18 ] 4: zp byte:32 [ animate::$20 ] 4: zp byte:33 [ animate::$21 ] 4: zp byte:34 [ animate::$22 ] 4: zp byte:35 [ animate::$24 ] 4: zp byte:36 [ animate::$25 ] Uplift Scope [initscreen] 33: zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] -Uplift Scope [addpoint] 2: zp byte:13 [ addpoint::x#6 ] 2: zp byte:14 [ addpoint::idx#6 ] 1: zp byte:15 [ addpoint::y#6 ] 0.67: zp byte:16 [ addpoint::c#6 ] +Uplift Scope [addpoint] 2: zp byte:13 [ addpoint::x#6 ] 1: zp byte:15 [ addpoint::y#6 ] 0.67: zp byte:16 [ addpoint::c#6 ] Uplift Scope [main] -Uplift Scope [] Uplift attempts [findcol] 10000/559872 (limiting to 10000) -Uplifting [findcol] best 1684547 combination reg byte a [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] reg byte y [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] reg byte x [ findcol::i#12 findcol::i#1 ] zp byte:40 [ findcol::xp#0 ] zp byte:41 [ findcol::yp#0 ] zp byte:38 [ findcol::y#0 ] zp byte:37 [ findcol::x#0 ] +Uplifting [findcol] best 1694527 combination reg byte a [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] zp byte:7 [ findcol::mindiff#10 findcol::mindiff#11 findcol::diff#13 ] reg byte y [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] reg byte x [ findcol::i#12 findcol::i#1 ] zp byte:40 [ findcol::xp#0 ] zp byte:41 [ findcol::yp#0 ] zp byte:38 [ findcol::y#0 ] zp byte:37 [ findcol::x#0 ] Limited combination testing to 10000 combinations of 559872 possible. -Uplifting [render] best 1680547 combination reg byte a [ render::col#0 ] zp byte:5 [ render::x#2 render::x#1 ] zp byte:2 [ render::y#2 render::y#1 ] zp ptr byte:3 [ render::colline#2 render::colline#1 ] -Uplifting [initscreen] best 1680547 combination zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] -Uplifting [addpoint] best 1680480 combination reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::idx#6 ] reg byte x [ addpoint::y#6 ] zp byte:16 [ addpoint::c#6 ] -Uplifting [main] best 1680480 combination -Uplifting [] best 1680480 combination -Uplifting remains [reg byte a [ animate::$0 ]] best 1680474 combination reg byte a [ animate::$0 ] -Uplifting remains [reg byte a [ animate::$1 ]] best 1680468 combination reg byte a [ animate::$1 ] -Uplifting remains [reg byte a [ animate::$2 ]] best 1680462 combination reg byte a [ animate::$2 ] -Uplifting remains [reg byte a [ animate::$4 ]] best 1680456 combination reg byte a [ animate::$4 ] -Uplifting remains [reg byte a [ animate::$5 ]] best 1680450 combination reg byte a [ animate::$5 ] -Uplifting remains [reg byte a [ animate::$6 ]] best 1680444 combination reg byte a [ animate::$6 ] -Uplifting remains [reg byte x [ animate::$8 ]] best 1680438 combination reg byte x [ animate::$8 ] -Uplifting remains [reg byte x [ animate::$9 ]] best 1680430 combination reg byte x [ animate::$9 ] -Uplifting remains [reg byte a [ animate::$10 ]] best 1680424 combination reg byte a [ animate::$10 ] -Uplifting remains [reg byte a [ animate::$12 ]] best 1680418 combination reg byte a [ animate::$12 ] -Uplifting remains [reg byte a [ animate::$13 ]] best 1680412 combination reg byte a [ animate::$13 ] -Uplifting remains [reg byte a [ animate::$14 ]] best 1680406 combination reg byte a [ animate::$14 ] -Uplifting remains [reg byte x [ animate::$16 ]] best 1680400 combination reg byte x [ animate::$16 ] -Uplifting remains [reg byte x [ animate::$17 ]] best 1680392 combination reg byte x [ animate::$17 ] -Uplifting remains [reg byte a [ animate::$18 ]] best 1680386 combination reg byte a [ animate::$18 ] -Uplifting remains [reg byte a [ animate::$20 ]] best 1680380 combination reg byte a [ animate::$20 ] -Uplifting remains [reg byte a [ animate::$21 ]] best 1680374 combination reg byte a [ animate::$21 ] -Uplifting remains [reg byte a [ animate::$22 ]] best 1680368 combination reg byte a [ animate::$22 ] -Uplifting remains [reg byte a [ animate::$24 ]] best 1680362 combination reg byte a [ animate::$24 ] -Uplifting remains [reg byte a [ animate::$25 ]] best 1680356 combination reg byte a [ animate::$25 ] +Uplifting [render] best 1690527 combination reg byte a [ render::col#0 ] zp byte:5 [ render::x#2 render::x#1 ] zp byte:2 [ render::y#2 render::y#1 ] zp ptr byte:3 [ render::colline#2 render::colline#1 ] +Uplifting [] best 1690527 combination zp byte:14 [ numpoints#19 numpoints#1 ] +Uplifting [initscreen] best 1690527 combination zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] +Uplifting [addpoint] best 1690487 combination reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::y#6 ] zp byte:16 [ addpoint::c#6 ] +Uplifting [main] best 1690487 combination +Uplifting remains [reg byte a [ animate::$0 ]] best 1690481 combination reg byte a [ animate::$0 ] +Uplifting remains [reg byte a [ animate::$1 ]] best 1690475 combination reg byte a [ animate::$1 ] +Uplifting remains [reg byte a [ animate::$2 ]] best 1690469 combination reg byte a [ animate::$2 ] +Uplifting remains [reg byte a [ animate::$4 ]] best 1690463 combination reg byte a [ animate::$4 ] +Uplifting remains [reg byte a [ animate::$5 ]] best 1690457 combination reg byte a [ animate::$5 ] +Uplifting remains [reg byte a [ animate::$6 ]] best 1690451 combination reg byte a [ animate::$6 ] +Uplifting remains [reg byte x [ animate::$8 ]] best 1690445 combination reg byte x [ animate::$8 ] +Uplifting remains [reg byte x [ animate::$9 ]] best 1690437 combination reg byte x [ animate::$9 ] +Uplifting remains [reg byte a [ animate::$10 ]] best 1690431 combination reg byte a [ animate::$10 ] +Uplifting remains [reg byte a [ animate::$12 ]] best 1690425 combination reg byte a [ animate::$12 ] +Uplifting remains [reg byte a [ animate::$13 ]] best 1690419 combination reg byte a [ animate::$13 ] +Uplifting remains [reg byte a [ animate::$14 ]] best 1690413 combination reg byte a [ animate::$14 ] +Uplifting remains [reg byte x [ animate::$16 ]] best 1690407 combination reg byte x [ animate::$16 ] +Uplifting remains [reg byte x [ animate::$17 ]] best 1690399 combination reg byte x [ animate::$17 ] +Uplifting remains [reg byte a [ animate::$18 ]] best 1690393 combination reg byte a [ animate::$18 ] +Uplifting remains [reg byte a [ animate::$20 ]] best 1690387 combination reg byte a [ animate::$20 ] +Uplifting remains [reg byte a [ animate::$21 ]] best 1690381 combination reg byte a [ animate::$21 ] +Uplifting remains [reg byte a [ animate::$22 ]] best 1690375 combination reg byte a [ animate::$22 ] +Uplifting remains [reg byte a [ animate::$24 ]] best 1690369 combination reg byte a [ animate::$24 ] +Uplifting remains [reg byte a [ animate::$25 ]] best 1690363 combination reg byte a [ animate::$25 ] Coalescing zero page register [ zp byte:2 [ render::y#2 render::y#1 ] ] with [ zp byte:16 [ addpoint::c#6 ] ] Coalescing zero page register [ zp ptr byte:3 [ render::colline#2 render::colline#1 ] ] with [ zp ptr byte:11 [ initscreen::screen#2 initscreen::screen#1 ] ] Coalescing zero page register [ zp byte:8 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 ] ] with [ zp byte:40 [ findcol::xp#0 ] ] Re-allocated ZP register from zp byte:7 to zp byte:6 Re-allocated ZP register from zp byte:8 to zp byte:7 -Re-allocated ZP register from zp byte:37 to zp byte:8 -Re-allocated ZP register from zp byte:38 to zp byte:9 -Re-allocated ZP register from zp byte:41 to zp byte:10 +Re-allocated ZP register from zp byte:14 to zp byte:8 +Re-allocated ZP register from zp byte:37 to zp byte:9 +Re-allocated ZP register from zp byte:38 to zp byte:10 +Re-allocated ZP register from zp byte:41 to zp byte:11 Removing instruction jmp BEND Removing instruction jmp main__B3 Removing instruction jmp main__B4 @@ -7687,10 +7446,11 @@ addpoint_from_main: //SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 2 -//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 - ldx #5 -//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 - ldy #0 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- yby=coby1 + ldy #5 +//SEG8 [92] phi (byte) numpoints#19 = (byte) 0 -- zpby1=coby1 + lda #0 + sta 8 //SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 lda #5 jsr addpoint @@ -7702,10 +7462,9 @@ addpoint_from_B3: //SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 2 -//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 - ldx #8 -//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 - ldy #1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- yby=coby1 + ldy #8 +//SEG15 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 lda #15 jsr addpoint @@ -7717,10 +7476,9 @@ addpoint_from_B4: //SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 2 -//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 - ldx #14 -//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 - ldy #2 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- yby=coby1 + ldy #14 +//SEG22 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 lda #6 jsr addpoint @@ -7732,10 +7490,9 @@ addpoint_from_B5: //SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 2 -//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 - ldx #2 -//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 - ldy #3 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- yby=coby1 + ldy #2 +//SEG29 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 lda #34 jsr addpoint @@ -7747,10 +7504,9 @@ addpoint_from_B6: //SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 2 -//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 - ldx #17 -//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 - ldy #4 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- yby=coby1 + ldy #17 +//SEG36 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 lda #21 jsr addpoint @@ -7762,10 +7518,9 @@ addpoint_from_B7: //SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 2 -//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 - ldx #22 -//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 - ldy #5 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- yby=coby1 + ldy #22 +//SEG43 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 lda #31 jsr addpoint @@ -7943,30 +7698,30 @@ render__B2_from_B5: //SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy //SEG118 render::@2 render__B2: -//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 numpoints#1 ] -- zpby1=zpby2 lda 5 - sta 8 -//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 - lda 2 sta 9 -//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- zpby1=zpby2 + lda 2 + sta 10 +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] jsr findcol //SEG122 render::@5 render__B5: -//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] -- aby=yby +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 numpoints#1 ] -- aby=yby tya -//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] -- zpptrby1_staridx_zpby1=aby +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] -- zpptrby1_staridx_zpby1=aby ldy 5 sta (3),y -//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1=_inc_zpby1 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1=_inc_zpby1 inc 5 -//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1_lt_coby1_then_la1 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 5 cmp #40 bcc render__B2_from_B5 //SEG127 render::@3 render__B3: -//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -7974,9 +7729,9 @@ render__B3: bcc !+ inc 3+1 !: -//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1=_inc_zpby1 inc 2 -//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 @@ -8003,26 +7758,26 @@ findcol__B1_from_B13: //SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy //SEG142 findcol::@1 findcol__B1: -//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_xby +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_xby lda 4096,x sta 7 -//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_xby +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_xby lda 4352,x - sta 10 -//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 - lda 8 + sta 11 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 + lda 9 cmp 7 beq findcol__B2 //SEG146 findcol::@3 findcol__B3: -//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 8 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 + lda 9 cmp 7 bcc findcol__B6 //SEG148 findcol::@7 findcol__B7: -//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby1 - lda 8 +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_minus_zpby1 + lda 9 sec sbc 7 sta 7 @@ -8031,17 +7786,17 @@ findcol__B8_from_B7: //SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy //SEG152 findcol::@8 findcol__B8: -//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 9 - cmp 10 +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 + lda 10 + cmp 11 bcc findcol__B9 //SEG154 findcol::@10 findcol__B10: -//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_zpby2 - lda 9 +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_minus_zpby2 + lda 10 sec - sbc 10 -//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_plus_aby + sbc 11 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_plus_aby clc adc 7 //SEG157 [74] phi from findcol::@10 to findcol::@11 @@ -8049,7 +7804,7 @@ findcol__B11_from_B10: //SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy //SEG159 findcol::@11 findcol__B11: -//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- aby_lt_zpby1_then_la1 +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby_lt_zpby1_then_la1 cmp 6 bcc findcol__B12 //SEG161 [76] phi from findcol::@11 to findcol::@13 @@ -8058,10 +7813,10 @@ findcol__B13_from_B11: //SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy //SEG164 findcol::@13 findcol__B13: -//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- xby=_inc_xby +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- xby=_inc_xby inx -//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- xby_lt_coby1_then_la1 - cpx #6 +//SEG166 [78] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- xby_lt_zpby1_then_la1 + cpx 8 bcc findcol__B1_from_B13 //SEG167 [79] phi from findcol::@13 to findcol::@return findcol__Breturn_from_B13: @@ -8073,13 +7828,13 @@ findcol__Breturn_from_B2: ldy #0 //SEG171 findcol::@return findcol__Breturn: -//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] rts //SEG173 findcol::@12 findcol__B12: -//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 numpoints#1 ] -- yby=cowo1_staridx_xby ldy 4608,x -//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=aby +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 numpoints#1 ] -- zpby1=aby sta 6 //SEG176 [76] phi from findcol::@12 to findcol::@13 findcol__B13_from_B12: @@ -8088,11 +7843,11 @@ findcol__B13_from_B12: jmp findcol__B13 //SEG179 findcol::@9 findcol__B9: -//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=zpby1_minus_zpby2 - lda 10 +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] -- aby=zpby1_minus_zpby2 + lda 11 sec - sbc 9 -//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_plus_aby + sbc 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_plus_aby clc adc 7 //SEG182 [74] phi from findcol::@9 to findcol::@11 @@ -8101,10 +7856,10 @@ findcol__B11_from_B9: jmp findcol__B11 //SEG184 findcol::@6 findcol__B6: -//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby1_minus_zpby2 +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby1_minus_zpby2 lda 7 sec - sbc 8 + sbc 9 sta 7 //SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: @@ -8112,9 +7867,9 @@ findcol__B8_from_B6: jmp findcol__B8 //SEG188 findcol::@2 findcol__B2: -//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 - lda 9 - cmp 10 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 //SEG190 initscreen @@ -8156,17 +7911,22 @@ initscreen__Breturn: rts //SEG201 addpoint addpoint: -//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby - sta 4096,y -//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby - txa +//SEG202 [93] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=aby + ldx 8 + sta 4096,x +//SEG203 [94] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] -- cowo1_staridx_zpby1=yby + tya + ldy 8 sta 4352,y -//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] -- cowo1_staridx_yby=zpby1 +//SEG204 [95] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] -- cowo1_staridx_zpby1=zpby2 lda 2 - sta 4608,y -//SEG205 addpoint::@return + ldx 8 + sta 4608,x +//SEG205 [96] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ ] -- zpby1=_inc_zpby1 + inc 8 +//SEG206 addpoint::@return addpoint__Breturn: -//SEG206 [96] return [ ] +//SEG207 [97] return [ ] rts Removing instruction jmp render__B1 @@ -8189,10 +7949,11 @@ addpoint_from_main: //SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 2 -//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 - ldx #5 -//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 - ldy #0 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- yby=coby1 + ldy #5 +//SEG8 [92] phi (byte) numpoints#19 = (byte) 0 -- zpby1=coby1 + lda #0 + sta 8 //SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 lda #5 jsr addpoint @@ -8204,10 +7965,9 @@ addpoint_from_B3: //SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 2 -//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 - ldx #8 -//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 - ldy #1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- yby=coby1 + ldy #8 +//SEG15 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 lda #15 jsr addpoint @@ -8219,10 +7979,9 @@ addpoint_from_B4: //SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 2 -//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 - ldx #14 -//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 - ldy #2 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- yby=coby1 + ldy #14 +//SEG22 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 lda #6 jsr addpoint @@ -8234,10 +7993,9 @@ addpoint_from_B5: //SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 2 -//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 - ldx #2 -//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 - ldy #3 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- yby=coby1 + ldy #2 +//SEG29 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 lda #34 jsr addpoint @@ -8249,10 +8007,9 @@ addpoint_from_B6: //SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 2 -//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 - ldx #17 -//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 - ldy #4 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- yby=coby1 + ldy #17 +//SEG36 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 lda #21 jsr addpoint @@ -8264,10 +8021,9 @@ addpoint_from_B7: //SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 2 -//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 - ldx #22 -//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 - ldy #5 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- yby=coby1 + ldy #22 +//SEG43 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 lda #31 jsr addpoint @@ -8443,30 +8199,30 @@ render__B2_from_B5: //SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy //SEG118 render::@2 render__B2: -//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 numpoints#1 ] -- zpby1=zpby2 lda 5 - sta 8 -//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 - lda 2 sta 9 -//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- zpby1=zpby2 + lda 2 + sta 10 +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] jsr findcol //SEG122 render::@5 render__B5: -//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] -- aby=yby +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 numpoints#1 ] -- aby=yby tya -//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] -- zpptrby1_staridx_zpby1=aby +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] -- zpptrby1_staridx_zpby1=aby ldy 5 sta (3),y -//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1=_inc_zpby1 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1=_inc_zpby1 inc 5 -//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1_lt_coby1_then_la1 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 5 cmp #40 bcc render__B2_from_B5 //SEG127 render::@3 render__B3: -//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -8474,9 +8230,9 @@ render__B3: bcc !+ inc 3+1 !: -//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1=_inc_zpby1 inc 2 -//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 @@ -8502,26 +8258,26 @@ findcol__B1_from_B13: //SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy //SEG142 findcol::@1 findcol__B1: -//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_xby +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_xby lda 4096,x sta 7 -//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_xby +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_xby lda 4352,x - sta 10 -//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 - lda 8 + sta 11 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 + lda 9 cmp 7 beq findcol__B2 //SEG146 findcol::@3 findcol__B3: -//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 8 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 + lda 9 cmp 7 bcc findcol__B6 //SEG148 findcol::@7 findcol__B7: -//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby1 - lda 8 +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_minus_zpby1 + lda 9 sec sbc 7 sta 7 @@ -8530,17 +8286,17 @@ findcol__B8_from_B7: //SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy //SEG152 findcol::@8 findcol__B8: -//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 9 - cmp 10 +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 + lda 10 + cmp 11 bcc findcol__B9 //SEG154 findcol::@10 findcol__B10: -//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_zpby2 - lda 9 +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_minus_zpby2 + lda 10 sec - sbc 10 -//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_plus_aby + sbc 11 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_plus_aby clc adc 7 //SEG157 [74] phi from findcol::@10 to findcol::@11 @@ -8548,7 +8304,7 @@ findcol__B11_from_B10: //SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy //SEG159 findcol::@11 findcol__B11: -//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- aby_lt_zpby1_then_la1 +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby_lt_zpby1_then_la1 cmp 6 bcc findcol__B12 //SEG161 [76] phi from findcol::@11 to findcol::@13 @@ -8557,10 +8313,10 @@ findcol__B13_from_B11: //SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy //SEG164 findcol::@13 findcol__B13: -//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- xby=_inc_xby +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- xby=_inc_xby inx -//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- xby_lt_coby1_then_la1 - cpx #6 +//SEG166 [78] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- xby_lt_zpby1_then_la1 + cpx 8 bcc findcol__B1_from_B13 //SEG167 [79] phi from findcol::@13 to findcol::@return findcol__Breturn_from_B13: @@ -8572,13 +8328,13 @@ findcol__Breturn_from_B2: ldy #0 //SEG171 findcol::@return findcol__Breturn: -//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] rts //SEG173 findcol::@12 findcol__B12: -//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 numpoints#1 ] -- yby=cowo1_staridx_xby ldy 4608,x -//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=aby +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 numpoints#1 ] -- zpby1=aby sta 6 //SEG176 [76] phi from findcol::@12 to findcol::@13 findcol__B13_from_B12: @@ -8587,11 +8343,11 @@ findcol__B13_from_B12: jmp findcol__B13 //SEG179 findcol::@9 findcol__B9: -//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=zpby1_minus_zpby2 - lda 10 +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] -- aby=zpby1_minus_zpby2 + lda 11 sec - sbc 9 -//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_plus_aby + sbc 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_plus_aby clc adc 7 //SEG182 [74] phi from findcol::@9 to findcol::@11 @@ -8600,10 +8356,10 @@ findcol__B11_from_B9: jmp findcol__B11 //SEG184 findcol::@6 findcol__B6: -//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby1_minus_zpby2 +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby1_minus_zpby2 lda 7 sec - sbc 8 + sbc 9 sta 7 //SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: @@ -8611,9 +8367,9 @@ findcol__B8_from_B6: jmp findcol__B8 //SEG188 findcol::@2 findcol__B2: -//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 - lda 9 - cmp 10 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 //SEG190 initscreen @@ -8654,17 +8410,22 @@ initscreen__Breturn: rts //SEG201 addpoint addpoint: -//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby - sta 4096,y -//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby - txa +//SEG202 [93] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=aby + ldx 8 + sta 4096,x +//SEG203 [94] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] -- cowo1_staridx_zpby1=yby + tya + ldy 8 sta 4352,y -//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] -- cowo1_staridx_yby=zpby1 +//SEG204 [95] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] -- cowo1_staridx_zpby1=zpby2 lda 2 - sta 4608,y -//SEG205 addpoint::@return + ldx 8 + sta 4608,x +//SEG205 [96] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ ] -- zpby1=_inc_zpby1 + inc 8 +//SEG206 addpoint::@return addpoint__Breturn: -//SEG206 [96] return [ ] +//SEG207 [97] return [ ] rts FINAL SYMBOL TABLE @@ -8676,16 +8437,14 @@ FINAL SYMBOL TABLE (byte*) SCREEN (byte[256]) XPOS (byte[256]) YPOS -(void()) addpoint((byte) addpoint::idx , (byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) +(void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) (label) addpoint::@return (byte) addpoint::c (byte) addpoint::c#6 zp byte:2 0.6666666666666666 -(byte) addpoint::idx -(byte) addpoint::idx#6 reg byte y 2.0 (byte) addpoint::x (byte) addpoint::x#6 reg byte a 2.0 (byte) addpoint::y -(byte) addpoint::y#6 reg byte x 1.0 +(byte) addpoint::y#6 reg byte y 1.0 (void()) animate() (byte~) animate::$0 reg byte a 4.0 (byte~) animate::$1 reg byte a 4.0 @@ -8754,13 +8513,13 @@ FINAL SYMBOL TABLE (byte) findcol::return (byte) findcol::return#0 reg byte y 3667.333333333333 (byte) findcol::x -(byte) findcol::x#0 zp byte:8 1782.8260869565217 +(byte) findcol::x#0 zp byte:9 1782.8260869565217 (byte) findcol::xp (byte) findcol::xp#0 zp byte:7 10001.0 (byte) findcol::y -(byte) findcol::y#0 zp byte:9 1863.8636363636363 +(byte) findcol::y#0 zp byte:10 1863.8636363636363 (byte) findcol::yp -(byte) findcol::yp#0 zp byte:10 6250.625 +(byte) findcol::yp#0 zp byte:11 6250.625 (void()) initscreen() (label) initscreen::@1 (label) initscreen::@return @@ -8779,6 +8538,8 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@return (byte) numpoints +(byte) numpoints#1 zp byte:8 286.0857142857144 +(byte) numpoints#19 zp byte:8 4.5 (void()) render() (label) render::@1 (label) render::@2 @@ -8806,8 +8567,8 @@ zp byte:7 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 findcol::xp#0 ] reg byte a [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] reg byte y [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ addpoint::x#6 ] -reg byte y [ addpoint::idx#6 ] -reg byte x [ addpoint::y#6 ] +zp byte:8 [ numpoints#19 numpoints#1 ] +reg byte y [ addpoint::y#6 ] reg byte a [ animate::$0 ] reg byte a [ animate::$1 ] reg byte a [ animate::$2 ] @@ -8828,10 +8589,10 @@ reg byte a [ animate::$21 ] reg byte a [ animate::$22 ] reg byte a [ animate::$24 ] reg byte a [ animate::$25 ] -zp byte:8 [ findcol::x#0 ] -zp byte:9 [ findcol::y#0 ] +zp byte:9 [ findcol::x#0 ] +zp byte:10 [ findcol::y#0 ] reg byte a [ render::col#0 ] -zp byte:10 [ findcol::yp#0 ] +zp byte:11 [ findcol::yp#0 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] @@ -8850,10 +8611,11 @@ addpoint_from_main: //SEG6 [92] phi (byte) addpoint::c#6 = (byte) 1 -- zpby1=coby1 lda #1 sta 2 -//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- xby=coby1 - ldx #5 -//SEG8 [92] phi (byte) addpoint::idx#6 = (byte) 0 -- yby=coby1 - ldy #0 +//SEG7 [92] phi (byte) addpoint::y#6 = (byte) 5 -- yby=coby1 + ldy #5 +//SEG8 [92] phi (byte) numpoints#19 = (byte) 0 -- zpby1=coby1 + lda #0 + sta 8 //SEG9 [92] phi (byte) addpoint::x#6 = (byte) 5 -- aby=coby1 lda #5 jsr addpoint @@ -8865,10 +8627,9 @@ addpoint_from_B3: //SEG13 [92] phi (byte) addpoint::c#6 = (byte) 2 -- zpby1=coby1 lda #2 sta 2 -//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- xby=coby1 - ldx #8 -//SEG15 [92] phi (byte) addpoint::idx#6 = (byte) 1 -- yby=coby1 - ldy #1 +//SEG14 [92] phi (byte) addpoint::y#6 = (byte) 8 -- yby=coby1 + ldy #8 +//SEG15 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG16 [92] phi (byte) addpoint::x#6 = (byte) 15 -- aby=coby1 lda #15 jsr addpoint @@ -8880,10 +8641,9 @@ addpoint_from_B4: //SEG20 [92] phi (byte) addpoint::c#6 = (byte) 3 -- zpby1=coby1 lda #3 sta 2 -//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- xby=coby1 - ldx #14 -//SEG22 [92] phi (byte) addpoint::idx#6 = (byte) 2 -- yby=coby1 - ldy #2 +//SEG21 [92] phi (byte) addpoint::y#6 = (byte) 14 -- yby=coby1 + ldy #14 +//SEG22 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG23 [92] phi (byte) addpoint::x#6 = (byte) 6 -- aby=coby1 lda #6 jsr addpoint @@ -8895,10 +8655,9 @@ addpoint_from_B5: //SEG27 [92] phi (byte) addpoint::c#6 = (byte) 4 -- zpby1=coby1 lda #4 sta 2 -//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- xby=coby1 - ldx #2 -//SEG29 [92] phi (byte) addpoint::idx#6 = (byte) 3 -- yby=coby1 - ldy #3 +//SEG28 [92] phi (byte) addpoint::y#6 = (byte) 2 -- yby=coby1 + ldy #2 +//SEG29 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG30 [92] phi (byte) addpoint::x#6 = (byte) 34 -- aby=coby1 lda #34 jsr addpoint @@ -8910,10 +8669,9 @@ addpoint_from_B6: //SEG34 [92] phi (byte) addpoint::c#6 = (byte) 5 -- zpby1=coby1 lda #5 sta 2 -//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- xby=coby1 - ldx #17 -//SEG36 [92] phi (byte) addpoint::idx#6 = (byte) 4 -- yby=coby1 - ldy #4 +//SEG35 [92] phi (byte) addpoint::y#6 = (byte) 17 -- yby=coby1 + ldy #17 +//SEG36 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG37 [92] phi (byte) addpoint::x#6 = (byte) 21 -- aby=coby1 lda #21 jsr addpoint @@ -8925,10 +8683,9 @@ addpoint_from_B7: //SEG41 [92] phi (byte) addpoint::c#6 = (byte) 7 -- zpby1=coby1 lda #7 sta 2 -//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- xby=coby1 - ldx #22 -//SEG43 [92] phi (byte) addpoint::idx#6 = (byte) 5 -- yby=coby1 - ldy #5 +//SEG42 [92] phi (byte) addpoint::y#6 = (byte) 22 -- yby=coby1 + ldy #22 +//SEG43 [92] phi (byte) numpoints#19 = (byte) numpoints#1 -- register_copy //SEG44 [92] phi (byte) addpoint::x#6 = (byte) 31 -- aby=coby1 lda #31 jsr addpoint @@ -9104,30 +8861,30 @@ render__B2_from_B5: //SEG117 [52] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy //SEG118 render::@2 render__B2: -//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 ] -- zpby1=zpby2 +//SEG119 [53] (byte) findcol::x#0 ← (byte) render::x#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 numpoints#1 ] -- zpby1=zpby2 lda 5 - sta 8 -//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 ] -- zpby1=zpby2 - lda 2 sta 9 -//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG120 [54] (byte) findcol::y#0 ← (byte) render::y#2 [ render::x#2 render::y#2 render::colline#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- zpby1=zpby2 + lda 2 + sta 10 +//SEG121 [55] call findcol param-assignment [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] jsr findcol //SEG122 render::@5 render__B5: -//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 ] -- aby=yby +//SEG123 [56] (byte) render::col#0 ← (byte) findcol::return#0 [ render::x#2 render::y#2 render::colline#2 render::col#0 numpoints#1 ] -- aby=yby tya -//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 ] -- zpptrby1_staridx_zpby1=aby +//SEG124 [57] *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 [ render::x#2 render::y#2 render::colline#2 numpoints#1 ] -- zpptrby1_staridx_zpby1=aby ldy 5 sta (3),y -//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1=_inc_zpby1 +//SEG125 [58] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1=_inc_zpby1 inc 5 -//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 ] -- zpby1_lt_coby1_then_la1 +//SEG126 [59] if((byte) render::x#1<(byte) 40) goto render::@2 [ render::x#1 render::y#2 render::colline#2 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 5 cmp #40 bcc render__B2_from_B5 //SEG127 render::@3 render__B3: -//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 ] -- zpptrby1=zpptrby1_plus_coby1 +//SEG128 [60] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::colline#1 render::y#2 numpoints#1 ] -- zpptrby1=zpptrby1_plus_coby1 lda 3 clc adc #40 @@ -9135,9 +8892,9 @@ render__B3: bcc !+ inc 3+1 !: -//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 ] -- zpby1=_inc_zpby1 +//SEG129 [61] (byte) render::y#1 ← ++ (byte) render::y#2 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1=_inc_zpby1 inc 2 -//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] -- zpby1_lt_coby1_then_la1 +//SEG130 [62] if((byte) render::y#1<(byte) 25) goto render::@1 [ render::y#1 render::colline#1 numpoints#1 ] -- zpby1_lt_coby1_then_la1 lda 2 cmp #25 bcc render__B1_from_B3 @@ -9163,26 +8920,26 @@ findcol__B1_from_B13: //SEG141 [64] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy //SEG142 findcol::@1 findcol__B1: -//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_xby +//SEG143 [65] (byte) findcol::xp#0 ← (word) 4096 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_xby lda 4096,x sta 7 -//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=cowo1_staridx_xby +//SEG144 [66] (byte) findcol::yp#0 ← (word) 4352 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=cowo1_staridx_xby lda 4352,x - sta 10 -//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 - lda 8 + sta 11 +//SEG145 [67] if((byte) findcol::x#0==(byte) findcol::xp#0) goto findcol::@2 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 + lda 9 cmp 7 beq findcol__B2 //SEG146 findcol::@3 findcol__B3: -//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 8 +//SEG147 [68] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 + lda 9 cmp 7 bcc findcol__B6 //SEG148 findcol::@7 findcol__B7: -//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby2_minus_zpby1 - lda 8 +//SEG149 [69] (byte) findcol::diff#1 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#1 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby2_minus_zpby1 + lda 9 sec sbc 7 sta 7 @@ -9191,17 +8948,17 @@ findcol__B8_from_B7: //SEG151 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy //SEG152 findcol::@8 findcol__B8: -//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_lt_zpby2_then_la1 - lda 9 - cmp 10 +//SEG153 [71] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@9 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::yp#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_lt_zpby2_then_la1 + lda 10 + cmp 11 bcc findcol__B9 //SEG154 findcol::@10 findcol__B10: -//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_minus_zpby2 - lda 9 +//SEG155 [72] (byte~) findcol::$10 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::$10 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_minus_zpby2 + lda 10 sec - sbc 10 -//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_plus_aby + sbc 11 +//SEG156 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#3 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_plus_aby clc adc 7 //SEG157 [74] phi from findcol::@10 to findcol::@11 @@ -9209,7 +8966,7 @@ findcol__B11_from_B10: //SEG158 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy //SEG159 findcol::@11 findcol__B11: -//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 ] -- aby_lt_zpby1_then_la1 +//SEG160 [75] if((byte) findcol::diff#6<(byte) findcol::mindiff#10) goto findcol::@12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby_lt_zpby1_then_la1 cmp 6 bcc findcol__B12 //SEG161 [76] phi from findcol::@11 to findcol::@13 @@ -9218,10 +8975,10 @@ findcol__B13_from_B11: //SEG163 [76] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#11 -- register_copy //SEG164 findcol::@13 findcol__B13: -//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- xby=_inc_xby +//SEG165 [77] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- xby=_inc_xby inx -//SEG166 [78] if((byte) findcol::i#1<(byte) 6) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 ] -- xby_lt_coby1_then_la1 - cpx #6 +//SEG166 [78] if((byte) findcol::i#1<(byte) numpoints#1) goto findcol::@1 [ render::x#2 render::y#2 render::colline#2 findcol::i#1 findcol::mindiff#11 findcol::mincol#2 findcol::x#0 findcol::y#0 numpoints#1 ] -- xby_lt_zpby1_then_la1 + cpx 8 bcc findcol__B1_from_B13 //SEG167 [79] phi from findcol::@13 to findcol::@return findcol__Breturn_from_B13: @@ -9233,13 +8990,13 @@ findcol__Breturn_from_B2: ldy #0 //SEG171 findcol::@return findcol__Breturn: -//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 ] +//SEG172 [80] return [ render::x#2 render::y#2 findcol::return#0 render::colline#2 numpoints#1 ] rts //SEG173 findcol::@12 findcol__B12: -//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby +//SEG174 [81] (byte) findcol::mincol#1 ← (word) 4608 *idx (byte) findcol::i#12 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#6 findcol::mincol#1 numpoints#1 ] -- yby=cowo1_staridx_xby ldy 4608,x -//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 ] -- zpby1=aby +//SEG175 [82] (byte~) findcol::diff#13 ← (byte) findcol::diff#6 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::mincol#1 findcol::diff#13 numpoints#1 ] -- zpby1=aby sta 6 //SEG176 [76] phi from findcol::@12 to findcol::@13 findcol__B13_from_B12: @@ -9248,11 +9005,11 @@ findcol__B13_from_B12: jmp findcol__B13 //SEG179 findcol::@9 findcol__B9: -//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 findcol::$8 ] -- aby=zpby1_minus_zpby2 - lda 10 +//SEG180 [83] (byte~) findcol::$8 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#4 findcol::mindiff#10 findcol::mincol#11 numpoints#1 findcol::$8 ] -- aby=zpby1_minus_zpby2 + lda 11 sec - sbc 9 -//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 ] -- aby=zpby1_plus_aby + sbc 10 +//SEG181 [84] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$8 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::y#0 findcol::diff#2 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- aby=zpby1_plus_aby clc adc 7 //SEG182 [74] phi from findcol::@9 to findcol::@11 @@ -9261,10 +9018,10 @@ findcol__B11_from_B9: jmp findcol__B11 //SEG184 findcol::@6 findcol__B6: -//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1=zpby1_minus_zpby2 +//SEG185 [85] (byte) findcol::diff#0 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::diff#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1=zpby1_minus_zpby2 lda 7 sec - sbc 8 + sbc 9 sta 7 //SEG186 [70] phi from findcol::@6 to findcol::@8 findcol__B8_from_B6: @@ -9272,9 +9029,9 @@ findcol__B8_from_B6: jmp findcol__B8 //SEG188 findcol::@2 findcol__B2: -//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 ] -- zpby1_eq_zpby2_then_la1 - lda 9 - cmp 10 +//SEG189 [86] if((byte) findcol::y#0==(byte) findcol::yp#0) goto findcol::@return [ render::x#2 render::y#2 render::colline#2 findcol::i#12 findcol::x#0 findcol::xp#0 findcol::y#0 findcol::yp#0 findcol::mindiff#10 findcol::mincol#11 numpoints#1 ] -- zpby1_eq_zpby2_then_la1 + lda 10 + cmp 11 beq findcol__Breturn_from_B2 jmp findcol__B3 //SEG190 initscreen @@ -9315,16 +9072,21 @@ initscreen__Breturn: rts //SEG201 addpoint addpoint: -//SEG202 [93] *((word) 4096 + (byte) addpoint::idx#6) ← (byte) addpoint::x#6 [ addpoint::idx#6 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_yby=aby - sta 4096,y -//SEG203 [94] *((word) 4352 + (byte) addpoint::idx#6) ← (byte) addpoint::y#6 [ addpoint::idx#6 addpoint::c#6 ] -- cowo1_staridx_yby=xby - txa +//SEG202 [93] *((word) 4096 + (byte) numpoints#19) ← (byte) addpoint::x#6 [ numpoints#19 addpoint::y#6 addpoint::c#6 ] -- cowo1_staridx_zpby1=aby + ldx 8 + sta 4096,x +//SEG203 [94] *((word) 4352 + (byte) numpoints#19) ← (byte) addpoint::y#6 [ numpoints#19 addpoint::c#6 ] -- cowo1_staridx_zpby1=yby + tya + ldy 8 sta 4352,y -//SEG204 [95] *((word) 4608 + (byte) addpoint::idx#6) ← (byte) addpoint::c#6 [ ] -- cowo1_staridx_yby=zpby1 +//SEG204 [95] *((word) 4608 + (byte) numpoints#19) ← (byte) addpoint::c#6 [ numpoints#19 ] -- cowo1_staridx_zpby1=zpby2 lda 2 - sta 4608,y -//SEG205 addpoint::@return + ldx 8 + sta 4608,x +//SEG205 [96] (byte) numpoints#1 ← ++ (byte) numpoints#19 [ ] -- zpby1=_inc_zpby1 + inc 8 +//SEG206 addpoint::@return addpoint__Breturn: -//SEG206 [96] return [ ] +//SEG207 [97] return [ ] rts diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym index 83b7375f3..d17a534ed 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym @@ -6,16 +6,14 @@ (byte*) SCREEN (byte[256]) XPOS (byte[256]) YPOS -(void()) addpoint((byte) addpoint::idx , (byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) +(void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c) (label) addpoint::@return (byte) addpoint::c (byte) addpoint::c#6 zp byte:2 0.6666666666666666 -(byte) addpoint::idx -(byte) addpoint::idx#6 reg byte y 2.0 (byte) addpoint::x (byte) addpoint::x#6 reg byte a 2.0 (byte) addpoint::y -(byte) addpoint::y#6 reg byte x 1.0 +(byte) addpoint::y#6 reg byte y 1.0 (void()) animate() (byte~) animate::$0 reg byte a 4.0 (byte~) animate::$1 reg byte a 4.0 @@ -84,13 +82,13 @@ (byte) findcol::return (byte) findcol::return#0 reg byte y 3667.333333333333 (byte) findcol::x -(byte) findcol::x#0 zp byte:8 1782.8260869565217 +(byte) findcol::x#0 zp byte:9 1782.8260869565217 (byte) findcol::xp (byte) findcol::xp#0 zp byte:7 10001.0 (byte) findcol::y -(byte) findcol::y#0 zp byte:9 1863.8636363636363 +(byte) findcol::y#0 zp byte:10 1863.8636363636363 (byte) findcol::yp -(byte) findcol::yp#0 zp byte:10 6250.625 +(byte) findcol::yp#0 zp byte:11 6250.625 (void()) initscreen() (label) initscreen::@1 (label) initscreen::@return @@ -109,6 +107,8 @@ (label) main::@8 (label) main::@return (byte) numpoints +(byte) numpoints#1 zp byte:8 286.0857142857144 +(byte) numpoints#19 zp byte:8 4.5 (void()) render() (label) render::@1 (label) render::@2 @@ -136,8 +136,8 @@ zp byte:7 [ findcol::diff#4 findcol::diff#0 findcol::diff#1 findcol::xp#0 ] reg byte a [ findcol::diff#6 findcol::diff#3 findcol::diff#2 ] reg byte y [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ] reg byte a [ addpoint::x#6 ] -reg byte y [ addpoint::idx#6 ] -reg byte x [ addpoint::y#6 ] +zp byte:8 [ numpoints#19 numpoints#1 ] +reg byte y [ addpoint::y#6 ] reg byte a [ animate::$0 ] reg byte a [ animate::$1 ] reg byte a [ animate::$2 ] @@ -158,9 +158,9 @@ reg byte a [ animate::$21 ] reg byte a [ animate::$22 ] reg byte a [ animate::$24 ] reg byte a [ animate::$25 ] -zp byte:8 [ findcol::x#0 ] -zp byte:9 [ findcol::y#0 ] +zp byte:9 [ findcol::x#0 ] +zp byte:10 [ findcol::y#0 ] reg byte a [ render::col#0 ] -zp byte:10 [ findcol::yp#0 ] +zp byte:11 [ findcol::yp#0 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$8 ] diff --git a/src/main/java/dk/camelot64/kickc/test/voronoi.kc b/src/main/java/dk/camelot64/kickc/test/voronoi.kc index 7a300c1ab..d70ff14d6 100644 --- a/src/main/java/dk/camelot64/kickc/test/voronoi.kc +++ b/src/main/java/dk/camelot64/kickc/test/voronoi.kc @@ -5,7 +5,7 @@ byte *COLORS = $D800; byte FILL = 230; // The total number of voronoi points -byte numpoints = 6; +byte numpoints = 0; // Points to create the Voronoi from byte[$100] XPOS = $1000; @@ -15,12 +15,12 @@ byte[$100] COLS = $1200; main(); void main() { - addpoint(0, 5, 5, 1); - addpoint(1, 15, 8, 2); - addpoint(2, 6, 14, 3); - addpoint(3, 34, 2, 4); - addpoint(4, 21, 17, 5); - addpoint(5, 31, 22, 7); + addpoint(5, 5, 1); + addpoint(15, 8, 2); + addpoint(6, 14, 3); + addpoint(34, 2, 4); + addpoint(21, 17, 5); + addpoint(31, 22, 7); initscreen(); do { render(); @@ -55,10 +55,11 @@ void animate() { } } -void addpoint(byte idx, byte x, byte y, byte c) { - XPOS[idx] = x; - YPOS[idx] = y; - COLS[idx] = c; +void addpoint(byte x, byte y, byte c) { + XPOS[numpoints] = x; + YPOS[numpoints] = y; + COLS[numpoints] = c; + numpoints++; } void initscreen() {