1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Made all declared arrays/strings implicitly constant.

This commit is contained in:
jespergravgaard 2017-12-27 22:08:15 +01:00
parent 4a7dd31d40
commit 347fc03f47
31 changed files with 978 additions and 3893 deletions

View File

@ -425,6 +425,12 @@ public class SymbolTypeInference {
symbol.setTypeInferred(type);
}
}
// If the type is an array or a string the symbol is constant
if(symbol.getType() instanceof SymbolTypeArray) {
symbol.setDeclaredConstant(true);
} else if(SymbolType.STRING.equals(symbol.getType())) {
symbol.setDeclaredConstant(true);
}
}
}

View File

@ -38,7 +38,6 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization {
// Replace all usages of the constants in constant definitions inside the symbol table
replaceInSymbolTable(inline);
for (ConstantRef constantRef : inline.keySet()) {
getLog().append("Constant inlined " + constantRef.toString()+" = "+inline.get(constantRef).toString(getProgram()));
}
@ -90,7 +89,7 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization {
Collection<ConstantVar> allConstants = getProgram().getScope().getAllConstants(true);
for (ConstantVar constant : allConstants) {
if(constant.getRef().isIntermediate()) {
if(!(constant.getValue() instanceof ConstantString) && !(constant.getValue() instanceof ConstantArray)) {
if(!(constant.getType().equals(SymbolType.STRING)) && !(constant.getValue() instanceof ConstantArray)) {
unnamed.put(constant.getRef(), constant.getValue());
}
}

View File

@ -1956,8 +1956,6 @@ CONTROL FLOW GRAPH SSA
to:@10
main: scope:[main] from @10
(byte) lines_cnt#8 ← phi( @10/(byte) lines_cnt#9 )
(byte[]) lines_y#8 ← phi( @10/(byte[]) lines_y#9 )
(byte[]) lines_x#8 ← phi( @10/(byte[]) lines_x#9 )
(byte*) D018#1 ← phi( @10/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#4 )
(byte*) D011#1 ← phi( @10/(byte*) D011#2 )
@ -1983,25 +1981,17 @@ main: scope:[main] from @10
to:main::@3
main::@3: scope:[main] from main
(byte) lines_cnt#7 ← phi( main/(byte) lines_cnt#8 )
(byte[]) lines_y#7 ← phi( main/(byte[]) lines_y#8 )
(byte[]) lines_x#7 ← phi( main/(byte[]) lines_x#8 )
call init_plot_tables param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte) lines_cnt#5 ← phi( main::@3/(byte) lines_cnt#7 )
(byte[]) lines_y#5 ← phi( main::@3/(byte[]) lines_y#7 )
(byte[]) lines_x#5 ← phi( main::@3/(byte[]) lines_x#7 )
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 main::@5/(byte) lines_cnt#6 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 main::@5/(byte[]) lines_y#6 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 main::@5/(byte[]) lines_x#6 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
(byte) lines_cnt#6 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#6 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#6 ← phi( main::@1/(byte[]) lines_x#4 )
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@5
@ -2009,26 +1999,20 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
(byte[]) lines_y#3 ← phi( lines::@1/(byte[]) lines_y#1 )
(byte[]) lines_x#3 ← phi( lines::@1/(byte[]) lines_x#1 )
(byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 )
(byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 )
(byte) lines::l#1 ← ++ (byte) lines::l#3
@ -2592,8 +2576,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@10: scope:[] from @begin
(byte) lines_cnt#9 ← phi( @begin/(byte) lines_cnt#0 )
(byte[]) lines_y#9 ← phi( @begin/(byte[]) lines_y#0 )
(byte[]) lines_x#9 ← phi( @begin/(byte[]) lines_x#0 )
(byte*) D018#2 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte*) D011#2 ← phi( @begin/(byte*) D011#0 )
@ -2630,8 +2612,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@10
main: scope:[main] from @10
(byte) lines_cnt#8 ← phi( @10/(byte) lines_cnt#9 )
(byte[]) lines_y#8 ← phi( @10/(byte[]) lines_y#9 )
(byte[]) lines_x#8 ← phi( @10/(byte[]) lines_x#9 )
(byte*) D018#1 ← phi( @10/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#4 )
(byte*) D011#1 ← phi( @10/(byte*) D011#2 )
@ -2657,25 +2637,17 @@ main: scope:[main] from @10
to:main::@3
main::@3: scope:[main] from main
(byte) lines_cnt#7 ← phi( main/(byte) lines_cnt#8 )
(byte[]) lines_y#7 ← phi( main/(byte[]) lines_y#8 )
(byte[]) lines_x#7 ← phi( main/(byte[]) lines_x#8 )
call init_plot_tables param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte) lines_cnt#5 ← phi( main::@3/(byte) lines_cnt#7 )
(byte[]) lines_y#5 ← phi( main::@3/(byte[]) lines_y#7 )
(byte[]) lines_x#5 ← phi( main::@3/(byte[]) lines_x#7 )
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 main::@5/(byte) lines_cnt#6 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 main::@5/(byte[]) lines_y#6 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 main::@5/(byte[]) lines_x#6 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
(byte) lines_cnt#6 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#6 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#6 ← phi( main::@1/(byte[]) lines_x#4 )
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@5
@ -2683,26 +2655,20 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
(byte[]) lines_y#3 ← phi( lines::@1/(byte[]) lines_y#1 )
(byte[]) lines_x#3 ← phi( lines::@1/(byte[]) lines_x#1 )
(byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 )
(byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 )
(byte) lines::l#1 ← ++ (byte) lines::l#3
@ -3266,8 +3232,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@10: scope:[] from @begin
(byte) lines_cnt#9 ← phi( @begin/(byte) lines_cnt#0 )
(byte[]) lines_y#9 ← phi( @begin/(byte[]) lines_y#0 )
(byte[]) lines_x#9 ← phi( @begin/(byte[]) lines_x#0 )
(byte*) D018#2 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte*) D011#2 ← phi( @begin/(byte*) D011#0 )
@ -3808,26 +3772,8 @@ INITIAL SSA SYMBOL TABLE
(byte) lines_cnt#9
(byte[]) lines_x
(byte[]) lines_x#0
(byte[]) lines_x#1
(byte[]) lines_x#2
(byte[]) lines_x#3
(byte[]) lines_x#4
(byte[]) lines_x#5
(byte[]) lines_x#6
(byte[]) lines_x#7
(byte[]) lines_x#8
(byte[]) lines_x#9
(byte[]) lines_y
(byte[]) lines_y#0
(byte[]) lines_y#1
(byte[]) lines_y#2
(byte[]) lines_y#3
(byte[]) lines_y#4
(byte[]) lines_y#5
(byte[]) lines_y#6
(byte[]) lines_y#7
(byte[]) lines_y#8
(byte[]) lines_y#9
(void()) main()
(byte~) main::$0
(byte~) main::$1
@ -3908,8 +3854,6 @@ CONTROL FLOW GRAPH
to:@10
main: scope:[main] from @10
(byte) lines_cnt#8 ← phi( @10/(byte) lines_cnt#9 )
(byte[]) lines_y#8 ← phi( @10/(byte[]) lines_y#9 )
(byte[]) lines_x#8 ← phi( @10/(byte[]) lines_x#9 )
(byte*) D018#1 ← phi( @10/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#4 )
(byte*) D011#1 ← phi( @10/(byte*) D011#2 )
@ -3935,25 +3879,17 @@ main: scope:[main] from @10
to:main::@3
main::@3: scope:[main] from main
(byte) lines_cnt#7 ← phi( main/(byte) lines_cnt#8 )
(byte[]) lines_y#7 ← phi( main/(byte[]) lines_y#8 )
(byte[]) lines_x#7 ← phi( main/(byte[]) lines_x#8 )
call init_plot_tables param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte) lines_cnt#5 ← phi( main::@3/(byte) lines_cnt#7 )
(byte[]) lines_y#5 ← phi( main::@3/(byte[]) lines_y#7 )
(byte[]) lines_x#5 ← phi( main::@3/(byte[]) lines_x#7 )
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 main::@5/(byte) lines_cnt#6 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 main::@5/(byte[]) lines_y#6 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 main::@5/(byte[]) lines_x#6 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
(byte) lines_cnt#6 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#6 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#6 ← phi( main::@1/(byte[]) lines_x#4 )
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@5
@ -3961,26 +3897,20 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
(byte[]) lines_y#3 ← phi( lines::@1/(byte[]) lines_y#1 )
(byte[]) lines_x#3 ← phi( lines::@1/(byte[]) lines_x#1 )
(byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 )
(byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 )
(byte) lines::l#1 ← ++ (byte) lines::l#3
@ -4528,8 +4458,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@10: scope:[] from @begin
(byte) lines_cnt#9 ← phi( @begin/(byte) lines_cnt#0 )
(byte[]) lines_y#9 ← phi( @begin/(byte[]) lines_y#0 )
(byte[]) lines_x#9 ← phi( @begin/(byte[]) lines_x#0 )
(byte*) D018#2 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte*) D011#2 ← phi( @begin/(byte*) D011#0 )
@ -4578,8 +4506,6 @@ CONTROL FLOW GRAPH
to:@10
main: scope:[main] from @10
(byte) lines_cnt#8 ← phi( @10/(byte) lines_cnt#9 )
(byte[]) lines_y#8 ← phi( @10/(byte[]) lines_y#9 )
(byte[]) lines_x#8 ← phi( @10/(byte[]) lines_x#9 )
(byte*) D018#1 ← phi( @10/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#4 )
(byte*) D011#1 ← phi( @10/(byte*) D011#2 )
@ -4605,25 +4531,17 @@ main: scope:[main] from @10
to:main::@3
main::@3: scope:[main] from main
(byte) lines_cnt#7 ← phi( main/(byte) lines_cnt#8 )
(byte[]) lines_y#7 ← phi( main/(byte[]) lines_y#8 )
(byte[]) lines_x#7 ← phi( main/(byte[]) lines_x#8 )
call init_plot_tables param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte) lines_cnt#5 ← phi( main::@3/(byte) lines_cnt#7 )
(byte[]) lines_y#5 ← phi( main::@3/(byte[]) lines_y#7 )
(byte[]) lines_x#5 ← phi( main::@3/(byte[]) lines_x#7 )
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 main::@5/(byte) lines_cnt#6 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 main::@5/(byte[]) lines_y#6 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 main::@5/(byte[]) lines_x#6 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
(byte) lines_cnt#6 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#6 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#6 ← phi( main::@1/(byte[]) lines_x#4 )
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@5
@ -4631,26 +4549,20 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
(byte[]) lines_y#3 ← phi( lines::@1/(byte[]) lines_y#1 )
(byte[]) lines_x#3 ← phi( lines::@1/(byte[]) lines_x#1 )
(byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 )
(byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 )
(byte) lines::l#1 ← ++ (byte) lines::l#3
@ -5185,8 +5097,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@10: scope:[] from @begin
(byte) lines_cnt#9 ← phi( @begin/(byte) lines_cnt#0 )
(byte[]) lines_y#9 ← phi( @begin/(byte[]) lines_y#0 )
(byte[]) lines_x#9 ← phi( @begin/(byte[]) lines_x#0 )
(byte*) D018#2 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte*) D011#2 ← phi( @begin/(byte*) D011#0 )
@ -5207,11 +5117,7 @@ Not aliassing across scopes: RSEL#1 RSEL#2
Not aliassing across scopes: D011#1 D011#2
Not aliassing across scopes: SCREEN#1 SCREEN#4
Not aliassing across scopes: D018#1 D018#2
Not aliassing across scopes: lines_x#8 lines_x#9
Not aliassing across scopes: lines_y#8 lines_y#9
Not aliassing across scopes: lines_cnt#8 lines_cnt#9
Not aliassing across scopes: lines_x#2 lines_x#4
Not aliassing across scopes: lines_y#2 lines_y#4
Not aliassing across scopes: lines_cnt#3 lines_cnt#4
Not aliassing across scopes: line::x0#1 line::x0#0
Not aliassing across scopes: line::x1#1 line::x1#0
@ -5291,16 +5197,10 @@ Not aliassing across scopes: SCREEN#6 SCREEN#1
Not aliassing across scopes: init_screen::b#0 BITMAP#0
Not aliassing across scopes: init_screen::c#0 SCREEN#2
Not aliassing identity: SCREEN#3 SCREEN#3
Alias (byte[]) lines_x#5 = (byte[]) lines_x#7 (byte[]) lines_x#8
Alias (byte[]) lines_y#5 = (byte[]) lines_y#7 (byte[]) lines_y#8
Alias (byte) lines_cnt#5 = (byte) lines_cnt#7 (byte) lines_cnt#8
Alias (byte[]) lines_x#4 = (byte[]) lines_x#6
Alias (byte[]) lines_y#4 = (byte[]) lines_y#6
Alias (byte) lines_cnt#4 = (byte) lines_cnt#6
Alias (byte) lines::l#2 = (byte) lines::l#3
Alias (byte) lines_cnt#1 = (byte) lines_cnt#2
Alias (byte[]) lines_x#1 = (byte[]) lines_x#3
Alias (byte[]) lines_y#1 = (byte[]) lines_y#3
Alias (byte) line::x0#1 = (byte) line::x0#2 (byte) line::x0#3 (byte) line::x0#11 (byte) line::x0#10 (byte) line::x0#4 (byte) line::x0#5 (byte) line::x0#6 (byte) line::x0#13 (byte) line::x0#12 (byte) line::x0#7 (byte) line::x0#8 (byte) line::x0#9
Alias (byte) line::x1#1 = (byte) line::x1#2 (byte) line::x1#3 (byte) line::x1#11 (byte) line::x1#10 (byte) line::x1#4 (byte) line::x1#5 (byte) line::x1#6 (byte) line::x1#13 (byte) line::x1#12 (byte) line::x1#7 (byte) line::x1#8 (byte) line::x1#9
Alias (byte) line::y0#1 = (byte) line::y0#13 (byte) line::y0#2 (byte) line::y0#3 (byte) line::y0#4 (byte) line::y0#5 (byte) line::y0#6 (byte) line::y0#7 (byte) line::y0#8 (byte) line::y0#9 (byte) line::y0#10 (byte) line::y0#11 (byte) line::y0#12
@ -5369,8 +5269,6 @@ Alias (byte) RSEL#0 = (byte) RSEL#2
Alias (byte*) D011#0 = (byte*) D011#2
Alias (byte*) SCREEN#0 = (byte*) SCREEN#4
Alias (byte*) D018#0 = (byte*) D018#2
Alias (byte[]) lines_x#0 = (byte[]) lines_x#9
Alias (byte[]) lines_y#0 = (byte[]) lines_y#9
Alias (byte) lines_cnt#0 = (byte) lines_cnt#9
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -5395,8 +5293,6 @@ CONTROL FLOW GRAPH
to:@10
main: scope:[main] from @10
(byte) lines_cnt#5 ← phi( @10/(byte) lines_cnt#0 )
(byte[]) lines_y#5 ← phi( @10/(byte[]) lines_y#0 )
(byte[]) lines_x#5 ← phi( @10/(byte[]) lines_x#0 )
(byte*) D018#1 ← phi( @10/(byte*) D018#0 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#0 )
(byte*) D011#1 ← phi( @10/(byte*) D011#0 )
@ -5427,8 +5323,6 @@ main::@4: scope:[main] from main::@3
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 main::@5/(byte) lines_cnt#4 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 main::@5/(byte[]) lines_y#4 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 main::@5/(byte[]) lines_x#4 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
@ -5439,21 +5333,17 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#1 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#1 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#1 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
@ -5852,11 +5742,7 @@ Not aliassing across scopes: RSEL#1 RSEL#0
Not aliassing across scopes: D011#1 D011#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: D018#1 D018#0
Not aliassing across scopes: lines_x#5 lines_x#0
Not aliassing across scopes: lines_y#5 lines_y#0
Not aliassing across scopes: lines_cnt#5 lines_cnt#0
Not aliassing across scopes: lines_x#2 lines_x#4
Not aliassing across scopes: lines_y#2 lines_y#4
Not aliassing across scopes: lines_cnt#3 lines_cnt#4
Not aliassing across scopes: line::x0#1 line::x0#0
Not aliassing across scopes: line::x1#1 line::x1#0
@ -5977,8 +5863,6 @@ CONTROL FLOW GRAPH
to:@10
main: scope:[main] from @10
(byte) lines_cnt#5 ← phi( @10/(byte) lines_cnt#0 )
(byte[]) lines_y#5 ← phi( @10/(byte[]) lines_y#0 )
(byte[]) lines_x#5 ← phi( @10/(byte[]) lines_x#0 )
(byte*) D018#1 ← phi( @10/(byte*) D018#0 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#0 )
(byte*) D011#1 ← phi( @10/(byte*) D011#0 )
@ -6009,8 +5893,6 @@ main::@4: scope:[main] from main::@3
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 main::@5/(byte) lines_cnt#4 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 main::@5/(byte[]) lines_y#4 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 main::@5/(byte[]) lines_x#4 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
@ -6021,21 +5903,17 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#1 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#1 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#1 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
@ -6416,11 +6294,7 @@ Not aliassing across scopes: RSEL#1 RSEL#0
Not aliassing across scopes: D011#1 D011#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: D018#1 D018#0
Not aliassing across scopes: lines_x#5 lines_x#0
Not aliassing across scopes: lines_y#5 lines_y#0
Not aliassing across scopes: lines_cnt#5 lines_cnt#0
Not aliassing across scopes: lines_x#2 lines_x#4
Not aliassing across scopes: lines_y#2 lines_y#4
Not aliassing across scopes: lines_cnt#3 lines_cnt#4
Not aliassing across scopes: line::x0#1 line::x0#0
Not aliassing across scopes: line::x1#1 line::x1#0
@ -6500,11 +6374,7 @@ Not aliassing across scopes: SCREEN#6 SCREEN#1
Not aliassing across scopes: init_screen::b#0 BITMAP#0
Not aliassing across scopes: init_screen::c#0 SCREEN#2
Not aliassing identity: SCREEN#3 SCREEN#3
Self Phi Eliminated (byte[]) lines_x#4
Self Phi Eliminated (byte[]) lines_y#4
Self Phi Eliminated (byte) lines_cnt#4
Self Phi Eliminated (byte[]) lines_x#1
Self Phi Eliminated (byte[]) lines_y#1
Self Phi Eliminated (byte) lines_cnt#1
Self Phi Eliminated (byte) line_xdyi::yd#3
Self Phi Eliminated (byte) line_xdyi::xd#2
@ -6543,8 +6413,6 @@ CONTROL FLOW GRAPH
to:@10
main: scope:[main] from @10
(byte) lines_cnt#5 ← phi( @10/(byte) lines_cnt#0 )
(byte[]) lines_y#5 ← phi( @10/(byte[]) lines_y#0 )
(byte[]) lines_x#5 ← phi( @10/(byte[]) lines_x#0 )
(byte*) D018#1 ← phi( @10/(byte*) D018#0 )
(byte*) SCREEN#1 ← phi( @10/(byte*) SCREEN#0 )
(byte*) D011#1 ← phi( @10/(byte*) D011#0 )
@ -6575,8 +6443,6 @@ main::@4: scope:[main] from main::@3
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
(byte) lines_cnt#4 ← phi( main::@4/(byte) lines_cnt#5 )
(byte[]) lines_y#4 ← phi( main::@4/(byte[]) lines_y#5 )
(byte[]) lines_x#4 ← phi( main::@4/(byte[]) lines_x#5 )
call lines param-assignment
to:main::@5
main::@5: scope:[main] from main::@1
@ -6587,21 +6453,17 @@ main::@return: scope:[main] from main::@5
to:@return
lines: scope:[lines] from main::@1
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
(byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 )
(byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 )
(byte) lines::l#0 ← (byte/signed byte/word/signed word) 0
to:lines::@1
lines::@1: scope:[lines] from lines lines::@3
(byte) lines_cnt#1 ← phi( lines/(byte) lines_cnt#3 )
(byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 )
(byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 )
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
(byte/word~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte/word~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1
(byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte/word~) lines::$1)
(byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2)
(byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte/word~) lines::$0)
(byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2)
(byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte/word~) lines::$1)
call line param-assignment
to:lines::@3
lines::@3: scope:[lines] from lines::@1
@ -6982,17 +6844,9 @@ Redundant Phi (byte) RSEL#1 (byte) RSEL#0
Redundant Phi (byte*) D011#1 (byte*) D011#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) D018#1 (byte*) D018#0
Redundant Phi (byte[]) lines_x#5 (byte[]) lines_x#0
Redundant Phi (byte[]) lines_y#5 (byte[]) lines_y#0
Redundant Phi (byte) lines_cnt#5 (byte) lines_cnt#0
Redundant Phi (byte[]) lines_x#4 (byte[]) lines_x#5
Redundant Phi (byte[]) lines_y#4 (byte[]) lines_y#5
Redundant Phi (byte) lines_cnt#4 (byte) lines_cnt#5
Redundant Phi (byte[]) lines_x#2 (byte[]) lines_x#4
Redundant Phi (byte[]) lines_y#2 (byte[]) lines_y#4
Redundant Phi (byte) lines_cnt#3 (byte) lines_cnt#4
Redundant Phi (byte[]) lines_x#1 (byte[]) lines_x#2
Redundant Phi (byte[]) lines_y#1 (byte[]) lines_y#2
Redundant Phi (byte) lines_cnt#1 (byte) lines_cnt#3
Redundant Phi (byte) line::x0#1 (byte) line::x0#0
Redundant Phi (byte) line::x1#1 (byte) line::x1#0

View File

@ -943,8 +943,6 @@ CONTROL FLOW GRAPH SSA
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#11 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#11 )
(byte*) RASTER#6 ← phi( @5/(byte*) RASTER#8 )
(byte*) D018#1 ← phi( @5/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#4 )
@ -971,30 +969,22 @@ main: scope:[main] from @5
to:main::@5
main::@5: scope:[main] from main
(byte) plots_cnt#8 ← phi( main/(byte) plots_cnt#10 )
(byte[]) plots_y#8 ← phi( main/(byte[]) plots_y#10 )
(byte[]) plots_x#8 ← phi( main/(byte[]) plots_x#10 )
(byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#1 )
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#6 )
call init_plot_tables param-assignment
to:main::@6
main::@6: scope:[main] from main::@5
(byte) plots_cnt#7 ← phi( main::@5/(byte) plots_cnt#8 )
(byte[]) plots_y#7 ← phi( main::@5/(byte[]) plots_y#8 )
(byte[]) plots_x#7 ← phi( main::@5/(byte[]) plots_x#8 )
(byte*) BGCOL#7 ← phi( main::@5/(byte*) BGCOL#9 )
(byte*) RASTER#3 ← phi( main::@5/(byte*) RASTER#4 )
to:main::@2
main::@1: scope:[main] from main::@7
(byte) plots_cnt#6 ← phi( main::@7/(byte) plots_cnt#9 )
(byte[]) plots_y#6 ← phi( main::@7/(byte[]) plots_y#9 )
(byte[]) plots_x#6 ← phi( main::@7/(byte[]) plots_x#9 )
(byte*) BGCOL#6 ← phi( main::@7/(byte*) BGCOL#3 )
(byte*) RASTER#2 ← phi( main::@7/(byte*) RASTER#5 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#5 ← phi( main::@1/(byte) plots_cnt#6 main::@2/(byte) plots_cnt#5 main::@6/(byte) plots_cnt#7 )
(byte[]) plots_y#5 ← phi( main::@1/(byte[]) plots_y#6 main::@2/(byte[]) plots_y#5 main::@6/(byte[]) plots_y#7 )
(byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 )
(byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 )
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -1003,16 +993,12 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6
main::@3: scope:[main] from main::@2
(byte) plots_cnt#4 ← phi( main::@2/(byte) plots_cnt#5 )
(byte*) RASTER#7 ← phi( main::@2/(byte*) RASTER#1 )
(byte[]) plots_y#4 ← phi( main::@2/(byte[]) plots_y#5 )
(byte[]) plots_x#4 ← phi( main::@2/(byte[]) plots_x#5 )
(byte*) BGCOL#2 ← phi( main::@2/(byte*) BGCOL#5 )
*((byte*) BGCOL#2) ← ++ *((byte*) BGCOL#2)
call plots param-assignment
to:main::@7
main::@7: scope:[main] from main::@3
(byte) plots_cnt#9 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#9 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#9 ← phi( main::@3/(byte[]) plots_x#4 )
(byte*) RASTER#5 ← phi( main::@3/(byte*) RASTER#7 )
(byte*) BGCOL#3 ← phi( main::@3/(byte*) BGCOL#2 )
*((byte*) BGCOL#3) ← -- *((byte*) BGCOL#3)
@ -1037,22 +1023,16 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#2 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
(byte[]) plots_y#3 ← phi( plots::@1/(byte[]) plots_y#1 )
(byte[]) plots_x#3 ← phi( plots::@1/(byte[]) plots_x#1 )
(byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 )
(byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 )
(byte) plots::i#1 ← ++ (byte) plots::i#3
@ -1064,8 +1044,6 @@ plots::@return: scope:[plots] from plots::@3
to:@return
@2: scope:[] from @1
(byte) plots_cnt#12 ← phi( @1/(byte) plots_cnt#0 )
(byte[]) plots_y#12 ← phi( @1/(byte[]) plots_y#0 )
(byte[]) plots_x#12 ← phi( @1/(byte[]) plots_x#0 )
(byte*) RASTER#9 ← phi( @1/(byte*) RASTER#10 )
(byte*) D018#3 ← phi( @1/(byte*) D018#4 )
(byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
@ -1197,8 +1175,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@5: scope:[] from @2
(byte) plots_cnt#11 ← phi( @2/(byte) plots_cnt#12 )
(byte[]) plots_y#11 ← phi( @2/(byte[]) plots_y#12 )
(byte[]) plots_x#11 ← phi( @2/(byte[]) plots_x#12 )
(byte*) RASTER#8 ← phi( @2/(byte*) RASTER#9 )
(byte*) D018#2 ← phi( @2/(byte*) D018#3 )
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#7 )
@ -1229,8 +1205,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#11 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#11 )
(byte*) RASTER#6 ← phi( @5/(byte*) RASTER#8 )
(byte*) D018#1 ← phi( @5/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#4 )
@ -1257,30 +1231,22 @@ main: scope:[main] from @5
to:main::@5
main::@5: scope:[main] from main
(byte) plots_cnt#8 ← phi( main/(byte) plots_cnt#10 )
(byte[]) plots_y#8 ← phi( main/(byte[]) plots_y#10 )
(byte[]) plots_x#8 ← phi( main/(byte[]) plots_x#10 )
(byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#1 )
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#6 )
call init_plot_tables param-assignment
to:main::@6
main::@6: scope:[main] from main::@5
(byte) plots_cnt#7 ← phi( main::@5/(byte) plots_cnt#8 )
(byte[]) plots_y#7 ← phi( main::@5/(byte[]) plots_y#8 )
(byte[]) plots_x#7 ← phi( main::@5/(byte[]) plots_x#8 )
(byte*) BGCOL#7 ← phi( main::@5/(byte*) BGCOL#9 )
(byte*) RASTER#3 ← phi( main::@5/(byte*) RASTER#4 )
to:main::@2
main::@1: scope:[main] from main::@7
(byte) plots_cnt#6 ← phi( main::@7/(byte) plots_cnt#9 )
(byte[]) plots_y#6 ← phi( main::@7/(byte[]) plots_y#9 )
(byte[]) plots_x#6 ← phi( main::@7/(byte[]) plots_x#9 )
(byte*) BGCOL#6 ← phi( main::@7/(byte*) BGCOL#3 )
(byte*) RASTER#2 ← phi( main::@7/(byte*) RASTER#5 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#5 ← phi( main::@1/(byte) plots_cnt#6 main::@2/(byte) plots_cnt#5 main::@6/(byte) plots_cnt#7 )
(byte[]) plots_y#5 ← phi( main::@1/(byte[]) plots_y#6 main::@2/(byte[]) plots_y#5 main::@6/(byte[]) plots_y#7 )
(byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 )
(byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 )
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -1289,16 +1255,12 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6
main::@3: scope:[main] from main::@2
(byte) plots_cnt#4 ← phi( main::@2/(byte) plots_cnt#5 )
(byte*) RASTER#7 ← phi( main::@2/(byte*) RASTER#1 )
(byte[]) plots_y#4 ← phi( main::@2/(byte[]) plots_y#5 )
(byte[]) plots_x#4 ← phi( main::@2/(byte[]) plots_x#5 )
(byte*) BGCOL#2 ← phi( main::@2/(byte*) BGCOL#5 )
*((byte*) BGCOL#2) ← ++ *((byte*) BGCOL#2)
call plots param-assignment
to:main::@7
main::@7: scope:[main] from main::@3
(byte) plots_cnt#9 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#9 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#9 ← phi( main::@3/(byte[]) plots_x#4 )
(byte*) RASTER#5 ← phi( main::@3/(byte*) RASTER#7 )
(byte*) BGCOL#3 ← phi( main::@3/(byte*) BGCOL#2 )
*((byte*) BGCOL#3) ← -- *((byte*) BGCOL#3)
@ -1323,22 +1285,16 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#2 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
(byte[]) plots_y#3 ← phi( plots::@1/(byte[]) plots_y#1 )
(byte[]) plots_x#3 ← phi( plots::@1/(byte[]) plots_x#1 )
(byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 )
(byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 )
(byte) plots::i#1 ← ++ (byte) plots::i#3
@ -1350,8 +1306,6 @@ plots::@return: scope:[plots] from plots::@3
to:@return
@2: scope:[] from @1
(byte) plots_cnt#12 ← phi( @1/(byte) plots_cnt#0 )
(byte[]) plots_y#12 ← phi( @1/(byte[]) plots_y#0 )
(byte[]) plots_x#12 ← phi( @1/(byte[]) plots_x#0 )
(byte*) RASTER#9 ← phi( @1/(byte*) RASTER#10 )
(byte*) D018#3 ← phi( @1/(byte*) D018#4 )
(byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
@ -1483,8 +1437,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@5: scope:[] from @2
(byte) plots_cnt#11 ← phi( @2/(byte) plots_cnt#12 )
(byte[]) plots_y#11 ← phi( @2/(byte[]) plots_y#12 )
(byte[]) plots_x#11 ← phi( @2/(byte[]) plots_x#12 )
(byte*) RASTER#8 ← phi( @2/(byte*) RASTER#9 )
(byte*) D018#2 ← phi( @2/(byte*) D018#3 )
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#7 )
@ -1723,32 +1675,8 @@ INITIAL SSA SYMBOL TABLE
(byte) plots_cnt#9
(byte[]) plots_x
(byte[]) plots_x#0
(byte[]) plots_x#1
(byte[]) plots_x#10
(byte[]) plots_x#11
(byte[]) plots_x#12
(byte[]) plots_x#2
(byte[]) plots_x#3
(byte[]) plots_x#4
(byte[]) plots_x#5
(byte[]) plots_x#6
(byte[]) plots_x#7
(byte[]) plots_x#8
(byte[]) plots_x#9
(byte[]) plots_y
(byte[]) plots_y#0
(byte[]) plots_y#1
(byte[]) plots_y#10
(byte[]) plots_y#11
(byte[]) plots_y#12
(byte[]) plots_y#2
(byte[]) plots_y#3
(byte[]) plots_y#4
(byte[]) plots_y#5
(byte[]) plots_y#6
(byte[]) plots_y#7
(byte[]) plots_y#8
(byte[]) plots_y#9
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
@ -1767,8 +1695,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#11 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#11 )
(byte*) RASTER#6 ← phi( @5/(byte*) RASTER#8 )
(byte*) D018#1 ← phi( @5/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#4 )
@ -1795,30 +1721,22 @@ main: scope:[main] from @5
to:main::@5
main::@5: scope:[main] from main
(byte) plots_cnt#8 ← phi( main/(byte) plots_cnt#10 )
(byte[]) plots_y#8 ← phi( main/(byte[]) plots_y#10 )
(byte[]) plots_x#8 ← phi( main/(byte[]) plots_x#10 )
(byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#1 )
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#6 )
call init_plot_tables param-assignment
to:main::@6
main::@6: scope:[main] from main::@5
(byte) plots_cnt#7 ← phi( main::@5/(byte) plots_cnt#8 )
(byte[]) plots_y#7 ← phi( main::@5/(byte[]) plots_y#8 )
(byte[]) plots_x#7 ← phi( main::@5/(byte[]) plots_x#8 )
(byte*) BGCOL#7 ← phi( main::@5/(byte*) BGCOL#9 )
(byte*) RASTER#3 ← phi( main::@5/(byte*) RASTER#4 )
to:main::@2
main::@1: scope:[main] from main::@7
(byte) plots_cnt#6 ← phi( main::@7/(byte) plots_cnt#9 )
(byte[]) plots_y#6 ← phi( main::@7/(byte[]) plots_y#9 )
(byte[]) plots_x#6 ← phi( main::@7/(byte[]) plots_x#9 )
(byte*) BGCOL#6 ← phi( main::@7/(byte*) BGCOL#3 )
(byte*) RASTER#2 ← phi( main::@7/(byte*) RASTER#5 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#5 ← phi( main::@1/(byte) plots_cnt#6 main::@2/(byte) plots_cnt#5 main::@6/(byte) plots_cnt#7 )
(byte[]) plots_y#5 ← phi( main::@1/(byte[]) plots_y#6 main::@2/(byte[]) plots_y#5 main::@6/(byte[]) plots_y#7 )
(byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 )
(byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 )
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -1827,16 +1745,12 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6
main::@3: scope:[main] from main::@2
(byte) plots_cnt#4 ← phi( main::@2/(byte) plots_cnt#5 )
(byte*) RASTER#7 ← phi( main::@2/(byte*) RASTER#1 )
(byte[]) plots_y#4 ← phi( main::@2/(byte[]) plots_y#5 )
(byte[]) plots_x#4 ← phi( main::@2/(byte[]) plots_x#5 )
(byte*) BGCOL#2 ← phi( main::@2/(byte*) BGCOL#5 )
*((byte*) BGCOL#2) ← ++ *((byte*) BGCOL#2)
call plots param-assignment
to:main::@7
main::@7: scope:[main] from main::@3
(byte) plots_cnt#9 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#9 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#9 ← phi( main::@3/(byte[]) plots_x#4 )
(byte*) RASTER#5 ← phi( main::@3/(byte*) RASTER#7 )
(byte*) BGCOL#3 ← phi( main::@3/(byte*) BGCOL#2 )
*((byte*) BGCOL#3) ← -- *((byte*) BGCOL#3)
@ -1861,22 +1775,16 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#2 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
(byte[]) plots_y#3 ← phi( plots::@1/(byte[]) plots_y#1 )
(byte[]) plots_x#3 ← phi( plots::@1/(byte[]) plots_x#1 )
(byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 )
(byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 )
(byte) plots::i#1 ← ++ (byte) plots::i#3
@ -1888,8 +1796,6 @@ plots::@return: scope:[plots] from plots::@3
to:@return
@2: scope:[] from @1
(byte) plots_cnt#12 ← phi( @1/(byte) plots_cnt#0 )
(byte[]) plots_y#12 ← phi( @1/(byte[]) plots_y#0 )
(byte[]) plots_x#12 ← phi( @1/(byte[]) plots_x#0 )
(byte*) RASTER#9 ← phi( @1/(byte*) RASTER#10 )
(byte*) D018#3 ← phi( @1/(byte*) D018#4 )
(byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
@ -2021,8 +1927,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@5: scope:[] from @2
(byte) plots_cnt#11 ← phi( @2/(byte) plots_cnt#12 )
(byte[]) plots_y#11 ← phi( @2/(byte[]) plots_y#12 )
(byte[]) plots_x#11 ← phi( @2/(byte[]) plots_x#12 )
(byte*) RASTER#8 ← phi( @2/(byte*) RASTER#9 )
(byte*) D018#2 ← phi( @2/(byte*) D018#3 )
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#7 )
@ -2054,8 +1958,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#11 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#11 )
(byte*) RASTER#6 ← phi( @5/(byte*) RASTER#8 )
(byte*) D018#1 ← phi( @5/(byte*) D018#2 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#4 )
@ -2082,30 +1984,22 @@ main: scope:[main] from @5
to:main::@5
main::@5: scope:[main] from main
(byte) plots_cnt#8 ← phi( main/(byte) plots_cnt#10 )
(byte[]) plots_y#8 ← phi( main/(byte[]) plots_y#10 )
(byte[]) plots_x#8 ← phi( main/(byte[]) plots_x#10 )
(byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#1 )
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#6 )
call init_plot_tables param-assignment
to:main::@6
main::@6: scope:[main] from main::@5
(byte) plots_cnt#7 ← phi( main::@5/(byte) plots_cnt#8 )
(byte[]) plots_y#7 ← phi( main::@5/(byte[]) plots_y#8 )
(byte[]) plots_x#7 ← phi( main::@5/(byte[]) plots_x#8 )
(byte*) BGCOL#7 ← phi( main::@5/(byte*) BGCOL#9 )
(byte*) RASTER#3 ← phi( main::@5/(byte*) RASTER#4 )
to:main::@2
main::@1: scope:[main] from main::@7
(byte) plots_cnt#6 ← phi( main::@7/(byte) plots_cnt#9 )
(byte[]) plots_y#6 ← phi( main::@7/(byte[]) plots_y#9 )
(byte[]) plots_x#6 ← phi( main::@7/(byte[]) plots_x#9 )
(byte*) BGCOL#6 ← phi( main::@7/(byte*) BGCOL#3 )
(byte*) RASTER#2 ← phi( main::@7/(byte*) RASTER#5 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#5 ← phi( main::@1/(byte) plots_cnt#6 main::@2/(byte) plots_cnt#5 main::@6/(byte) plots_cnt#7 )
(byte[]) plots_y#5 ← phi( main::@1/(byte[]) plots_y#6 main::@2/(byte[]) plots_y#5 main::@6/(byte[]) plots_y#7 )
(byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 )
(byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 )
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -2114,16 +2008,12 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6
main::@3: scope:[main] from main::@2
(byte) plots_cnt#4 ← phi( main::@2/(byte) plots_cnt#5 )
(byte*) RASTER#7 ← phi( main::@2/(byte*) RASTER#1 )
(byte[]) plots_y#4 ← phi( main::@2/(byte[]) plots_y#5 )
(byte[]) plots_x#4 ← phi( main::@2/(byte[]) plots_x#5 )
(byte*) BGCOL#2 ← phi( main::@2/(byte*) BGCOL#5 )
*((byte*) BGCOL#2) ← ++ *((byte*) BGCOL#2)
call plots param-assignment
to:main::@7
main::@7: scope:[main] from main::@3
(byte) plots_cnt#9 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#9 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#9 ← phi( main::@3/(byte[]) plots_x#4 )
(byte*) RASTER#5 ← phi( main::@3/(byte*) RASTER#7 )
(byte*) BGCOL#3 ← phi( main::@3/(byte*) BGCOL#2 )
*((byte*) BGCOL#3) ← -- *((byte*) BGCOL#3)
@ -2148,22 +2038,16 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#2 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
(byte[]) plots_y#3 ← phi( plots::@1/(byte[]) plots_y#1 )
(byte[]) plots_x#3 ← phi( plots::@1/(byte[]) plots_x#1 )
(byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 )
(byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 )
(byte) plots::i#1 ← ++ (byte) plots::i#3
@ -2175,8 +2059,6 @@ plots::@return: scope:[plots] from plots::@3
to:@return
@2: scope:[] from @1
(byte) plots_cnt#12 ← phi( @1/(byte) plots_cnt#0 )
(byte[]) plots_y#12 ← phi( @1/(byte[]) plots_y#0 )
(byte[]) plots_x#12 ← phi( @1/(byte[]) plots_x#0 )
(byte*) RASTER#9 ← phi( @1/(byte*) RASTER#10 )
(byte*) D018#3 ← phi( @1/(byte*) D018#4 )
(byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
@ -2306,8 +2188,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
to:@return
@5: scope:[] from @2
(byte) plots_cnt#11 ← phi( @2/(byte) plots_cnt#12 )
(byte[]) plots_y#11 ← phi( @2/(byte[]) plots_y#12 )
(byte[]) plots_x#11 ← phi( @2/(byte[]) plots_x#12 )
(byte*) RASTER#8 ← phi( @2/(byte*) RASTER#9 )
(byte*) D018#2 ← phi( @2/(byte*) D018#3 )
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#7 )
@ -2330,11 +2210,7 @@ Not aliassing across scopes: D011#1 D011#2
Not aliassing across scopes: SCREEN#1 SCREEN#4
Not aliassing across scopes: D018#1 D018#2
Not aliassing across scopes: RASTER#6 RASTER#8
Not aliassing across scopes: plots_x#10 plots_x#11
Not aliassing across scopes: plots_y#10 plots_y#11
Not aliassing across scopes: plots_cnt#10 plots_cnt#11
Not aliassing across scopes: plots_x#2 plots_x#4
Not aliassing across scopes: plots_y#2 plots_y#4
Not aliassing across scopes: plots_cnt#3 plots_cnt#4
Not aliassing across scopes: plot::x#1 plot::x#0
Not aliassing across scopes: plot::y#1 plot::y#0
@ -2344,13 +2220,9 @@ Not aliassing across scopes: init_screen::c#0 SCREEN#2
Not aliassing identity: SCREEN#3 SCREEN#3
Alias (byte*) RASTER#3 = (byte*) RASTER#4 (byte*) RASTER#6
Alias (byte*) BGCOL#1 = (byte*) BGCOL#9 (byte*) BGCOL#7
Alias (byte[]) plots_x#10 = (byte[]) plots_x#8 (byte[]) plots_x#7
Alias (byte[]) plots_y#10 = (byte[]) plots_y#8 (byte[]) plots_y#7
Alias (byte) plots_cnt#10 = (byte) plots_cnt#8 (byte) plots_cnt#7
Alias (byte*) RASTER#1 = (byte*) RASTER#2 (byte*) RASTER#5 (byte*) RASTER#7
Alias (byte*) BGCOL#2 = (byte*) BGCOL#6 (byte*) BGCOL#3 (byte*) BGCOL#5
Alias (byte[]) plots_x#4 = (byte[]) plots_x#6 (byte[]) plots_x#9 (byte[]) plots_x#5
Alias (byte[]) plots_y#4 = (byte[]) plots_y#6 (byte[]) plots_y#9 (byte[]) plots_y#5
Alias (byte) plots_cnt#4 = (byte) plots_cnt#6 (byte) plots_cnt#9 (byte) plots_cnt#5
Alias (byte*) BGCOL#0 = (byte*) BGCOL#10 (byte*) BGCOL#8 (byte*) BGCOL#4
Alias (byte*) FGCOL#0 = (byte*) FGCOL#4 (byte*) FGCOL#3 (byte*) FGCOL#2
@ -2363,10 +2235,6 @@ Alias (byte*) D018#0 = (byte*) D018#4 (byte*) D018#3 (byte*) D018#2
Alias (byte*) RASTER#0 = (byte*) RASTER#10 (byte*) RASTER#9 (byte*) RASTER#8
Alias (byte) plots::i#2 = (byte) plots::i#3
Alias (byte) plots_cnt#1 = (byte) plots_cnt#2
Alias (byte[]) plots_x#1 = (byte[]) plots_x#3
Alias (byte[]) plots_y#1 = (byte[]) plots_y#3
Alias (byte[]) plots_x#0 = (byte[]) plots_x#12 (byte[]) plots_x#11
Alias (byte[]) plots_y#0 = (byte[]) plots_y#12 (byte[]) plots_y#11
Alias (byte) plots_cnt#0 = (byte) plots_cnt#12 (byte) plots_cnt#11
Alias (byte*) plot::plotter#0 = (byte*~) plot::$4
Alias (byte) init_plot_tables::bits#1 = (byte~) init_plot_tables::$2
@ -2391,8 +2259,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#0 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#0 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#0 )
(byte*) RASTER#3 ← phi( @5/(byte*) RASTER#0 )
(byte*) D018#1 ← phi( @5/(byte*) D018#0 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#0 )
@ -2426,8 +2292,6 @@ main::@1: scope:[main] from main::@7
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#4 ← phi( main::@1/(byte) plots_cnt#4 main::@2/(byte) plots_cnt#4 main::@6/(byte) plots_cnt#10 )
(byte[]) plots_y#4 ← phi( main::@1/(byte[]) plots_y#4 main::@2/(byte[]) plots_y#4 main::@6/(byte[]) plots_y#10 )
(byte[]) plots_x#4 ← phi( main::@1/(byte[]) plots_x#4 main::@2/(byte[]) plots_x#4 main::@6/(byte[]) plots_x#10 )
(byte*) BGCOL#2 ← phi( main::@1/(byte*) BGCOL#2 main::@2/(byte*) BGCOL#2 main::@6/(byte*) BGCOL#1 )
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -2451,17 +2315,13 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#1 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#1 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#1 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
@ -2598,16 +2458,10 @@ Not aliassing across scopes: D011#1 D011#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: D018#1 D018#0
Not aliassing across scopes: RASTER#3 RASTER#0
Not aliassing across scopes: plots_x#10 plots_x#0
Not aliassing across scopes: plots_y#10 plots_y#0
Not aliassing across scopes: plots_cnt#10 plots_cnt#0
Not aliassing identity: RASTER#1 RASTER#1
Not aliassing identity: BGCOL#2 BGCOL#2
Not aliassing identity: plots_x#4 plots_x#4
Not aliassing identity: plots_y#4 plots_y#4
Not aliassing identity: plots_cnt#4 plots_cnt#4
Not aliassing across scopes: plots_x#2 plots_x#4
Not aliassing across scopes: plots_y#2 plots_y#4
Not aliassing across scopes: plots_cnt#3 plots_cnt#4
Not aliassing across scopes: plot::x#1 plot::x#0
Not aliassing across scopes: plot::y#1 plot::y#0
@ -2633,8 +2487,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#0 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#0 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#0 )
(byte*) RASTER#3 ← phi( @5/(byte*) RASTER#0 )
(byte*) D018#1 ← phi( @5/(byte*) D018#0 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#0 )
@ -2668,8 +2520,6 @@ main::@1: scope:[main] from main::@7
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#4 ← phi( main::@1/(byte) plots_cnt#4 main::@2/(byte) plots_cnt#4 main::@6/(byte) plots_cnt#10 )
(byte[]) plots_y#4 ← phi( main::@1/(byte[]) plots_y#4 main::@2/(byte[]) plots_y#4 main::@6/(byte[]) plots_y#10 )
(byte[]) plots_x#4 ← phi( main::@1/(byte[]) plots_x#4 main::@2/(byte[]) plots_x#4 main::@6/(byte[]) plots_x#10 )
(byte*) BGCOL#2 ← phi( main::@1/(byte*) BGCOL#2 main::@2/(byte*) BGCOL#2 main::@6/(byte*) BGCOL#1 )
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -2693,17 +2543,13 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#1 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#1 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#1 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
@ -2838,16 +2684,10 @@ Not aliassing across scopes: D011#1 D011#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: D018#1 D018#0
Not aliassing across scopes: RASTER#3 RASTER#0
Not aliassing across scopes: plots_x#10 plots_x#0
Not aliassing across scopes: plots_y#10 plots_y#0
Not aliassing across scopes: plots_cnt#10 plots_cnt#0
Not aliassing identity: RASTER#1 RASTER#1
Not aliassing identity: BGCOL#2 BGCOL#2
Not aliassing identity: plots_x#4 plots_x#4
Not aliassing identity: plots_y#4 plots_y#4
Not aliassing identity: plots_cnt#4 plots_cnt#4
Not aliassing across scopes: plots_x#2 plots_x#4
Not aliassing across scopes: plots_y#2 plots_y#4
Not aliassing across scopes: plots_cnt#3 plots_cnt#4
Not aliassing across scopes: plot::x#1 plot::x#0
Not aliassing across scopes: plot::y#1 plot::y#0
@ -2859,14 +2699,8 @@ Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte*) BGCOL#2
Self Phi Eliminated (byte*) BGCOL#2
Self Phi Eliminated (byte[]) plots_x#4
Self Phi Eliminated (byte[]) plots_x#4
Self Phi Eliminated (byte[]) plots_y#4
Self Phi Eliminated (byte[]) plots_y#4
Self Phi Eliminated (byte) plots_cnt#4
Self Phi Eliminated (byte) plots_cnt#4
Self Phi Eliminated (byte[]) plots_x#1
Self Phi Eliminated (byte[]) plots_y#1
Self Phi Eliminated (byte) plots_cnt#1
Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte*) SCREEN#3
@ -2886,8 +2720,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @5
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#0 )
(byte[]) plots_y#10 ← phi( @5/(byte[]) plots_y#0 )
(byte[]) plots_x#10 ← phi( @5/(byte[]) plots_x#0 )
(byte*) RASTER#3 ← phi( @5/(byte*) RASTER#0 )
(byte*) D018#1 ← phi( @5/(byte*) D018#0 )
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#0 )
@ -2921,8 +2753,6 @@ main::@1: scope:[main] from main::@7
to:main::@2
main::@2: scope:[main] from main::@1 main::@2 main::@6
(byte) plots_cnt#4 ← phi( main::@6/(byte) plots_cnt#10 )
(byte[]) plots_y#4 ← phi( main::@6/(byte[]) plots_y#10 )
(byte[]) plots_x#4 ← phi( main::@6/(byte[]) plots_x#10 )
(byte*) BGCOL#2 ← phi( main::@6/(byte*) BGCOL#1 )
(byte*) RASTER#1 ← phi( main::@6/(byte*) RASTER#3 )
(boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word) 255
@ -2946,17 +2776,13 @@ main::@return: scope:[main] from main::@7
to:@2
plots: scope:[plots] from main::@3
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
(byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 )
(byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 )
(byte) plots::i#0 ← (byte/signed byte/word/signed word) 0
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
(byte) plots_cnt#1 ← phi( plots/(byte) plots_cnt#3 )
(byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 )
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
(byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 )
(byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2)
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
call plot param-assignment
to:plots::@3
plots::@3: scope:[plots] from plots::@1
@ -3091,19 +2917,11 @@ Redundant Phi (byte*) D011#1 (byte*) D011#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) D018#1 (byte*) D018#0
Redundant Phi (byte*) RASTER#3 (byte*) RASTER#0
Redundant Phi (byte[]) plots_x#10 (byte[]) plots_x#0
Redundant Phi (byte[]) plots_y#10 (byte[]) plots_y#0
Redundant Phi (byte) plots_cnt#10 (byte) plots_cnt#0
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#1
Redundant Phi (byte[]) plots_x#4 (byte[]) plots_x#10
Redundant Phi (byte[]) plots_y#4 (byte[]) plots_y#10
Redundant Phi (byte) plots_cnt#4 (byte) plots_cnt#10
Redundant Phi (byte[]) plots_x#2 (byte[]) plots_x#4
Redundant Phi (byte[]) plots_y#2 (byte[]) plots_y#4
Redundant Phi (byte) plots_cnt#3 (byte) plots_cnt#4
Redundant Phi (byte[]) plots_x#1 (byte[]) plots_x#2
Redundant Phi (byte[]) plots_y#1 (byte[]) plots_y#2
Redundant Phi (byte) plots_cnt#1 (byte) plots_cnt#3
Redundant Phi (byte) plot::x#1 (byte) plot::x#0
Redundant Phi (byte) plot::y#1 (byte) plot::y#0

View File

@ -290,7 +290,6 @@ CONTROL FLOW GRAPH SSA
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 )
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -304,7 +303,7 @@ main: scope:[main] from @1
(byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0
(byte*) main::cursor#0 ← (byte*~) main::$5
to:main::@1
@ -362,7 +361,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte) STAR#4 ← phi( @begin/(byte) STAR#0 )
(byte[1000]) SCREEN#2 ← phi( @begin/(byte[1000]) SCREEN#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -376,7 +374,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 )
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -390,7 +387,7 @@ main: scope:[main] from @1
(byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0
(byte*) main::cursor#0 ← (byte*~) main::$5
to:main::@1
@ -448,7 +445,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte) STAR#4 ← phi( @begin/(byte) STAR#0 )
(byte[1000]) SCREEN#2 ← phi( @begin/(byte[1000]) SCREEN#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -462,8 +458,6 @@ INITIAL SSA SYMBOL TABLE
(label) @end
(byte[1000]) SCREEN
(byte[1000]) SCREEN#0
(byte[1000]) SCREEN#1
(byte[1000]) SCREEN#2
(byte) STAR
(byte) STAR#0
(byte) STAR#1
@ -549,7 +543,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 )
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -563,7 +556,7 @@ main: scope:[main] from @1
(byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0
(byte*) main::cursor#0 ← (byte*~) main::$5
to:main::@1
@ -621,7 +614,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte) STAR#4 ← phi( @begin/(byte) STAR#0 )
(byte[1000]) SCREEN#2 ← phi( @begin/(byte[1000]) SCREEN#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
@ -635,7 +627,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 )
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -649,7 +640,7 @@ main: scope:[main] from @1
(byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0
(byte*) main::cursor#0 ← (byte*~) main::$5
to:main::@1
@ -706,12 +697,10 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte) STAR#4 ← phi( @begin/(byte) STAR#0 )
(byte[1000]) SCREEN#2 ← phi( @begin/(byte[1000]) SCREEN#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
Not aliassing across scopes: SCREEN#1 SCREEN#2
Not aliassing across scopes: STAR#2 STAR#4
Alias (byte) main::xd#0 = (byte/signed byte/word/signed word~) main::$0
Alias (byte) main::yd#0 = (byte/signed byte/word/signed word~) main::$1
@ -730,7 +719,6 @@ Alias (byte) main::yd#1 = (byte) main::yd#3
Alias (byte) main::y#1 = (byte/word~) main::$11
Alias (byte*) main::cursor#2 = (byte*~) main::$12
Alias (byte) main::e#2 = (byte/signed byte/word/signed word~) main::$13
Alias (byte[1000]) SCREEN#0 = (byte[1000]) SCREEN#2
Alias (byte) STAR#0 = (byte) STAR#4
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -740,7 +728,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#0 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#0 )
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -749,7 +736,7 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0
to:main::@1
main::@1: scope:[main] from main main::@2
@ -794,7 +781,6 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: STAR#2 STAR#0
Alias (byte) main::x1#1 = (byte) main::x1#2
Alias (byte) main::x#1 = (byte) main::x#3
@ -809,7 +795,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#0 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#0 )
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -818,7 +803,7 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0
to:main::@1
main::@1: scope:[main] from main main::@2
@ -858,7 +843,6 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: STAR#2 STAR#0
Self Phi Eliminated (byte) STAR#1
Self Phi Eliminated (byte) main::yd#1
@ -872,7 +856,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#0 )
(byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#0 )
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4
(byte) main::y#0 ← (byte/signed byte/word/signed word) 4
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -881,7 +864,7 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3
(byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3
(byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0
to:main::@1
main::@1: scope:[main] from main main::@2
@ -921,7 +904,6 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Redundant Phi (byte[1000]) SCREEN#1 (byte[1000]) SCREEN#0
Redundant Phi (byte) STAR#2 (byte) STAR#0
Redundant Phi (byte) STAR#1 (byte) STAR#2
Redundant Phi (byte) main::yd#1 (byte) main::yd#0

View File

@ -308,9 +308,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte/word~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(byte) main::x#1 ← (byte/word~) main::$5
(word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
@ -327,7 +326,6 @@ main::@2: scope:[main] from main::@1 main::@3
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#3 )
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
(byte[1000]) main::screen#2 ← phi( main::@1/(byte[1000]) main::screen#1 main::@3/(byte[1000]) main::screen#3 )
(byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 )
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 )
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 )
@ -337,7 +335,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 )
(byte[1000]) main::screen#3 ← phi( main::@1/(byte[1000]) main::screen#1 )
(byte) main::STAR#3 ← phi( main::@1/(byte) main::STAR#1 )
(byte) main::x#4 ← phi( main::@1/(byte) main::x#1 )
(byte) main::x1#3 ← phi( main::@1/(byte) main::x1#2 )
@ -392,9 +389,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte/word~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(byte) main::x#1 ← (byte/word~) main::$5
(word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
@ -411,7 +407,6 @@ main::@2: scope:[main] from main::@1 main::@3
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#3 )
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
(byte[1000]) main::screen#2 ← phi( main::@1/(byte[1000]) main::screen#1 main::@3/(byte[1000]) main::screen#3 )
(byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 )
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 )
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 )
@ -421,7 +416,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 )
(byte[1000]) main::screen#3 ← phi( main::@1/(byte[1000]) main::screen#1 )
(byte) main::STAR#3 ← phi( main::@1/(byte) main::STAR#1 )
(byte) main::x#4 ← phi( main::@1/(byte) main::x#1 )
(byte) main::x1#3 ← phi( main::@1/(byte) main::x1#2 )
@ -492,9 +486,6 @@ INITIAL SSA SYMBOL TABLE
(word) main::idx#5
(byte[1000]) main::screen
(byte[1000]) main::screen#0
(byte[1000]) main::screen#1
(byte[1000]) main::screen#2
(byte[1000]) main::screen#3
(byte) main::x
(byte) main::x#0
(byte) main::x#1
@ -561,9 +552,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte/word~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(byte) main::x#1 ← (byte/word~) main::$5
(word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
@ -580,7 +570,6 @@ main::@2: scope:[main] from main::@1 main::@3
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#3 )
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
(byte[1000]) main::screen#2 ← phi( main::@1/(byte[1000]) main::screen#1 main::@3/(byte[1000]) main::screen#3 )
(byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 )
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 )
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 )
@ -590,7 +579,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 )
(byte[1000]) main::screen#3 ← phi( main::@1/(byte[1000]) main::screen#1 )
(byte) main::STAR#3 ← phi( main::@1/(byte) main::STAR#1 )
(byte) main::x#4 ← phi( main::@1/(byte) main::x#1 )
(byte) main::x1#3 ← phi( main::@1/(byte) main::x1#2 )
@ -645,9 +633,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte/word~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(byte) main::x#1 ← (byte/word~) main::$5
(word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
@ -663,7 +650,6 @@ main::@2: scope:[main] from main::@1 main::@3
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#3 )
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
(byte[1000]) main::screen#2 ← phi( main::@1/(byte[1000]) main::screen#1 main::@3/(byte[1000]) main::screen#3 )
(byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 )
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 )
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 )
@ -673,7 +659,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 )
(byte[1000]) main::screen#3 ← phi( main::@1/(byte[1000]) main::screen#1 )
(byte) main::STAR#3 ← phi( main::@1/(byte) main::STAR#1 )
(byte) main::x#4 ← phi( main::@1/(byte) main::x#1 )
(byte) main::x1#3 ← phi( main::@1/(byte) main::x1#2 )
@ -709,7 +694,6 @@ Alias (byte) main::y#2 = (byte) main::y#3
Alias (byte) main::xd#1 = (byte) main::xd#2
Alias (byte) main::x1#2 = (byte) main::x1#3
Alias (byte) main::STAR#1 = (byte) main::STAR#3
Alias (byte[1000]) main::screen#1 = (byte[1000]) main::screen#3
Alias (byte) main::yd#1 = (byte) main::yd#3
Alias (byte) main::y#1 = (byte/word~) main::$10
Alias (word) main::idx#2 = (word~) main::$11
@ -739,9 +723,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
(byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1
@ -754,7 +737,6 @@ main::@2: scope:[main] from main::@1 main::@3
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#1 )
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
(byte[1000]) main::screen#2 ← phi( main::@1/(byte[1000]) main::screen#1 main::@3/(byte[1000]) main::screen#1 )
(byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#1 )
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#1 )
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#2 )
@ -778,7 +760,6 @@ main::@return: scope:[main] from main::@2
Alias (byte) main::x1#1 = (byte) main::x1#2
Alias (byte) main::x#1 = (byte) main::x#3
Alias (byte) main::STAR#1 = (byte) main::STAR#2
Alias (byte[1000]) main::screen#1 = (byte[1000]) main::screen#2
Alias (byte) main::yd#1 = (byte) main::yd#2
Alias (byte) main::xd#1 = (byte) main::xd#3
Succesful SSA optimization Pass2AliasElimination
@ -806,9 +787,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#1 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#1 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#1 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
(byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1
@ -837,7 +817,6 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1
Self Phi Eliminated (byte) main::STAR#1
Self Phi Eliminated (byte[1000]) main::screen#1
Self Phi Eliminated (byte) main::yd#1
Self Phi Eliminated (byte) main::xd#1
Self Phi Eliminated (byte) main::x1#1
@ -866,9 +845,8 @@ main::@1: scope:[main] from main main::@2
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#1 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
(byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 )
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 )
*((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1
*((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
(byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
(byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1
@ -897,7 +875,6 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1
Redundant Phi (byte) main::STAR#1 (byte) main::STAR#0
Redundant Phi (byte[1000]) main::screen#1 (byte[1000]) main::screen#0
Redundant Phi (byte) main::yd#1 (byte) main::yd#0
Redundant Phi (byte) main::xd#1 (byte) main::xd#0
Redundant Phi (byte) main::x1#1 (byte) main::x1#0

View File

@ -191,8 +191,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@1
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::s5#1 ← phi( main/(byte[]) main::s5#0 main::@1/(byte[]) main::s5#1 )
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#1 + (byte) main::i#2)
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$6) goto main::@1
@ -229,8 +228,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@1
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::s5#1 ← phi( main/(byte[]) main::s5#0 main::@1/(byte[]) main::s5#1 )
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#1 + (byte) main::i#2)
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$6) goto main::@1
@ -283,7 +281,6 @@ INITIAL SSA SYMBOL TABLE
(byte[]) main::s4#0
(byte[]) main::s5
(byte[]) main::s5#0
(byte[]) main::s5#1
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
@ -309,8 +306,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@1
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::s5#1 ← phi( main/(byte[]) main::s5#0 main::@1/(byte[]) main::s5#1 )
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#1 + (byte) main::i#2)
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$6) goto main::@1
@ -346,8 +342,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@1
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::s5#1 ← phi( main/(byte[]) main::s5#0 main::@1/(byte[]) main::s5#1 )
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#1 + (byte) main::i#2)
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$6) goto main::@1
@ -360,7 +355,6 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @1
Self Phi Eliminated (byte[]) main::s5#1
Self Phi Eliminated (byte*) main::SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -380,8 +374,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@1
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::s5#1 ← phi( main/(byte[]) main::s5#0 )
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#1 + (byte) main::i#2)
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$6) goto main::@1
@ -394,7 +387,6 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) main::s5#1 (byte[]) main::s5#0
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -125,25 +125,22 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @2
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte/word~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte/word~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte/word~) main::$1)
*((byte[15]) fibs#2 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte/word~) main::$2 ← *((byte[15]) fibs#0 + (byte) main::i#2) + *((byte[15]) fibs#0 + (byte/word~) main::$1)
*((byte[15]) fibs#0 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15
if((boolean~) main::$3) goto main::@1
@ -152,7 +149,6 @@ main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte[15]) fibs#3 ← phi( @begin/(byte[15]) fibs#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -164,18 +160,16 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte/word~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte/word~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte/word~) main::$1)
*((byte[15]) fibs#2 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte/word~) main::$2 ← *((byte[15]) fibs#0 + (byte) main::i#2) + *((byte[15]) fibs#0 + (byte/word~) main::$1)
*((byte[15]) fibs#0 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15
if((boolean~) main::$3) goto main::@1
@ -184,7 +178,6 @@ main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte[15]) fibs#3 ← phi( @begin/(byte[15]) fibs#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -198,9 +191,6 @@ INITIAL SSA SYMBOL TABLE
(label) @end
(byte[15]) fibs
(byte[15]) fibs#0
(byte[15]) fibs#1
(byte[15]) fibs#2
(byte[15]) fibs#3
(void()) main()
(byte/word~) main::$0
(byte/word~) main::$1
@ -216,103 +206,6 @@ INITIAL SSA SYMBOL TABLE
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte/word~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte/word~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte/word~) main::$1)
*((byte[15]) fibs#2 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte[15]) fibs#3 ← phi( @begin/(byte[15]) fibs#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
Not aliassing across scopes: fibs#1 fibs#3
Alias (byte[15]) fibs#0 = (byte[15]) fibs#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#0 )
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte/word~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte/word~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte/word~) main::$1)
*((byte[15]) fibs#2 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Not aliassing across scopes: fibs#1 fibs#0
Self Phi Eliminated (byte[15]) fibs#2
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#0 )
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
*((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte/word~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte/word~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte/word~) main::$1)
*((byte[15]) fibs#2 + (byte/word~) main::$0) ← (byte/word~) main::$2
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Redundant Phi (byte[15]) fibs#1 (byte[15]) fibs#0
Redundant Phi (byte[15]) fibs#2 (byte[15]) fibs#1
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1

File diff suppressed because it is too large Load Diff

View File

@ -585,7 +585,6 @@ CONTROL FLOW GRAPH SSA
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#14 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#13 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#10 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#2 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
@ -600,7 +599,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#11 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#2 )
(byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 )
(byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1
@ -611,7 +609,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$8 ← ! (boolean~) main::$7
if((boolean~) main::$8) goto main::@2
@ -622,7 +620,6 @@ main::@2: scope:[main] from main::@1 main::@7
(byte*) PROCPORT#9 ← phi( main::@1/(byte*) PROCPORT#11 main::@7/(byte*) PROCPORT#12 )
(byte*) CHARGEN#8 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#11 )
(byte*) main::charset4#7 ← phi( main::@1/(byte*) main::charset4#9 main::@7/(byte*) main::charset4#10 )
(byte[]) bits_count#2 ← phi( main::@1/(byte[]) bits_count#1 main::@7/(byte[]) bits_count#7 )
(byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 )
(byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 )
(byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 )
@ -633,7 +630,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$17 ← ! (boolean~) main::$16
if((boolean~) main::$17) goto main::@3
@ -644,7 +641,6 @@ main::@7: scope:[main] from main::@1
(byte*) PROCPORT#12 ← phi( main::@1/(byte*) PROCPORT#11 )
(byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 )
(byte*) main::charset4#10 ← phi( main::@1/(byte*) main::charset4#9 )
(byte[]) bits_count#7 ← phi( main::@1/(byte[]) bits_count#1 )
(byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 )
(byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 )
(byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 )
@ -657,7 +653,6 @@ main::@3: scope:[main] from main::@2 main::@8
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#9 main::@8/(byte*) PROCPORT#10 )
(byte*) CHARGEN#6 ← phi( main::@2/(byte*) CHARGEN#8 main::@8/(byte*) CHARGEN#9 )
(byte*) main::charset4#5 ← phi( main::@2/(byte*) main::charset4#7 main::@8/(byte*) main::charset4#8 )
(byte[]) bits_count#3 ← phi( main::@2/(byte[]) bits_count#2 main::@8/(byte[]) bits_count#8 )
(byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 )
(byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 )
(byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 )
@ -668,7 +663,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$26 ← ! (boolean~) main::$25
if((boolean~) main::$26) goto main::@4
@ -679,7 +674,6 @@ main::@8: scope:[main] from main::@2
(byte*) PROCPORT#10 ← phi( main::@2/(byte*) PROCPORT#9 )
(byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#8 )
(byte*) main::charset4#8 ← phi( main::@2/(byte*) main::charset4#7 )
(byte[]) bits_count#8 ← phi( main::@2/(byte[]) bits_count#2 )
(byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 )
(byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 )
(byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 )
@ -692,7 +686,6 @@ main::@4: scope:[main] from main::@3 main::@9
(byte*) PROCPORT#6 ← phi( main::@3/(byte*) PROCPORT#7 main::@9/(byte*) PROCPORT#8 )
(byte*) CHARGEN#5 ← phi( main::@3/(byte*) CHARGEN#6 main::@9/(byte*) CHARGEN#7 )
(byte*) main::charset4#4 ← phi( main::@3/(byte*) main::charset4#5 main::@9/(byte*) main::charset4#6 )
(byte[]) bits_count#4 ← phi( main::@3/(byte[]) bits_count#3 main::@9/(byte[]) bits_count#9 )
(byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 )
(byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 )
(byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 )
@ -702,7 +695,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$34 ← ! (boolean~) main::$33
if((boolean~) main::$34) goto main::@5
@ -713,7 +706,6 @@ main::@9: scope:[main] from main::@3
(byte*) PROCPORT#8 ← phi( main::@3/(byte*) PROCPORT#7 )
(byte*) CHARGEN#7 ← phi( main::@3/(byte*) CHARGEN#6 )
(byte*) main::charset4#6 ← phi( main::@3/(byte*) main::charset4#5 )
(byte[]) bits_count#9 ← phi( main::@3/(byte[]) bits_count#3 )
(byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 )
(byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 )
(byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 )
@ -724,7 +716,6 @@ main::@5: scope:[main] from main::@10 main::@4
(byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 )
(byte*) SCREEN#3 ← phi( main::@10/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#4 ← phi( main::@10/(byte*) PROCPORT#5 main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#6 ← phi( main::@10/(byte[]) bits_count#11 main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#2 ← phi( main::@10/(byte*) CHARGEN#4 main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 )
@ -743,7 +734,6 @@ main::@10: scope:[main] from main::@4
(byte*) D018#5 ← phi( main::@4/(byte*) D018#6 )
(byte*) SCREEN#4 ← phi( main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#5 ← phi( main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#11 ← phi( main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#4 ← phi( main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 )
@ -778,7 +768,6 @@ main::@return: scope:[main] from main::@12
@1: scope:[] from @begin
(byte*) D018#14 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) bits_count#10 ← phi( @begin/(byte[]) bits_count#0 )
(byte*) CHARSET4#2 ← phi( @begin/(byte*) CHARSET4#0 )
(byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 )
(byte*) PROCPORT#3 ← phi( @begin/(byte*) PROCPORT#0 )
@ -800,7 +789,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#14 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#13 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#10 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#2 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
@ -815,7 +803,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#11 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#2 )
(byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 )
(byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1
@ -826,7 +813,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$8 ← ! (boolean~) main::$7
if((boolean~) main::$8) goto main::@2
@ -837,7 +824,6 @@ main::@2: scope:[main] from main::@1 main::@7
(byte*) PROCPORT#9 ← phi( main::@1/(byte*) PROCPORT#11 main::@7/(byte*) PROCPORT#12 )
(byte*) CHARGEN#8 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#11 )
(byte*) main::charset4#7 ← phi( main::@1/(byte*) main::charset4#9 main::@7/(byte*) main::charset4#10 )
(byte[]) bits_count#2 ← phi( main::@1/(byte[]) bits_count#1 main::@7/(byte[]) bits_count#7 )
(byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 )
(byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 )
(byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 )
@ -848,7 +834,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$17 ← ! (boolean~) main::$16
if((boolean~) main::$17) goto main::@3
@ -859,7 +845,6 @@ main::@7: scope:[main] from main::@1
(byte*) PROCPORT#12 ← phi( main::@1/(byte*) PROCPORT#11 )
(byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 )
(byte*) main::charset4#10 ← phi( main::@1/(byte*) main::charset4#9 )
(byte[]) bits_count#7 ← phi( main::@1/(byte[]) bits_count#1 )
(byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 )
(byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 )
(byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 )
@ -872,7 +857,6 @@ main::@3: scope:[main] from main::@2 main::@8
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#9 main::@8/(byte*) PROCPORT#10 )
(byte*) CHARGEN#6 ← phi( main::@2/(byte*) CHARGEN#8 main::@8/(byte*) CHARGEN#9 )
(byte*) main::charset4#5 ← phi( main::@2/(byte*) main::charset4#7 main::@8/(byte*) main::charset4#8 )
(byte[]) bits_count#3 ← phi( main::@2/(byte[]) bits_count#2 main::@8/(byte[]) bits_count#8 )
(byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 )
(byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 )
(byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 )
@ -883,7 +867,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$26 ← ! (boolean~) main::$25
if((boolean~) main::$26) goto main::@4
@ -894,7 +878,6 @@ main::@8: scope:[main] from main::@2
(byte*) PROCPORT#10 ← phi( main::@2/(byte*) PROCPORT#9 )
(byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#8 )
(byte*) main::charset4#8 ← phi( main::@2/(byte*) main::charset4#7 )
(byte[]) bits_count#8 ← phi( main::@2/(byte[]) bits_count#2 )
(byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 )
(byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 )
(byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 )
@ -907,7 +890,6 @@ main::@4: scope:[main] from main::@3 main::@9
(byte*) PROCPORT#6 ← phi( main::@3/(byte*) PROCPORT#7 main::@9/(byte*) PROCPORT#8 )
(byte*) CHARGEN#5 ← phi( main::@3/(byte*) CHARGEN#6 main::@9/(byte*) CHARGEN#7 )
(byte*) main::charset4#4 ← phi( main::@3/(byte*) main::charset4#5 main::@9/(byte*) main::charset4#6 )
(byte[]) bits_count#4 ← phi( main::@3/(byte[]) bits_count#3 main::@9/(byte[]) bits_count#9 )
(byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 )
(byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 )
(byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 )
@ -917,7 +899,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$34 ← ! (boolean~) main::$33
if((boolean~) main::$34) goto main::@5
@ -928,7 +910,6 @@ main::@9: scope:[main] from main::@3
(byte*) PROCPORT#8 ← phi( main::@3/(byte*) PROCPORT#7 )
(byte*) CHARGEN#7 ← phi( main::@3/(byte*) CHARGEN#6 )
(byte*) main::charset4#6 ← phi( main::@3/(byte*) main::charset4#5 )
(byte[]) bits_count#9 ← phi( main::@3/(byte[]) bits_count#3 )
(byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 )
(byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 )
(byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 )
@ -939,7 +920,6 @@ main::@5: scope:[main] from main::@10 main::@4
(byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 )
(byte*) SCREEN#3 ← phi( main::@10/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#4 ← phi( main::@10/(byte*) PROCPORT#5 main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#6 ← phi( main::@10/(byte[]) bits_count#11 main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#2 ← phi( main::@10/(byte*) CHARGEN#4 main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 )
@ -958,7 +938,6 @@ main::@10: scope:[main] from main::@4
(byte*) D018#5 ← phi( main::@4/(byte*) D018#6 )
(byte*) SCREEN#4 ← phi( main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#5 ← phi( main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#11 ← phi( main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#4 ← phi( main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 )
@ -993,7 +972,6 @@ main::@return: scope:[main] from main::@12
@1: scope:[] from @begin
(byte*) D018#14 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) bits_count#10 ← phi( @begin/(byte[]) bits_count#0 )
(byte*) CHARSET4#2 ← phi( @begin/(byte*) CHARSET4#0 )
(byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 )
(byte*) PROCPORT#3 ← phi( @begin/(byte*) PROCPORT#0 )
@ -1072,17 +1050,6 @@ INITIAL SSA SYMBOL TABLE
(byte*) SCREEN#9
(byte[]) bits_count
(byte[]) bits_count#0
(byte[]) bits_count#1
(byte[]) bits_count#10
(byte[]) bits_count#11
(byte[]) bits_count#2
(byte[]) bits_count#3
(byte[]) bits_count#4
(byte[]) bits_count#5
(byte[]) bits_count#6
(byte[]) bits_count#7
(byte[]) bits_count#8
(byte[]) bits_count#9
(void()) main()
(byte*~) main::$0
(byte~) main::$1
@ -1212,7 +1179,6 @@ CONTROL FLOW GRAPH
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#14 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#13 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#10 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#2 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
@ -1227,7 +1193,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#11 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#2 )
(byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 )
(byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1
@ -1238,7 +1203,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$8 ← ! (boolean~) main::$7
if((boolean~) main::$8) goto main::@2
@ -1249,7 +1214,6 @@ main::@2: scope:[main] from main::@1 main::@7
(byte*) PROCPORT#9 ← phi( main::@1/(byte*) PROCPORT#11 main::@7/(byte*) PROCPORT#12 )
(byte*) CHARGEN#8 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#11 )
(byte*) main::charset4#7 ← phi( main::@1/(byte*) main::charset4#9 main::@7/(byte*) main::charset4#10 )
(byte[]) bits_count#2 ← phi( main::@1/(byte[]) bits_count#1 main::@7/(byte[]) bits_count#7 )
(byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 )
(byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 )
(byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 )
@ -1260,7 +1224,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$17 ← ! (boolean~) main::$16
if((boolean~) main::$17) goto main::@3
@ -1271,7 +1235,6 @@ main::@7: scope:[main] from main::@1
(byte*) PROCPORT#12 ← phi( main::@1/(byte*) PROCPORT#11 )
(byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 )
(byte*) main::charset4#10 ← phi( main::@1/(byte*) main::charset4#9 )
(byte[]) bits_count#7 ← phi( main::@1/(byte[]) bits_count#1 )
(byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 )
(byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 )
(byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 )
@ -1284,7 +1247,6 @@ main::@3: scope:[main] from main::@2 main::@8
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#9 main::@8/(byte*) PROCPORT#10 )
(byte*) CHARGEN#6 ← phi( main::@2/(byte*) CHARGEN#8 main::@8/(byte*) CHARGEN#9 )
(byte*) main::charset4#5 ← phi( main::@2/(byte*) main::charset4#7 main::@8/(byte*) main::charset4#8 )
(byte[]) bits_count#3 ← phi( main::@2/(byte[]) bits_count#2 main::@8/(byte[]) bits_count#8 )
(byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 )
(byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 )
(byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 )
@ -1295,7 +1257,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$26 ← ! (boolean~) main::$25
if((boolean~) main::$26) goto main::@4
@ -1306,7 +1268,6 @@ main::@8: scope:[main] from main::@2
(byte*) PROCPORT#10 ← phi( main::@2/(byte*) PROCPORT#9 )
(byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#8 )
(byte*) main::charset4#8 ← phi( main::@2/(byte*) main::charset4#7 )
(byte[]) bits_count#8 ← phi( main::@2/(byte[]) bits_count#2 )
(byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 )
(byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 )
(byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 )
@ -1319,7 +1280,6 @@ main::@4: scope:[main] from main::@3 main::@9
(byte*) PROCPORT#6 ← phi( main::@3/(byte*) PROCPORT#7 main::@9/(byte*) PROCPORT#8 )
(byte*) CHARGEN#5 ← phi( main::@3/(byte*) CHARGEN#6 main::@9/(byte*) CHARGEN#7 )
(byte*) main::charset4#4 ← phi( main::@3/(byte*) main::charset4#5 main::@9/(byte*) main::charset4#6 )
(byte[]) bits_count#4 ← phi( main::@3/(byte[]) bits_count#3 main::@9/(byte[]) bits_count#9 )
(byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 )
(byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 )
(byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 )
@ -1329,7 +1289,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2
(boolean~) main::$34 ← ! (boolean~) main::$33
if((boolean~) main::$34) goto main::@5
@ -1340,7 +1300,6 @@ main::@9: scope:[main] from main::@3
(byte*) PROCPORT#8 ← phi( main::@3/(byte*) PROCPORT#7 )
(byte*) CHARGEN#7 ← phi( main::@3/(byte*) CHARGEN#6 )
(byte*) main::charset4#6 ← phi( main::@3/(byte*) main::charset4#5 )
(byte[]) bits_count#9 ← phi( main::@3/(byte[]) bits_count#3 )
(byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 )
(byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 )
(byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 )
@ -1351,7 +1310,6 @@ main::@5: scope:[main] from main::@10 main::@4
(byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 )
(byte*) SCREEN#3 ← phi( main::@10/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#4 ← phi( main::@10/(byte*) PROCPORT#5 main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#6 ← phi( main::@10/(byte[]) bits_count#11 main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#2 ← phi( main::@10/(byte*) CHARGEN#4 main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 )
@ -1370,7 +1328,6 @@ main::@10: scope:[main] from main::@4
(byte*) D018#5 ← phi( main::@4/(byte*) D018#6 )
(byte*) SCREEN#4 ← phi( main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#5 ← phi( main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#11 ← phi( main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#4 ← phi( main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 )
@ -1405,7 +1362,6 @@ main::@return: scope:[main] from main::@12
@1: scope:[] from @begin
(byte*) D018#14 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) bits_count#10 ← phi( @begin/(byte[]) bits_count#0 )
(byte*) CHARSET4#2 ← phi( @begin/(byte*) CHARSET4#0 )
(byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 )
(byte*) PROCPORT#3 ← phi( @begin/(byte*) PROCPORT#0 )
@ -1430,7 +1386,6 @@ CONTROL FLOW GRAPH
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#14 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#13 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#10 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#2 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
@ -1445,7 +1400,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#11 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#2 )
(byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 )
(byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1
@ -1456,7 +1410,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$8) goto main::@2
to:main::@7
@ -1466,7 +1420,6 @@ main::@2: scope:[main] from main::@1 main::@7
(byte*) PROCPORT#9 ← phi( main::@1/(byte*) PROCPORT#11 main::@7/(byte*) PROCPORT#12 )
(byte*) CHARGEN#8 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#11 )
(byte*) main::charset4#7 ← phi( main::@1/(byte*) main::charset4#9 main::@7/(byte*) main::charset4#10 )
(byte[]) bits_count#2 ← phi( main::@1/(byte[]) bits_count#1 main::@7/(byte[]) bits_count#7 )
(byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 )
(byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 )
(byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 )
@ -1477,7 +1430,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$17) goto main::@3
to:main::@8
@ -1487,7 +1440,6 @@ main::@7: scope:[main] from main::@1
(byte*) PROCPORT#12 ← phi( main::@1/(byte*) PROCPORT#11 )
(byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 )
(byte*) main::charset4#10 ← phi( main::@1/(byte*) main::charset4#9 )
(byte[]) bits_count#7 ← phi( main::@1/(byte[]) bits_count#1 )
(byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 )
(byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 )
(byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 )
@ -1500,7 +1452,6 @@ main::@3: scope:[main] from main::@2 main::@8
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#9 main::@8/(byte*) PROCPORT#10 )
(byte*) CHARGEN#6 ← phi( main::@2/(byte*) CHARGEN#8 main::@8/(byte*) CHARGEN#9 )
(byte*) main::charset4#5 ← phi( main::@2/(byte*) main::charset4#7 main::@8/(byte*) main::charset4#8 )
(byte[]) bits_count#3 ← phi( main::@2/(byte[]) bits_count#2 main::@8/(byte[]) bits_count#8 )
(byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 )
(byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 )
(byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 )
@ -1511,7 +1462,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$26) goto main::@4
to:main::@9
@ -1521,7 +1472,6 @@ main::@8: scope:[main] from main::@2
(byte*) PROCPORT#10 ← phi( main::@2/(byte*) PROCPORT#9 )
(byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#8 )
(byte*) main::charset4#8 ← phi( main::@2/(byte*) main::charset4#7 )
(byte[]) bits_count#8 ← phi( main::@2/(byte[]) bits_count#2 )
(byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 )
(byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 )
(byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 )
@ -1534,7 +1484,6 @@ main::@4: scope:[main] from main::@3 main::@9
(byte*) PROCPORT#6 ← phi( main::@3/(byte*) PROCPORT#7 main::@9/(byte*) PROCPORT#8 )
(byte*) CHARGEN#5 ← phi( main::@3/(byte*) CHARGEN#6 main::@9/(byte*) CHARGEN#7 )
(byte*) main::charset4#4 ← phi( main::@3/(byte*) main::charset4#5 main::@9/(byte*) main::charset4#6 )
(byte[]) bits_count#4 ← phi( main::@3/(byte[]) bits_count#3 main::@9/(byte[]) bits_count#9 )
(byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 )
(byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 )
(byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 )
@ -1544,7 +1493,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$34) goto main::@5
to:main::@10
@ -1554,7 +1503,6 @@ main::@9: scope:[main] from main::@3
(byte*) PROCPORT#8 ← phi( main::@3/(byte*) PROCPORT#7 )
(byte*) CHARGEN#7 ← phi( main::@3/(byte*) CHARGEN#6 )
(byte*) main::charset4#6 ← phi( main::@3/(byte*) main::charset4#5 )
(byte[]) bits_count#9 ← phi( main::@3/(byte[]) bits_count#3 )
(byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 )
(byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 )
(byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 )
@ -1565,7 +1513,6 @@ main::@5: scope:[main] from main::@10 main::@4
(byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 )
(byte*) SCREEN#3 ← phi( main::@10/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#4 ← phi( main::@10/(byte*) PROCPORT#5 main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#6 ← phi( main::@10/(byte[]) bits_count#11 main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#2 ← phi( main::@10/(byte*) CHARGEN#4 main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 )
@ -1584,7 +1531,6 @@ main::@10: scope:[main] from main::@4
(byte*) D018#5 ← phi( main::@4/(byte*) D018#6 )
(byte*) SCREEN#4 ← phi( main::@4/(byte*) SCREEN#5 )
(byte*) PROCPORT#5 ← phi( main::@4/(byte*) PROCPORT#6 )
(byte[]) bits_count#11 ← phi( main::@4/(byte[]) bits_count#4 )
(byte*) CHARGEN#4 ← phi( main::@4/(byte*) CHARGEN#5 )
(byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 )
(byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 )
@ -1619,7 +1565,6 @@ main::@return: scope:[main] from main::@12
@1: scope:[] from @begin
(byte*) D018#14 ← phi( @begin/(byte*) D018#0 )
(byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) bits_count#10 ← phi( @begin/(byte[]) bits_count#0 )
(byte*) CHARSET4#2 ← phi( @begin/(byte*) CHARSET4#0 )
(byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 )
(byte*) PROCPORT#3 ← phi( @begin/(byte*) PROCPORT#0 )
@ -1630,7 +1575,6 @@ main::@return: scope:[main] from main::@12
Not aliassing across scopes: PROCPORT#1 PROCPORT#3
Not aliassing across scopes: CHARGEN#1 CHARGEN#3
Not aliassing across scopes: CHARSET4#1 CHARSET4#2
Not aliassing across scopes: bits_count#5 bits_count#10
Not aliassing across scopes: SCREEN#12 SCREEN#13
Not aliassing across scopes: D018#13 D018#14
Not aliassing across scopes: main::chargen#0 CHARGEN#1
@ -1639,7 +1583,6 @@ Alias (byte*) main::chargen1#0 = (byte*~) main::$0 (byte*) main::chargen1#4
Alias (byte) main::bits_gen#1 = (byte~) main::$10 (byte) main::bits_gen#12
Alias (byte) main::bits_gen#0 = (byte) main::bits_gen#10
Alias (byte*) main::chargen#2 = (byte*) main::chargen#7
Alias (byte[]) bits_count#1 = (byte[]) bits_count#7
Alias (byte*) main::charset4#10 = (byte*) main::charset4#9
Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#11
Alias (byte*) PROCPORT#11 = (byte*) PROCPORT#12
@ -1649,7 +1592,6 @@ Alias (byte) main::bits_gen#2 = (byte/word~) main::$9
Alias (byte) main::bits_gen#14 = (byte) main::bits_gen#3 (byte~) main::$19
Alias (byte*) main::chargen#3 = (byte*) main::chargen#8
Alias (byte*) main::chargen1#1 = (byte*) main::chargen1#5
Alias (byte[]) bits_count#2 = (byte[]) bits_count#8
Alias (byte*) main::charset4#7 = (byte*) main::charset4#8
Alias (byte*) CHARGEN#8 = (byte*) CHARGEN#9
Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#9
@ -1659,7 +1601,6 @@ Alias (byte) main::bits_gen#4 = (byte/word~) main::$18
Alias (byte) main::bits_gen#16 = (byte) main::bits_gen#5 (byte~) main::$28
Alias (byte*) main::chargen#4 = (byte*) main::chargen#9
Alias (byte*) main::chargen1#2 = (byte*) main::chargen1#6
Alias (byte[]) bits_count#3 = (byte[]) bits_count#9
Alias (byte*) main::charset4#5 = (byte*) main::charset4#6
Alias (byte*) CHARGEN#6 = (byte*) CHARGEN#7
Alias (byte*) PROCPORT#7 = (byte*) PROCPORT#8
@ -1671,7 +1612,6 @@ Alias (byte*) main::chargen#1 = (byte*~) main::$37
Alias (byte*) main::charset4#3 = (byte*) main::charset4#4
Alias (byte*) main::chargen#10 = (byte*) main::chargen#5
Alias (byte*) CHARGEN#4 = (byte*) CHARGEN#5
Alias (byte[]) bits_count#11 = (byte[]) bits_count#4
Alias (byte*) PROCPORT#5 = (byte*) PROCPORT#6
Alias (byte*) SCREEN#4 = (byte*) SCREEN#5
Alias (byte*) D018#5 = (byte*) D018#6
@ -1683,7 +1623,6 @@ Alias (byte*) D018#1 = (byte*) D018#2
Alias (byte*) PROCPORT#0 = (byte*) PROCPORT#3
Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#3
Alias (byte*) CHARSET4#0 = (byte*) CHARSET4#2
Alias (byte[]) bits_count#0 = (byte[]) bits_count#10
Alias (byte*) SCREEN#0 = (byte*) SCREEN#13
Alias (byte*) D018#0 = (byte*) D018#14
Succesful SSA optimization Pass2AliasElimination
@ -1699,7 +1638,6 @@ CONTROL FLOW GRAPH
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#0 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#0 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#0 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#0 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#0 )
@ -1714,7 +1652,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#11 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#2 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#2 )
(byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 )
(byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1
@ -1724,7 +1661,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$8) goto main::@2
to:main::@7
@ -1734,7 +1671,6 @@ main::@2: scope:[main] from main::@1 main::@7
(byte*) PROCPORT#10 ← phi( main::@1/(byte*) PROCPORT#11 main::@7/(byte*) PROCPORT#11 )
(byte*) CHARGEN#8 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#10 )
(byte*) main::charset4#7 ← phi( main::@1/(byte*) main::charset4#10 main::@7/(byte*) main::charset4#10 )
(byte[]) bits_count#2 ← phi( main::@1/(byte[]) bits_count#1 main::@7/(byte[]) bits_count#1 )
(byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#0 )
(byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#2 )
(byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 )
@ -1744,7 +1680,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$17) goto main::@3
to:main::@8
@ -1757,7 +1693,6 @@ main::@3: scope:[main] from main::@2 main::@8
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#10 main::@8/(byte*) PROCPORT#10 )
(byte*) CHARGEN#6 ← phi( main::@2/(byte*) CHARGEN#8 main::@8/(byte*) CHARGEN#8 )
(byte*) main::charset4#5 ← phi( main::@2/(byte*) main::charset4#7 main::@8/(byte*) main::charset4#7 )
(byte[]) bits_count#3 ← phi( main::@2/(byte[]) bits_count#2 main::@8/(byte[]) bits_count#2 )
(byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#1 )
(byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#3 )
(byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 )
@ -1767,7 +1702,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$26) goto main::@4
to:main::@9
@ -1780,7 +1715,6 @@ main::@4: scope:[main] from main::@3 main::@9
(byte*) PROCPORT#5 ← phi( main::@3/(byte*) PROCPORT#7 main::@9/(byte*) PROCPORT#7 )
(byte*) CHARGEN#4 ← phi( main::@3/(byte*) CHARGEN#6 main::@9/(byte*) CHARGEN#6 )
(byte*) main::charset4#3 ← phi( main::@3/(byte*) main::charset4#5 main::@9/(byte*) main::charset4#5 )
(byte[]) bits_count#11 ← phi( main::@3/(byte[]) bits_count#3 main::@9/(byte[]) bits_count#3 )
(byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#2 )
(byte*) main::chargen#10 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#4 )
(byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 )
@ -1789,7 +1723,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#11 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$34) goto main::@5
to:main::@10
@ -1800,7 +1734,6 @@ main::@5: scope:[main] from main::@10 main::@4
(byte*) D018#3 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#5 )
(byte*) SCREEN#2 ← phi( main::@10/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#4 )
(byte*) PROCPORT#2 ← phi( main::@10/(byte*) PROCPORT#5 main::@4/(byte*) PROCPORT#5 )
(byte[]) bits_count#6 ← phi( main::@10/(byte[]) bits_count#11 main::@4/(byte[]) bits_count#11 )
(byte*) CHARGEN#2 ← phi( main::@10/(byte*) CHARGEN#4 main::@4/(byte*) CHARGEN#4 )
(byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#10 )
(byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#3 )
@ -1844,14 +1777,12 @@ main::@return: scope:[main] from main::@12
Not aliassing across scopes: PROCPORT#1 PROCPORT#0
Not aliassing across scopes: CHARGEN#1 CHARGEN#0
Not aliassing across scopes: CHARSET4#1 CHARSET4#0
Not aliassing across scopes: bits_count#5 bits_count#0
Not aliassing across scopes: SCREEN#12 SCREEN#0
Not aliassing across scopes: D018#13 D018#0
Not aliassing across scopes: main::chargen#0 CHARGEN#1
Not aliassing across scopes: main::charset4#0 CHARSET4#1
Alias (byte*) main::chargen#10 = (byte*) main::chargen#3 (byte*) main::chargen#2 (byte*) main::chargen#4 (byte*) main::chargen#6
Alias (byte*) main::chargen1#0 = (byte*) main::chargen1#1 (byte*) main::chargen1#2 (byte*) main::chargen1#3
Alias (byte[]) bits_count#1 = (byte[]) bits_count#2 (byte[]) bits_count#3 (byte[]) bits_count#11 (byte[]) bits_count#6
Alias (byte*) main::charset4#10 = (byte*) main::charset4#7 (byte*) main::charset4#5 (byte*) main::charset4#3 (byte*) main::charset4#2
Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#8 (byte*) CHARGEN#6 (byte*) CHARGEN#4 (byte*) CHARGEN#2
Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#11 (byte*) PROCPORT#7 (byte*) PROCPORT#5 (byte*) PROCPORT#2
@ -1870,7 +1801,6 @@ CONTROL FLOW GRAPH
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#0 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#0 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#0 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#0 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#0 )
@ -1885,7 +1815,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#10 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#10 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#10 )
(byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#1 )
(byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1
@ -1895,7 +1824,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$8) goto main::@2
to:main::@7
@ -1907,7 +1836,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#1 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$17) goto main::@3
to:main::@8
@ -1922,7 +1851,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#1 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$26) goto main::@4
to:main::@9
@ -1936,7 +1865,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#1 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$34) goto main::@5
to:main::@10
@ -1984,12 +1913,10 @@ main::@return: scope:[main] from main::@12
Not aliassing across scopes: PROCPORT#1 PROCPORT#0
Not aliassing across scopes: CHARGEN#1 CHARGEN#0
Not aliassing across scopes: CHARSET4#1 CHARSET4#0
Not aliassing across scopes: bits_count#5 bits_count#0
Not aliassing across scopes: SCREEN#12 SCREEN#0
Not aliassing across scopes: D018#13 D018#0
Not aliassing across scopes: main::chargen#0 CHARGEN#1
Not aliassing across scopes: main::charset4#0 CHARSET4#1
Self Phi Eliminated (byte[]) bits_count#1
Self Phi Eliminated (byte*) CHARGEN#10
Self Phi Eliminated (byte*) PROCPORT#10
Self Phi Eliminated (byte*) SCREEN#10
@ -2009,7 +1936,6 @@ CONTROL FLOW GRAPH
main: scope:[main] from @1
(byte*) D018#13 ← phi( @1/(byte*) D018#0 )
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) bits_count#5 ← phi( @1/(byte[]) bits_count#0 )
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#0 )
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#0 )
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#0 )
@ -2024,7 +1950,6 @@ main::@1: scope:[main] from main main::@5
(byte*) PROCPORT#10 ← phi( main/(byte*) PROCPORT#1 )
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 )
(byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
(byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 )
(byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0
(byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1
@ -2034,7 +1959,7 @@ main::@1: scope:[main] from main main::@5
(byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3
(byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1
(byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2
(byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6)
(byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6)
(boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$8) goto main::@2
to:main::@7
@ -2046,7 +1971,7 @@ main::@2: scope:[main] from main::@1 main::@7
(byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2
(byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13
(byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1
(byte) main::bits#1 ← *((byte[]) bits_count#1 + (byte~) main::$15)
(byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15)
(boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$17) goto main::@3
to:main::@8
@ -2061,7 +1986,7 @@ main::@3: scope:[main] from main::@2 main::@8
(byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6
(byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1
(byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23
(byte) main::bits#2 ← *((byte[]) bits_count#1 + (byte~) main::$24)
(byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24)
(boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$26) goto main::@4
to:main::@9
@ -2075,7 +2000,7 @@ main::@4: scope:[main] from main::@3 main::@9
(byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2
(byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1
(byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31
(byte) main::bits#3 ← *((byte[]) bits_count#1 + (byte~) main::$32)
(byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32)
(boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2
if((boolean~) main::$34) goto main::@5
to:main::@10
@ -2123,10 +2048,8 @@ main::@return: scope:[main] from main::@12
Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#0
Redundant Phi (byte*) CHARGEN#1 (byte*) CHARGEN#0
Redundant Phi (byte*) CHARSET4#1 (byte*) CHARSET4#0
Redundant Phi (byte[]) bits_count#5 (byte[]) bits_count#0
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#0
Redundant Phi (byte*) D018#13 (byte*) D018#0
Redundant Phi (byte[]) bits_count#1 (byte[]) bits_count#5
Redundant Phi (byte*) CHARGEN#10 (byte*) CHARGEN#1
Redundant Phi (byte*) PROCPORT#10 (byte*) PROCPORT#1
Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#12

View File

@ -568,26 +568,22 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
main: scope:[main] from @7
(byte*) line_cursor#18 ← phi( @7/(byte*) line_cursor#14 )
(byte*) char_cursor#24 ← phi( @7/(byte*) char_cursor#20 )
(byte[]) txt#5 ← phi( @7/(byte[]) txt#6 )
call print_cls param-assignment
to:main::@3
main::@3: scope:[main] from main
(byte*) line_cursor#17 ← phi( main/(byte*) line_cursor#18 )
(byte*) char_cursor#22 ← phi( main/(byte*) char_cursor#24 )
(byte[]) txt#3 ← phi( main/(byte[]) txt#5 )
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main::@3 main::@5
(byte) main::i#4 ← phi( main::@3/(byte) main::i#0 main::@5/(byte) main::i#1 )
(byte*) line_cursor#15 ← phi( main::@3/(byte*) line_cursor#17 main::@5/(byte*) line_cursor#3 )
(byte*) char_cursor#19 ← phi( main::@3/(byte*) char_cursor#22 main::@5/(byte*) char_cursor#6 )
(byte[]) txt#1 ← phi( main::@3/(byte[]) txt#3 main::@5/(byte[]) txt#2 )
(byte*) print_str::str#1 ← (byte[]) txt#1
(byte*) print_str::str#1 ← (byte[]) txt#0
call print_str param-assignment
to:main::@4
main::@4: scope:[main] from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#4 )
(byte[]) txt#4 ← phi( main::@1/(byte[]) txt#1 )
(byte*) line_cursor#13 ← phi( main::@1/(byte*) line_cursor#15 )
(byte*) char_cursor#13 ← phi( main::@1/(byte*) char_cursor#19 )
(byte*) char_cursor#5 ← (byte*) char_cursor#13
@ -595,12 +591,11 @@ main::@4: scope:[main] from main::@1
to:main::@5
main::@5: scope:[main] from main::@4
(byte) main::i#2 ← phi( main::@4/(byte) main::i#3 )
(byte[]) txt#2 ← phi( main::@4/(byte[]) txt#4 )
(byte*) char_cursor#14 ← phi( main::@4/(byte*) char_cursor#5 )
(byte*) line_cursor#9 ← phi( main::@4/(byte*) line_cursor#13 )
(byte*) line_cursor#3 ← (byte*) line_cursor#9
(byte*) char_cursor#6 ← (byte*) char_cursor#14
*((byte[]) txt#2 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#2 + (byte/signed byte/word/signed word) 1)
*((byte[]) txt#0 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#0 + (byte/signed byte/word/signed word) 1)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11
if((boolean~) main::$3) goto main::@1
@ -613,7 +608,6 @@ main::@return: scope:[main] from main::@5
return
to:@return
@7: scope:[] from @6
(byte[]) txt#6 ← phi( @6/(byte[]) txt#0 )
(byte*) line_cursor#14 ← phi( @6/(byte*) line_cursor#16 )
(byte*) char_cursor#20 ← phi( @6/(byte*) char_cursor#23 )
call main param-assignment
@ -698,26 +692,22 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
main: scope:[main] from @7
(byte*) line_cursor#18 ← phi( @7/(byte*) line_cursor#14 )
(byte*) char_cursor#24 ← phi( @7/(byte*) char_cursor#20 )
(byte[]) txt#5 ← phi( @7/(byte[]) txt#6 )
call print_cls param-assignment
to:main::@3
main::@3: scope:[main] from main
(byte*) line_cursor#17 ← phi( main/(byte*) line_cursor#18 )
(byte*) char_cursor#22 ← phi( main/(byte*) char_cursor#24 )
(byte[]) txt#3 ← phi( main/(byte[]) txt#5 )
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main::@3 main::@5
(byte) main::i#4 ← phi( main::@3/(byte) main::i#0 main::@5/(byte) main::i#1 )
(byte*) line_cursor#15 ← phi( main::@3/(byte*) line_cursor#17 main::@5/(byte*) line_cursor#3 )
(byte*) char_cursor#19 ← phi( main::@3/(byte*) char_cursor#22 main::@5/(byte*) char_cursor#6 )
(byte[]) txt#1 ← phi( main::@3/(byte[]) txt#3 main::@5/(byte[]) txt#2 )
(byte*) print_str::str#1 ← (byte[]) txt#1
(byte*) print_str::str#1 ← (byte[]) txt#0
call print_str param-assignment
to:main::@4
main::@4: scope:[main] from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#4 )
(byte[]) txt#4 ← phi( main::@1/(byte[]) txt#1 )
(byte*) line_cursor#13 ← phi( main::@1/(byte*) line_cursor#15 )
(byte*) char_cursor#13 ← phi( main::@1/(byte*) char_cursor#2 )
(byte*) char_cursor#5 ← (byte*) char_cursor#13
@ -725,12 +715,11 @@ main::@4: scope:[main] from main::@1
to:main::@5
main::@5: scope:[main] from main::@4
(byte) main::i#2 ← phi( main::@4/(byte) main::i#3 )
(byte[]) txt#2 ← phi( main::@4/(byte[]) txt#4 )
(byte*) char_cursor#14 ← phi( main::@4/(byte*) char_cursor#4 )
(byte*) line_cursor#9 ← phi( main::@4/(byte*) line_cursor#2 )
(byte*) line_cursor#3 ← (byte*) line_cursor#9
(byte*) char_cursor#6 ← (byte*) char_cursor#14
*((byte[]) txt#2 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#2 + (byte/signed byte/word/signed word) 1)
*((byte[]) txt#0 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#0 + (byte/signed byte/word/signed word) 1)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11
if((boolean~) main::$3) goto main::@1
@ -743,7 +732,6 @@ main::@return: scope:[main] from main::@5
return
to:@return
@7: scope:[] from @6
(byte[]) txt#6 ← phi( @6/(byte[]) txt#0 )
(byte*) line_cursor#14 ← phi( @6/(byte*) line_cursor#16 )
(byte*) char_cursor#20 ← phi( @6/(byte*) char_cursor#23 )
call main param-assignment
@ -850,21 +838,14 @@ INITIAL SSA SYMBOL TABLE
(byte*) print_str::str#4
(byte[]) txt
(byte[]) txt#0
(byte[]) txt#1
(byte[]) txt#2
(byte[]) txt#3
(byte[]) txt#4
(byte[]) txt#5
(byte[]) txt#6
Not aliassing across scopes: print_str::str#4 print_str::str#1
Not aliassing across scopes: char_cursor#21 char_cursor#19
Not aliassing across scopes: line_cursor#12 line_cursor#13
Not aliassing across scopes: char_cursor#18 char_cursor#5
Not aliassing across scopes: txt#5 txt#6
Not aliassing across scopes: char_cursor#24 char_cursor#20
Not aliassing across scopes: line_cursor#18 line_cursor#14
Not aliassing across scopes: print_str::str#1 txt#1
Not aliassing across scopes: print_str::str#1 txt#0
Not aliassing across scopes: char_cursor#13 char_cursor#2
Not aliassing across scopes: line_cursor#9 line_cursor#2
Not aliassing across scopes: char_cursor#14 char_cursor#4
@ -874,16 +855,13 @@ Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#23 (byte
Alias (byte*) print_str::str#2 = (byte*) print_str::str#3
Alias (byte*) char_cursor#10 = (byte*) char_cursor#9 (byte*) char_cursor#17 (byte*) char_cursor#2
Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#7 (byte*) char_cursor#3 (byte*) line_cursor#8 (byte*) char_cursor#12 (byte*) line_cursor#2 (byte*) char_cursor#4
Alias (byte[]) txt#3 = (byte[]) txt#5
Alias (byte*) char_cursor#22 = (byte*) char_cursor#24
Alias (byte*) line_cursor#17 = (byte*) line_cursor#18
Alias (byte*) line_cursor#13 = (byte*) line_cursor#15
Alias (byte[]) txt#1 = (byte[]) txt#4 (byte[]) txt#2
Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4
Alias (byte*) char_cursor#13 = (byte*) char_cursor#5
Alias (byte*) line_cursor#10 = (byte*) line_cursor#3 (byte*) line_cursor#9 (byte*) line_cursor#4
Alias (byte*) char_cursor#14 = (byte*) char_cursor#6 (byte*) char_cursor#15 (byte*) char_cursor#7
Alias (byte[]) txt#0 = (byte[]) txt#6
Alias (byte*) char_cursor#16 = (byte*) char_cursor#8
Alias (byte*) line_cursor#11 = (byte*) line_cursor#5
Succesful SSA optimization Pass2AliasElimination
@ -945,7 +923,6 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
main: scope:[main] from @7
(byte*) line_cursor#17 ← phi( @7/(byte*) char_cursor#0 )
(byte*) char_cursor#22 ← phi( @7/(byte*) char_cursor#0 )
(byte[]) txt#3 ← phi( @7/(byte[]) txt#0 )
call print_cls param-assignment
to:main::@3
main::@3: scope:[main] from main
@ -955,8 +932,7 @@ main::@1: scope:[main] from main::@3 main::@5
(byte) main::i#2 ← phi( main::@3/(byte) main::i#0 main::@5/(byte) main::i#1 )
(byte*) line_cursor#13 ← phi( main::@3/(byte*) line_cursor#17 main::@5/(byte*) line_cursor#10 )
(byte*) char_cursor#19 ← phi( main::@3/(byte*) char_cursor#22 main::@5/(byte*) char_cursor#14 )
(byte[]) txt#1 ← phi( main::@3/(byte[]) txt#3 main::@5/(byte[]) txt#1 )
(byte*) print_str::str#1 ← (byte[]) txt#1
(byte*) print_str::str#1 ← (byte[]) txt#0
call print_str param-assignment
to:main::@4
main::@4: scope:[main] from main::@1
@ -966,7 +942,7 @@ main::@4: scope:[main] from main::@1
main::@5: scope:[main] from main::@4
(byte*) char_cursor#14 ← phi( main::@4/(byte*) line_cursor#1 )
(byte*) line_cursor#10 ← phi( main::@4/(byte*) line_cursor#1 )
*((byte[]) txt#1 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#1 + (byte/signed byte/word/signed word) 1)
*((byte[]) txt#0 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#0 + (byte/signed byte/word/signed word) 1)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11
if((boolean~) main::$3) goto main::@1
@ -987,17 +963,15 @@ Not aliassing across scopes: print_str::str#4 print_str::str#1
Not aliassing across scopes: char_cursor#21 char_cursor#19
Not aliassing across scopes: line_cursor#12 line_cursor#13
Not aliassing across scopes: char_cursor#18 char_cursor#13
Not aliassing across scopes: txt#3 txt#0
Not aliassing across scopes: char_cursor#22 char_cursor#0
Not aliassing across scopes: line_cursor#17 char_cursor#0
Not aliassing across scopes: print_str::str#1 txt#1
Not aliassing across scopes: print_str::str#1 txt#0
Not aliassing across scopes: char_cursor#13 char_cursor#10
Not aliassing across scopes: line_cursor#10 line_cursor#1
Not aliassing across scopes: char_cursor#14 line_cursor#1
Not aliassing across scopes: char_cursor#16 char_cursor#14
Not aliassing across scopes: line_cursor#11 line_cursor#10
Self Phi Eliminated (byte*) char_cursor#11
Self Phi Eliminated (byte[]) txt#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -1057,7 +1031,6 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
main: scope:[main] from @7
(byte*) line_cursor#17 ← phi( @7/(byte*) char_cursor#0 )
(byte*) char_cursor#22 ← phi( @7/(byte*) char_cursor#0 )
(byte[]) txt#3 ← phi( @7/(byte[]) txt#0 )
call print_cls param-assignment
to:main::@3
main::@3: scope:[main] from main
@ -1067,8 +1040,7 @@ main::@1: scope:[main] from main::@3 main::@5
(byte) main::i#2 ← phi( main::@3/(byte) main::i#0 main::@5/(byte) main::i#1 )
(byte*) line_cursor#13 ← phi( main::@3/(byte*) line_cursor#17 main::@5/(byte*) line_cursor#10 )
(byte*) char_cursor#19 ← phi( main::@3/(byte*) char_cursor#22 main::@5/(byte*) char_cursor#14 )
(byte[]) txt#1 ← phi( main::@3/(byte[]) txt#3 )
(byte*) print_str::str#1 ← (byte[]) txt#1
(byte*) print_str::str#1 ← (byte[]) txt#0
call print_str param-assignment
to:main::@4
main::@4: scope:[main] from main::@1
@ -1078,7 +1050,7 @@ main::@4: scope:[main] from main::@1
main::@5: scope:[main] from main::@4
(byte*) char_cursor#14 ← phi( main::@4/(byte*) line_cursor#1 )
(byte*) line_cursor#10 ← phi( main::@4/(byte*) line_cursor#1 )
*((byte[]) txt#1 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#1 + (byte/signed byte/word/signed word) 1)
*((byte[]) txt#0 + (byte/signed byte/word/signed word) 1) ← ++ *((byte[]) txt#0 + (byte/signed byte/word/signed word) 1)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11
if((boolean~) main::$3) goto main::@1
@ -1100,10 +1072,8 @@ Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#19
Redundant Phi (byte*) line_cursor#12 (byte*) line_cursor#13
Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#13
Redundant Phi (byte*) char_cursor#11 (byte*) char_cursor#18
Redundant Phi (byte[]) txt#3 (byte[]) txt#0
Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#0
Redundant Phi (byte*) line_cursor#17 (byte*) char_cursor#0
Redundant Phi (byte[]) txt#1 (byte[]) txt#3
Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#10
Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#14 (byte*) line_cursor#1

View File

@ -215,16 +215,14 @@ CONTROL FLOW GRAPH SSA
to:@1
main: scope:[main] from @2
(byte*) screen#15 ← phi( @2/(byte*) screen#17 )
(byte[]) msg1#1 ← phi( @2/(byte[]) msg1#2 )
(byte[]) main::msg2#0 ← (const string) main::$3
(byte*) print::msg#0 ← (byte[]) msg1#1
(byte*) print::msg#0 ← (byte[]) msg1#0
call print param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[]) main::msg2#1 ← phi( main/(byte[]) main::msg2#0 )
(byte*) screen#8 ← phi( main/(byte*) screen#15 )
(byte*) screen#0 ← (byte*) screen#8
(byte*) print::msg#1 ← (byte[]) main::msg2#1
(byte*) print::msg#1 ← (byte[]) main::msg2#0
call print param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
@ -243,7 +241,6 @@ main::@return: scope:[main] from main::@3
return
to:@return
@1: scope:[] from @begin
(byte[]) msg1#3 ← phi( @begin/(byte[]) msg1#0 )
(byte*) screen#4 ← ((byte*)) (word/signed word) 1024
to:@2
print: scope:[print] from main main::@1 main::@2
@ -270,7 +267,6 @@ print::@return: scope:[print] from print::@1
to:@return
@2: scope:[] from @1
(byte*) screen#17 ← phi( @1/(byte*) screen#4 )
(byte[]) msg1#2 ← phi( @1/(byte[]) msg1#3 )
call main param-assignment
to:@3
@3: scope:[] from @2
@ -285,16 +281,14 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@1
main: scope:[main] from @2
(byte*) screen#15 ← phi( @2/(byte*) screen#17 )
(byte[]) msg1#1 ← phi( @2/(byte[]) msg1#2 )
(byte[]) main::msg2#0 ← (const string) main::$3
(byte*) print::msg#0 ← (byte[]) msg1#1
(byte*) print::msg#0 ← (byte[]) msg1#0
call print param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[]) main::msg2#1 ← phi( main/(byte[]) main::msg2#0 )
(byte*) screen#8 ← phi( main/(byte*) screen#6 )
(byte*) screen#0 ← (byte*) screen#8
(byte*) print::msg#1 ← (byte[]) main::msg2#1
(byte*) print::msg#1 ← (byte[]) main::msg2#0
call print param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
@ -313,7 +307,6 @@ main::@return: scope:[main] from main::@3
return
to:@return
@1: scope:[] from @begin
(byte[]) msg1#3 ← phi( @begin/(byte[]) msg1#0 )
(byte*) screen#4 ← ((byte*)) (word/signed word) 1024
to:@2
print: scope:[print] from main main::@1 main::@2
@ -340,7 +333,6 @@ print::@return: scope:[print] from print::@1
to:@return
@2: scope:[] from @1
(byte*) screen#17 ← phi( @1/(byte*) screen#4 )
(byte[]) msg1#2 ← phi( @1/(byte[]) msg1#3 )
call main param-assignment
to:@3
@3: scope:[] from @2
@ -365,12 +357,8 @@ INITIAL SSA SYMBOL TABLE
(const string) main::msg = (string) "message 3 @"
(byte[]) main::msg2
(byte[]) main::msg2#0
(byte[]) main::msg2#1
(byte[]) msg1
(byte[]) msg1#0
(byte[]) msg1#1
(byte[]) msg1#2
(byte[]) msg1#3
(void()) print((byte*) print::msg)
(boolean~) print::$0
(label) print::@1
@ -405,21 +393,18 @@ INITIAL SSA SYMBOL TABLE
(byte*) screen#8
(byte*) screen#9
Not aliassing across scopes: msg1#1 msg1#2
Not aliassing across scopes: screen#15 screen#17
Not aliassing across scopes: print::msg#0 msg1#1
Not aliassing across scopes: print::msg#0 msg1#0
Not aliassing across scopes: screen#8 screen#6
Not aliassing across scopes: print::msg#1 main::msg2#1
Not aliassing across scopes: print::msg#1 main::msg2#0
Not aliassing across scopes: screen#9 screen#6
Not aliassing across scopes: screen#10 screen#6
Not aliassing across scopes: print::msg#6 print::msg#0
Not aliassing across scopes: screen#18 screen#15
Not aliassing across scopes: screen#14 screen#3
Alias (byte[]) main::msg2#0 = (byte[]) main::msg2#1
Alias (byte*) screen#0 = (byte*) screen#8
Alias (byte*) screen#1 = (byte*) screen#9
Alias (byte*) screen#10 = (byte*) screen#2 (byte*) screen#11 (byte*) screen#3
Alias (byte[]) msg1#0 = (byte[]) msg1#3 (byte[]) msg1#2
Alias (byte*) print::msg#4 = (byte*) print::msg#5
Alias (byte*) screen#12 = (byte*) screen#16 (byte*) screen#13 (byte*) screen#6
Alias (byte*) screen#17 = (byte*) screen#4
@ -431,9 +416,8 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @2
(byte*) screen#15 ← phi( @2/(byte*) screen#17 )
(byte[]) msg1#1 ← phi( @2/(byte[]) msg1#0 )
(byte[]) main::msg2#0 ← (const string) main::$3
(byte*) print::msg#0 ← (byte[]) msg1#1
(byte*) print::msg#0 ← (byte[]) msg1#0
call print param-assignment
to:main::@1
main::@1: scope:[main] from main
@ -481,9 +465,8 @@ print::@return: scope:[print] from print::@1
to:@end
@end: scope:[] from @3
Not aliassing across scopes: msg1#1 msg1#0
Not aliassing across scopes: screen#15 screen#17
Not aliassing across scopes: print::msg#0 msg1#1
Not aliassing across scopes: print::msg#0 msg1#0
Not aliassing across scopes: screen#0 screen#12
Not aliassing across scopes: print::msg#1 main::msg2#0
Not aliassing across scopes: screen#1 screen#12
@ -491,7 +474,6 @@ Not aliassing across scopes: screen#10 screen#12
Not aliassing across scopes: print::msg#6 print::msg#0
Not aliassing across scopes: screen#18 screen#15
Not aliassing across scopes: screen#14 screen#10
Redundant Phi (byte[]) msg1#1 (byte[]) msg1#0
Redundant Phi (byte*) screen#15 (byte*) screen#17
Redundant Phi (byte*) screen#0 (byte*) screen#12
Redundant Phi (byte*) screen#1 (byte*) screen#12

View File

@ -180,7 +180,6 @@ main::@return: scope:[main] from main::@3
to:@end
@end: scope:[] from @2
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@ -198,14 +197,12 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#3 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 )
(byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 )
(word) main::w#0 ← { *((byte[]) main::his#1 + (byte) main::h#2), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#2), (byte) main::l#2 }
(byte*~) main::$5 ← ((byte*)) (word) main::w#0
(byte*) main::sc#0 ← (byte*~) main::$5
*((byte*) main::sc#0) ← (byte) '*'
@ -214,7 +211,6 @@ main::@2: scope:[main] from main::@1 main::@2
if((boolean~) main::$6) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
(byte[]) main::his#3 ← phi( main::@2/(byte[]) main::his#1 )
(byte) main::h#3 ← phi( main::@2/(byte) main::h#2 )
(byte) main::h#1 ← ++ (byte) main::h#3
(boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3
@ -245,14 +241,12 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#3 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 )
(byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 )
(word) main::w#0 ← { *((byte[]) main::his#1 + (byte) main::h#2), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#2), (byte) main::l#2 }
(byte*~) main::$5 ← ((byte*)) (word) main::w#0
(byte*) main::sc#0 ← (byte*~) main::$5
*((byte*) main::sc#0) ← (byte) '*'
@ -261,7 +255,6 @@ main::@2: scope:[main] from main::@1 main::@2
if((boolean~) main::$6) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
(byte[]) main::his#3 ← phi( main::@2/(byte[]) main::his#1 )
(byte) main::h#3 ← phi( main::@2/(byte) main::h#2 )
(byte) main::h#1 ← ++ (byte) main::h#3
(boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3
@ -305,9 +298,6 @@ INITIAL SSA SYMBOL TABLE
(byte) main::h#4
(byte[]) main::his
(byte[]) main::his#0
(byte[]) main::his#1
(byte[]) main::his#2
(byte[]) main::his#3
(byte) main::l
(byte) main::l#0
(byte) main::l#1
@ -334,14 +324,12 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#3 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 )
(byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 )
(word) main::w#0 ← { *((byte[]) main::his#1 + (byte) main::h#2), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#2), (byte) main::l#2 }
(byte*~) main::$5 ← ((byte*)) (word) main::w#0
(byte*) main::sc#0 ← (byte*~) main::$5
*((byte*) main::sc#0) ← (byte) '*'
@ -350,7 +338,6 @@ main::@2: scope:[main] from main::@1 main::@2
if((boolean~) main::$6) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
(byte[]) main::his#3 ← phi( main::@2/(byte[]) main::his#1 )
(byte) main::h#3 ← phi( main::@2/(byte) main::h#2 )
(byte) main::h#1 ← ++ (byte) main::h#3
(boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3
@ -366,7 +353,6 @@ main::@return: scope:[main] from main::@3
Alias (byte*) main::sc#0 = (byte*~) main::$5
Alias (byte) main::h#2 = (byte) main::h#3
Alias (byte[]) main::his#1 = (byte[]) main::his#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -383,14 +369,12 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#1 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 )
(byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 )
(word) main::w#0 ← { *((byte[]) main::his#1 + (byte) main::h#2), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#2), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -410,7 +394,6 @@ main::@return: scope:[main] from main::@3
to:@end
@end: scope:[] from @1
Self Phi Eliminated (byte[]) main::his#1
Self Phi Eliminated (byte) main::h#2
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -428,14 +411,12 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#1 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(byte) main::h#2 ← phi( main::@1/(byte) main::h#4 )
(byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 )
(word) main::w#0 ← { *((byte[]) main::his#1 + (byte) main::h#2), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#2), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -455,7 +436,6 @@ main::@return: scope:[main] from main::@3
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) main::his#1 (byte[]) main::his#2
Redundant Phi (byte) main::h#2 (byte) main::h#4
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@ -473,12 +453,11 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← { *((byte[]) main::his#2 + (byte) main::h#4), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#4), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -516,12 +495,11 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
(byte) main::l#0 ← (byte/signed byte/word/signed word) 4
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← { *((byte[]) main::his#2 + (byte) main::h#4), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#4), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -556,11 +534,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← { *((byte[]) main::his#2 + (byte) main::h#4), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#4), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -592,11 +569,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← { *((byte[]) main::his#2 + (byte) main::h#4), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#4), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -625,11 +601,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← { *((byte[]) main::his#2 + (byte) main::h#4), (byte) main::l#2 }
(word) main::w#0 ← { *((byte[]) main::his#0 + (byte) main::h#4), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -656,11 +631,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(const byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← { *((byte[]) main::his#2 + (byte) main::h#4), (byte) main::l#2 }
(word) main::w#0 ← { *((const byte[]) main::his#0 + (byte) main::h#4), (byte) main::l#2 }
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
@ -678,7 +652,7 @@ main::@return: scope:[main] from main::@3
to:@end
@end: scope:[] from @1
Fixing word constructor with main::$8 ← *(main::his#2 + main::h#4) w= main::l#2
Fixing word constructor with main::$8 ← *(main::his#0 + main::h#4) w= main::l#2
Succesful SSA optimization Pass2FixWordConstructors
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -687,11 +661,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(const byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word~) main::$8 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2
(word~) main::$8 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2
(word) main::w#0 ← (word~) main::$8
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
@ -713,68 +686,6 @@ main::@return: scope:[main] from main::@3
Alias (word) main::w#0 = (word~) main::$8
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(const byte[]) main::his#0 main::@3/(byte[]) main::his#2 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
(byte) main::h#1 ← ++ (byte) main::h#4
if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@3
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Self Phi Eliminated (byte[]) main::his#2
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@3
(byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 )
(byte[]) main::his#2 ← phi( main/(const byte[]) main::his#0 )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
(byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 )
(word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2
(byte*) main::sc#0 ← ((byte*)) (word) main::w#0
*((byte*) main::sc#0) ← (byte) '*'
(byte) main::l#1 ← ++ (byte) main::l#2
if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
(byte) main::h#1 ← ++ (byte) main::h#4
if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@3
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) main::his#2 (const byte[]) main::his#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1

View File

@ -148,12 +148,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#2 main::@1/(byte*) SCREEN2#1 )
(byte[]) main::data#1 ← phi( main/(byte[]) main::data#0 main::@1/(byte[]) main::data#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$0) goto main::@1
@ -185,12 +183,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#2 main::@1/(byte*) SCREEN2#1 )
(byte[]) main::data#1 ← phi( main/(byte[]) main::data#0 main::@1/(byte[]) main::data#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$0) goto main::@1
@ -230,14 +226,12 @@ INITIAL SSA SYMBOL TABLE
(label) main::@return
(byte[]) main::data
(byte[]) main::data#0
(byte[]) main::data#1
(byte) main::i
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
(byte[]) main::txt
(byte[]) main::txt#0
(byte[]) main::txt#1
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
@ -256,12 +250,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#2 main::@1/(byte*) SCREEN2#1 )
(byte[]) main::data#1 ← phi( main/(byte[]) main::data#0 main::@1/(byte[]) main::data#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$0) goto main::@1
@ -296,12 +288,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#2 main::@1/(byte*) SCREEN2#1 )
(byte[]) main::data#1 ← phi( main/(byte[]) main::data#0 main::@1/(byte[]) main::data#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$0) goto main::@1
@ -316,9 +306,7 @@ main::@return: scope:[main] from main::@1
Not aliassing across scopes: SCREEN#2 SCREEN#0
Not aliassing across scopes: SCREEN2#2 SCREEN2#0
Self Phi Eliminated (byte[]) main::txt#1
Self Phi Eliminated (byte*) SCREEN#1
Self Phi Eliminated (byte[]) main::data#1
Self Phi Eliminated (byte*) SCREEN2#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -336,12 +324,10 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#2 )
(byte[]) main::data#1 ← phi( main/(byte[]) main::data#0 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2)
*((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$0) goto main::@1
@ -356,9 +342,7 @@ main::@return: scope:[main] from main::@1
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN2#2 (byte*) SCREEN2#0
Redundant Phi (byte[]) main::txt#1 (byte[]) main::txt#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Redundant Phi (byte[]) main::data#1 (byte[]) main::data#0
Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -203,11 +203,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@2/(byte*) main::cols#2 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 main::@2/(byte[]) main::colseq#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -216,7 +215,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) main::colseq#2 ← phi( main::@1/(byte[]) main::colseq#1 main::@3/(byte[]) main::colseq#3 )
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
@ -225,7 +223,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 )
(byte[]) main::colseq#3 ← phi( main::@1/(byte[]) main::colseq#1 )
(byte*) main::screen#3 ← phi( main::@1/(byte*) main::screen#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
@ -262,11 +259,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@2/(byte*) main::cols#2 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 main::@2/(byte[]) main::colseq#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -275,7 +271,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) main::colseq#2 ← phi( main::@1/(byte[]) main::colseq#1 main::@3/(byte[]) main::colseq#3 )
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
@ -284,7 +279,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 )
(byte[]) main::colseq#3 ← phi( main::@1/(byte[]) main::colseq#1 )
(byte*) main::screen#3 ← phi( main::@1/(byte*) main::screen#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
@ -334,9 +328,6 @@ INITIAL SSA SYMBOL TABLE
(byte*) main::cols#3
(byte[]) main::colseq
(byte[]) main::colseq#0
(byte[]) main::colseq#1
(byte[]) main::colseq#2
(byte[]) main::colseq#3
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@ -376,11 +367,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@2/(byte*) main::cols#2 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 main::@2/(byte[]) main::colseq#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -389,7 +379,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) main::colseq#2 ← phi( main::@1/(byte[]) main::colseq#1 main::@3/(byte[]) main::colseq#3 )
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
@ -398,7 +387,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 )
(byte[]) main::colseq#3 ← phi( main::@1/(byte[]) main::colseq#1 )
(byte*) main::screen#3 ← phi( main::@1/(byte*) main::screen#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
@ -435,11 +423,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@2/(byte*) main::cols#2 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 main::@2/(byte[]) main::colseq#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3
if((boolean~) main::$1) goto main::@2
@ -447,7 +434,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) main::colseq#2 ← phi( main::@1/(byte[]) main::colseq#1 main::@3/(byte[]) main::colseq#3 )
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
@ -456,7 +442,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 )
(byte[]) main::colseq#3 ← phi( main::@1/(byte[]) main::colseq#1 )
(byte*) main::screen#3 ← phi( main::@1/(byte*) main::screen#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
@ -477,7 +462,6 @@ Not aliassing across scopes: RED#1 RED#2
Not aliassing across scopes: GREEN#1 GREEN#2
Alias (byte) main::i#2 = (byte) main::i#4
Alias (byte*) main::screen#1 = (byte*) main::screen#3
Alias (byte[]) main::colseq#1 = (byte[]) main::colseq#3
Alias (byte*) main::cols#1 = (byte*) main::cols#3
Alias (byte) WHITE#0 = (byte) WHITE#2
Alias (byte) RED#0 = (byte) RED#2
@ -502,11 +486,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@2/(byte*) main::cols#2 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 main::@2/(byte[]) main::colseq#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3
if((boolean~) main::$1) goto main::@2
@ -514,7 +497,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#1 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) main::colseq#2 ← phi( main::@1/(byte[]) main::colseq#1 main::@3/(byte[]) main::colseq#1 )
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#1 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 )
(byte) main::i#1 ← ++ (byte) main::i#3
@ -537,7 +519,6 @@ Not aliassing across scopes: RED#1 RED#0
Not aliassing across scopes: GREEN#1 GREEN#0
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) main::screen#1 = (byte*) main::screen#2
Alias (byte[]) main::colseq#1 = (byte[]) main::colseq#2
Alias (byte*) main::cols#1 = (byte*) main::cols#2
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -559,11 +540,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@2/(byte*) main::cols#1 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 main::@2/(byte[]) main::colseq#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3
if((boolean~) main::$1) goto main::@2
@ -589,7 +569,6 @@ Not aliassing across scopes: WHITE#1 WHITE#0
Not aliassing across scopes: RED#1 RED#0
Not aliassing across scopes: GREEN#1 GREEN#0
Self Phi Eliminated (byte*) main::screen#1
Self Phi Eliminated (byte[]) main::colseq#1
Self Phi Eliminated (byte*) main::cols#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -611,11 +590,10 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) main::colseq#1 ← phi( main/(byte[]) main::colseq#0 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 )
*((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*'
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3)
*((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3
if((boolean~) main::$1) goto main::@2
@ -641,7 +619,6 @@ Redundant Phi (byte) WHITE#1 (byte) WHITE#0
Redundant Phi (byte) RED#1 (byte) RED#0
Redundant Phi (byte) GREEN#1 (byte) GREEN#0
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
Redundant Phi (byte[]) main::colseq#1 (byte[]) main::colseq#0
Redundant Phi (byte*) main::cols#1 (byte*) main::cols#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -161,7 +161,6 @@ CONTROL FLOW GRAPH SSA
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -169,8 +168,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -179,7 +177,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101
@ -187,7 +184,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 )
(byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
to:main::@2
@ -196,7 +192,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TXT#4 ← phi( @begin/(byte[]) TXT#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -210,7 +205,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -218,8 +212,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -228,7 +221,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101
@ -236,7 +228,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 )
(byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
to:main::@2
@ -245,7 +236,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TXT#4 ← phi( @begin/(byte[]) TXT#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -266,11 +256,6 @@ INITIAL SSA SYMBOL TABLE
(byte*) SCREEN#5
(byte[]) TXT
(byte[]) TXT#0
(byte[]) TXT#1
(byte[]) TXT#2
(byte[]) TXT#3
(byte[]) TXT#4
(byte[]) TXT#5
(void()) main()
(boolean~) main::$0
(boolean~) main::$1
@ -301,7 +286,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -309,8 +293,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -319,7 +302,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101
@ -327,7 +309,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 )
(byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
to:main::@2
@ -336,7 +317,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TXT#4 ← phi( @begin/(byte[]) TXT#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
@ -350,7 +330,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -358,8 +337,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
@ -367,7 +345,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101
@ -375,7 +352,6 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 )
(byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
(byte) main::j#2 ← (byte/signed byte/word/signed word) 0
to:main::@2
@ -384,17 +360,13 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#4 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TXT#4 ← phi( @begin/(byte[]) TXT#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
Not aliassing across scopes: TXT#2 TXT#4
Not aliassing across scopes: SCREEN#2 SCREEN#4
Alias (byte) main::i#2 = (byte) main::i#4
Alias (byte[]) TXT#1 = (byte[]) TXT#5
Alias (byte*) SCREEN#1 = (byte*) SCREEN#5
Alias (byte[]) TXT#0 = (byte[]) TXT#4
Alias (byte*) SCREEN#0 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -404,7 +376,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#0 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -412,8 +383,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
@ -421,7 +391,6 @@ main::@1: scope:[main] from main main::@2
main::@2: scope:[main] from main::@1 main::@3
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#1 )
(byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 )
(byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#1 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 )
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101
@ -438,10 +407,8 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Not aliassing across scopes: TXT#2 TXT#0
Not aliassing across scopes: SCREEN#2 SCREEN#0
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte[]) TXT#1 = (byte[]) TXT#3
Alias (byte*) SCREEN#1 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -451,7 +418,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#0 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -459,8 +425,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#1 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#1 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
@ -482,9 +447,7 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Not aliassing across scopes: TXT#2 TXT#0
Not aliassing across scopes: SCREEN#2 SCREEN#0
Self Phi Eliminated (byte[]) TXT#1
Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -494,7 +457,6 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) TXT#2 ← phi( @1/(byte[]) TXT#0 )
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
@ -502,8 +464,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 )
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 )
(byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 )
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3)
*((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3)
(byte) main::j#1 ← ++ (byte) main::j#3
(boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
@ -525,9 +486,7 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) TXT#2 (byte[]) TXT#0
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Redundant Phi (byte[]) TXT#1 (byte[]) TXT#2
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -159,7 +159,6 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @2
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@ -168,7 +167,6 @@ CONTROL FLOW GRAPH SSA
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -177,8 +175,7 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -186,7 +183,6 @@ main::@1: scope:[main] from main main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 )
(byte[]) TEXT#3 ← phi( main::@1/(byte[]) TEXT#1 main::@3/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 )
(byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 )
(byte*) main::cursor#1 ← ++ (byte*) main::cursor#3
@ -195,7 +191,6 @@ main::@2: scope:[main] from main::@1 main::@3
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 )
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 )
(byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 )
(byte) main::i#2 ← (byte/signed byte/word/signed word) 0
@ -204,7 +199,6 @@ main::@return: scope:[main] from main::@2
return
to:@return
@1: scope:[] from @begin
(byte[]) TEXT#4 ← phi( @begin/(byte[]) TEXT#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
call main param-assignment
to:@2
@ -218,7 +212,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -227,8 +220,7 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -236,7 +228,6 @@ main::@1: scope:[main] from main main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 )
(byte[]) TEXT#3 ← phi( main::@1/(byte[]) TEXT#1 main::@3/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 )
(byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 )
(byte*) main::cursor#1 ← ++ (byte*) main::cursor#3
@ -245,7 +236,6 @@ main::@2: scope:[main] from main::@1 main::@3
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 )
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 )
(byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 )
(byte) main::i#2 ← (byte/signed byte/word/signed word) 0
@ -254,7 +244,6 @@ main::@return: scope:[main] from main::@2
return
to:@return
@1: scope:[] from @begin
(byte[]) TEXT#4 ← phi( @begin/(byte[]) TEXT#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
call main param-assignment
to:@2
@ -277,11 +266,6 @@ INITIAL SSA SYMBOL TABLE
(byte*) SCREEN#5
(byte[]) TEXT
(byte[]) TEXT#0
(byte[]) TEXT#1
(byte[]) TEXT#2
(byte[]) TEXT#3
(byte[]) TEXT#4
(byte[]) TEXT#5
(void()) main()
(boolean~) main::$0
(boolean~) main::$1
@ -312,7 +296,6 @@ CONTROL FLOW GRAPH
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -321,8 +304,7 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8
(boolean~) main::$1 ← ! (boolean~) main::$0
@ -330,7 +312,6 @@ main::@1: scope:[main] from main main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 )
(byte[]) TEXT#3 ← phi( main::@1/(byte[]) TEXT#1 main::@3/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 )
(byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 )
(byte*) main::cursor#1 ← ++ (byte*) main::cursor#3
@ -339,7 +320,6 @@ main::@2: scope:[main] from main::@1 main::@3
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 )
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 )
(byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 )
(byte) main::i#2 ← (byte/signed byte/word/signed word) 0
@ -348,7 +328,6 @@ main::@return: scope:[main] from main::@2
return
to:@return
@1: scope:[] from @begin
(byte[]) TEXT#4 ← phi( @begin/(byte[]) TEXT#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
call main param-assignment
to:@end
@ -362,7 +341,6 @@ CONTROL FLOW GRAPH
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -371,15 +349,13 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 )
(byte[]) TEXT#3 ← phi( main::@1/(byte[]) TEXT#1 main::@3/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 )
(byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 )
(byte*) main::cursor#1 ← ++ (byte*) main::cursor#3
@ -388,7 +364,6 @@ main::@2: scope:[main] from main::@1 main::@3
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 )
(byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 )
(byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 )
(byte) main::i#2 ← (byte/signed byte/word/signed word) 0
@ -397,20 +372,16 @@ main::@return: scope:[main] from main::@2
return
to:@return
@1: scope:[] from @begin
(byte[]) TEXT#4 ← phi( @begin/(byte[]) TEXT#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
Not aliassing across scopes: SCREEN#1 SCREEN#3
Not aliassing across scopes: TEXT#2 TEXT#4
Not aliassing across scopes: main::cursor#0 SCREEN#1
Alias (byte*) main::cursor#2 = (byte*) main::cursor#4
Alias (byte*) SCREEN#4 = (byte*) SCREEN#5
Alias (byte[]) TEXT#1 = (byte[]) TEXT#5
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Alias (byte[]) TEXT#0 = (byte[]) TEXT#4
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -418,7 +389,6 @@ CONTROL FLOW GRAPH
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#0 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#0 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -427,15 +397,13 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 )
(byte[]) TEXT#3 ← phi( main::@1/(byte[]) TEXT#1 main::@3/(byte[]) TEXT#1 )
(byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#4 )
(byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#2 )
(byte*) main::cursor#1 ← ++ (byte*) main::cursor#3
@ -455,11 +423,9 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: TEXT#2 TEXT#0
Not aliassing across scopes: main::cursor#0 SCREEN#1
Alias (byte*) main::cursor#2 = (byte*) main::cursor#3
Alias (byte*) SCREEN#2 = (byte*) SCREEN#4
Alias (byte[]) TEXT#1 = (byte[]) TEXT#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -467,7 +433,6 @@ CONTROL FLOW GRAPH
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#0 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#0 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -476,8 +441,7 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#1 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
@ -501,9 +465,7 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: TEXT#2 TEXT#0
Not aliassing across scopes: main::cursor#0 SCREEN#1
Self Phi Eliminated (byte[]) TEXT#1
Self Phi Eliminated (byte*) SCREEN#2
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -512,7 +474,6 @@ CONTROL FLOW GRAPH
(byte[]) TEXT#0 ← (const string) $0
to:@1
main: scope:[main] from @1
(byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#0 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#0 )
(byte*) main::cursor#0 ← (byte*) SCREEN#1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -521,8 +482,7 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 )
(byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 )
(byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 )
*((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3)
*((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
(boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8
if((boolean~) main::$1) goto main::@2
@ -546,8 +506,6 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte[]) TEXT#2 (byte[]) TEXT#0
Redundant Phi (byte[]) TEXT#1 (byte[]) TEXT#2
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -123,11 +123,10 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2
(byte/word~) main::$1 ← (byte/word~) main::$0 + (byte/signed byte/word/signed word) 2
*((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte/word~) main::$1
*((byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/word~) main::$1
(byte/word~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte) main::i#1 ← (byte/word~) main::$2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10
@ -151,11 +150,10 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2
(byte/word~) main::$1 ← (byte/word~) main::$0 + (byte/signed byte/word/signed word) 2
*((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte/word~) main::$1
*((byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/word~) main::$1
(byte/word~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte) main::i#1 ← (byte/word~) main::$2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10
@ -185,7 +183,6 @@ INITIAL SSA SYMBOL TABLE
(label) main::@return
(byte[16]) main::buf
(byte[16]) main::buf#0
(byte[16]) main::buf#1
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@ -201,11 +198,10 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2
(byte/word~) main::$1 ← (byte/word~) main::$0 + (byte/signed byte/word/signed word) 2
*((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte/word~) main::$1
*((byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/word~) main::$1
(byte/word~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte) main::i#1 ← (byte/word~) main::$2
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10
@ -222,60 +218,6 @@ main::@return: scope:[main] from main::@1
Alias (byte) main::i#1 = (byte/word~) main::$2
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2
(byte/word~) main::$1 ← (byte/word~) main::$0 + (byte/signed byte/word/signed word) 2
*((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte/word~) main::$1
(byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Self Phi Eliminated (byte[16]) main::buf#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2
(byte/word~) main::$1 ← (byte/word~) main::$0 + (byte/signed byte/word/signed word) 2
*((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte/word~) main::$1
(byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10
if((boolean~) main::$3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Redundant Phi (byte[16]) main::buf#1 (byte[16]) main::buf#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1

View File

@ -160,7 +160,6 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @2
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@ -174,8 +173,6 @@ CONTROL FLOW GRAPH SSA
(byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 }
to:@1
main: scope:[main] from @1
(byte[]) nums#2 ← phi( @1/(byte[]) nums#3 )
(byte[]) str#2 ← phi( @1/(byte[]) str#3 )
(byte) num#1 ← phi( @1/(byte) num#2 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte) char#1 ← phi( @1/(byte) char#2 )
@ -184,14 +181,12 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 )
(byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2)
(byte/word~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$2) goto main::@1
@ -200,8 +195,6 @@ main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte[]) nums#3 ← phi( @begin/(byte[]) nums#0 )
(byte[]) str#3 ← phi( @begin/(byte[]) str#0 )
(byte) num#2 ← phi( @begin/(byte) num#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
(byte) char#2 ← phi( @begin/(byte) char#0 )
@ -222,8 +215,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
(byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 }
to:@1
main: scope:[main] from @1
(byte[]) nums#2 ← phi( @1/(byte[]) nums#3 )
(byte[]) str#2 ← phi( @1/(byte[]) str#3 )
(byte) num#1 ← phi( @1/(byte) num#2 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte) char#1 ← phi( @1/(byte) char#2 )
@ -232,14 +223,12 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 )
(byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2)
(byte/word~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$2) goto main::@1
@ -248,8 +237,6 @@ main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte[]) nums#3 ← phi( @begin/(byte[]) nums#0 )
(byte[]) str#3 ← phi( @begin/(byte[]) str#0 )
(byte) num#2 ← phi( @begin/(byte) num#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
(byte) char#2 ← phi( @begin/(byte) char#0 )
@ -293,14 +280,8 @@ INITIAL SSA SYMBOL TABLE
(byte) num#2
(byte[]) nums
(byte[]) nums#0
(byte[]) nums#1
(byte[]) nums#2
(byte[]) nums#3
(byte[]) str
(byte[]) str#0
(byte[]) str#1
(byte[]) str#2
(byte[]) str#3
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
@ -315,8 +296,6 @@ CONTROL FLOW GRAPH
(byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 }
to:@1
main: scope:[main] from @1
(byte[]) nums#2 ← phi( @1/(byte[]) nums#3 )
(byte[]) str#2 ← phi( @1/(byte[]) str#3 )
(byte) num#1 ← phi( @1/(byte) num#2 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 )
(byte) char#1 ← phi( @1/(byte) char#2 )
@ -325,14 +304,12 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 )
(byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2)
(byte/word~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$2) goto main::@1
@ -341,8 +318,6 @@ main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte[]) nums#3 ← phi( @begin/(byte[]) nums#0 )
(byte[]) str#3 ← phi( @begin/(byte[]) str#0 )
(byte) num#2 ← phi( @begin/(byte) num#0 )
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
(byte) char#2 ← phi( @begin/(byte) char#0 )
@ -353,13 +328,10 @@ main::@return: scope:[main] from main::@1
Not aliassing across scopes: char#1 char#2
Not aliassing across scopes: SCREEN#1 SCREEN#3
Not aliassing across scopes: num#1 num#2
Not aliassing across scopes: str#2 str#3
Not aliassing across scopes: nums#2 nums#3
Alias (byte[]) str#0 = (string~) $1 (byte[]) str#3
Alias (byte[]) str#0 = (string~) $1
Alias (byte) char#0 = (byte) char#2
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
Alias (byte) num#0 = (byte) num#2
Alias (byte[]) nums#0 = (byte[]) nums#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -371,8 +343,6 @@ CONTROL FLOW GRAPH
(byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 }
to:@1
main: scope:[main] from @1
(byte[]) nums#2 ← phi( @1/(byte[]) nums#0 )
(byte[]) str#2 ← phi( @1/(byte[]) str#0 )
(byte) num#1 ← phi( @1/(byte) num#0 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#0 )
(byte) char#1 ← phi( @1/(byte) char#0 )
@ -381,14 +351,12 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 )
(byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2)
(byte/word~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$2) goto main::@1
@ -404,11 +372,7 @@ main::@return: scope:[main] from main::@1
Not aliassing across scopes: char#1 char#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: num#1 num#0
Not aliassing across scopes: str#2 str#0
Not aliassing across scopes: nums#2 nums#0
Self Phi Eliminated (byte[]) str#1
Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte[]) nums#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -420,8 +384,6 @@ CONTROL FLOW GRAPH
(byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 }
to:@1
main: scope:[main] from @1
(byte[]) nums#2 ← phi( @1/(byte[]) nums#0 )
(byte[]) str#2 ← phi( @1/(byte[]) str#0 )
(byte) num#1 ← phi( @1/(byte) num#0 )
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#0 )
(byte) char#1 ← phi( @1/(byte) char#0 )
@ -430,14 +392,12 @@ main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@1
(byte[]) nums#1 ← phi( main/(byte[]) nums#2 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 )
(byte[]) str#1 ← phi( main/(byte[]) str#2 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
(byte/word~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2)
(byte/word~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2)
*((byte*) SCREEN#2 + (byte/word~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
(boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4
if((boolean~) main::$2) goto main::@1
@ -453,11 +413,7 @@ main::@return: scope:[main] from main::@1
Redundant Phi (byte) char#1 (byte) char#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte) num#1 (byte) num#0
Redundant Phi (byte[]) str#2 (byte[]) str#0
Redundant Phi (byte[]) nums#2 (byte[]) nums#0
Redundant Phi (byte[]) str#1 (byte[]) str#2
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1
Redundant Phi (byte[]) nums#1 (byte[]) nums#2
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from

View File

@ -142,15 +142,13 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#2 )
(boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@'
(boolean~) main::$0 ← *((byte[]) main::msg#0 + (byte) main::i#2) != (byte) '@'
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte*) main::screen#1 ← phi( main::@1/(byte*) main::screen#2 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[]) main::msg#2 ← phi( main::@1/(byte[]) main::msg#1 )
*((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#2 + (byte) main::i#3)
*((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: scope:[main] from main::@1
@ -174,15 +172,13 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#2 )
(boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@'
(boolean~) main::$0 ← *((byte[]) main::msg#0 + (byte) main::i#2) != (byte) '@'
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte*) main::screen#1 ← phi( main::@1/(byte*) main::screen#2 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[]) main::msg#2 ← phi( main::@1/(byte[]) main::msg#1 )
*((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#2 + (byte) main::i#3)
*((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: scope:[main] from main::@1
@ -213,8 +209,6 @@ INITIAL SSA SYMBOL TABLE
(byte) main::i#3
(byte[]) main::msg
(byte[]) main::msg#0
(byte[]) main::msg#1
(byte[]) main::msg#2
(byte*) main::screen
(byte*) main::screen#0
(byte*) main::screen#1
@ -233,15 +227,13 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#2 )
(boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@'
(boolean~) main::$0 ← *((byte[]) main::msg#0 + (byte) main::i#2) != (byte) '@'
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte*) main::screen#1 ← phi( main::@1/(byte*) main::screen#2 )
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[]) main::msg#2 ← phi( main::@1/(byte[]) main::msg#1 )
*((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#2 + (byte) main::i#3)
*((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#0 + (byte) main::i#3)
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: scope:[main] from main::@1
@ -252,7 +244,6 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @1
Alias (byte[]) main::msg#1 = (byte[]) main::msg#2
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) main::screen#1 = (byte*) main::screen#2
Succesful SSA optimization Pass2AliasElimination
@ -267,12 +258,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#1 )
(boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@'
(boolean~) main::$0 ← *((byte[]) main::msg#0 + (byte) main::i#2) != (byte) '@'
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
*((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#1 + (byte) main::i#2)
*((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
to:main::@1
main::@return: scope:[main] from main::@1
@ -283,7 +273,6 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @1
Self Phi Eliminated (byte[]) main::msg#1
Self Phi Eliminated (byte*) main::screen#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -297,12 +286,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 )
(boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@'
(boolean~) main::$0 ← *((byte[]) main::msg#0 + (byte) main::i#2) != (byte) '@'
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
*((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#1 + (byte) main::i#2)
*((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#0 + (byte) main::i#2)
(byte) main::i#1 ← ++ (byte) main::i#2
to:main::@1
main::@return: scope:[main] from main::@1
@ -313,7 +301,6 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) main::msg#1 (byte[]) main::msg#0
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -196,7 +196,6 @@ inccnt::@return: scope:[inccnt] from inccnt
to:@end
@end: scope:[] from @3
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@ -207,14 +206,12 @@ CONTROL FLOW GRAPH SSA
(byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
(byte) cnt3#13 ← phi( @2/(byte) cnt3#14 )
(byte) cnt2#13 ← phi( @2/(byte) cnt2#14 )
(byte) cnt#14 ← phi( @2/(byte) cnt#15 )
(byte) inccnt::return#0 ← call inccnt param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[256]) SCREEN#1 ← phi( main/(byte[256]) SCREEN#3 )
(byte) cnt3#7 ← phi( main/(byte) cnt3#13 )
(byte) cnt2#7 ← phi( main/(byte) cnt2#13 )
(byte) cnt#8 ← phi( main/(byte) cnt#14 )
@ -223,12 +220,11 @@ main::@1: scope:[main] from main
(byte) cnt#1 ← (byte) cnt#8
(byte) cnt2#1 ← (byte) cnt2#7
(byte) cnt3#1 ← (byte) cnt3#7
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0
(byte) cnt#2 ← ++ (byte) cnt#1
(byte) inccnt::return#1 ← call inccnt param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte[256]) SCREEN#2 ← phi( main::@1/(byte[256]) SCREEN#1 )
(byte) cnt3#8 ← phi( main::@1/(byte) cnt3#1 )
(byte) cnt2#8 ← phi( main::@1/(byte) cnt2#1 )
(byte) cnt#9 ← phi( main::@1/(byte) cnt#2 )
@ -237,7 +233,7 @@ main::@2: scope:[main] from main::@1
(byte) cnt#3 ← (byte) cnt#9
(byte) cnt2#2 ← (byte) cnt2#8
(byte) cnt3#2 ← (byte) cnt3#8
*((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1
to:main::@return
main::@return: scope:[main] from main::@2
(byte) cnt3#9 ← phi( main::@2/(byte) cnt3#2 )
@ -269,7 +265,6 @@ inccnt::@return: scope:[inccnt] from inccnt
return (byte) inccnt::return#3
to:@return
@2: scope:[] from @begin
(byte[256]) SCREEN#4 ← phi( @begin/(byte[256]) SCREEN#0 )
(byte) cnt3#14 ← phi( @begin/(byte) cnt3#0 )
(byte) cnt2#14 ← phi( @begin/(byte) cnt2#0 )
(byte) cnt#15 ← phi( @begin/(byte) cnt#0 )
@ -293,7 +288,6 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
(byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
(byte) cnt3#13 ← phi( @2/(byte) cnt3#14 )
(byte) cnt2#13 ← phi( @2/(byte) cnt2#14 )
(byte) cnt#14 ← phi( @2/(byte) cnt#15 )
@ -301,7 +295,6 @@ main: scope:[main] from @2
(byte) inccnt::return#0 ← (byte) inccnt::return#3
to:main::@1
main::@1: scope:[main] from main
(byte[256]) SCREEN#1 ← phi( main/(byte[256]) SCREEN#3 )
(byte) cnt3#7 ← phi( main/(byte) cnt3#5 )
(byte) cnt2#7 ← phi( main/(byte) cnt2#5 )
(byte) cnt#8 ← phi( main/(byte) cnt#6 )
@ -310,13 +303,12 @@ main::@1: scope:[main] from main
(byte) cnt#1 ← (byte) cnt#8
(byte) cnt2#1 ← (byte) cnt2#7
(byte) cnt3#1 ← (byte) cnt3#7
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0
(byte) cnt#2 ← ++ (byte) cnt#1
call inccnt param-assignment
(byte) inccnt::return#1 ← (byte) inccnt::return#3
to:main::@2
main::@2: scope:[main] from main::@1
(byte[256]) SCREEN#2 ← phi( main::@1/(byte[256]) SCREEN#1 )
(byte) cnt3#8 ← phi( main::@1/(byte) cnt3#5 )
(byte) cnt2#8 ← phi( main::@1/(byte) cnt2#5 )
(byte) cnt#9 ← phi( main::@1/(byte) cnt#6 )
@ -325,7 +317,7 @@ main::@2: scope:[main] from main::@1
(byte) cnt#3 ← (byte) cnt#9
(byte) cnt2#2 ← (byte) cnt2#8
(byte) cnt3#2 ← (byte) cnt3#8
*((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1
to:main::@return
main::@return: scope:[main] from main::@2
(byte) cnt3#9 ← phi( main::@2/(byte) cnt3#2 )
@ -357,7 +349,6 @@ inccnt::@return: scope:[inccnt] from inccnt
return
to:@return
@2: scope:[] from @begin
(byte[256]) SCREEN#4 ← phi( @begin/(byte[256]) SCREEN#0 )
(byte) cnt3#14 ← phi( @begin/(byte) cnt3#0 )
(byte) cnt2#14 ← phi( @begin/(byte) cnt2#0 )
(byte) cnt#15 ← phi( @begin/(byte) cnt#0 )
@ -380,10 +371,6 @@ INITIAL SSA SYMBOL TABLE
(label) @end
(byte[256]) SCREEN
(byte[256]) SCREEN#0
(byte[256]) SCREEN#1
(byte[256]) SCREEN#2
(byte[256]) SCREEN#3
(byte[256]) SCREEN#4
(byte) cnt
(byte) cnt#0
(byte) cnt#1
@ -453,7 +440,6 @@ INITIAL SSA SYMBOL TABLE
Not aliassing across scopes: cnt#14 cnt#15
Not aliassing across scopes: cnt2#13 cnt2#14
Not aliassing across scopes: cnt3#13 cnt3#14
Not aliassing across scopes: SCREEN#3 SCREEN#4
Not aliassing across scopes: inccnt::return#0 inccnt::return#3
Not aliassing across scopes: cnt#8 cnt#6
Not aliassing across scopes: cnt2#7 cnt2#5
@ -472,7 +458,6 @@ Not aliassing across scopes: cnt#13 cnt#4
Not aliassing across scopes: cnt2#12 cnt2#3
Not aliassing across scopes: cnt3#12 cnt3#3
Alias (byte) inccnt::return#0 = (byte) inccnt::return#4
Alias (byte[256]) SCREEN#1 = (byte[256]) SCREEN#3 (byte[256]) SCREEN#2
Alias (byte) cnt#1 = (byte) cnt#8
Alias (byte) cnt2#1 = (byte) cnt2#7
Alias (byte) cnt3#1 = (byte) cnt3#7
@ -487,7 +472,6 @@ Alias (byte) cnt3#11 = (byte) cnt3#4 (byte) cnt3#5
Alias (byte) cnt#0 = (byte) cnt#15
Alias (byte) cnt2#0 = (byte) cnt2#14
Alias (byte) cnt3#0 = (byte) cnt3#14
Alias (byte[256]) SCREEN#0 = (byte[256]) SCREEN#4
Alias (byte) cnt#13 = (byte) cnt#7
Alias (byte) cnt2#12 = (byte) cnt2#6
Alias (byte) cnt3#12 = (byte) cnt3#6
@ -500,7 +484,6 @@ CONTROL FLOW GRAPH
(byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte[256]) SCREEN#1 ← phi( @2/(byte[256]) SCREEN#0 )
(byte) cnt3#13 ← phi( @2/(byte) cnt3#0 )
(byte) cnt2#13 ← phi( @2/(byte) cnt2#0 )
(byte) cnt#14 ← phi( @2/(byte) cnt#0 )
@ -512,7 +495,7 @@ main::@1: scope:[main] from main
(byte) cnt2#1 ← phi( main/(byte) cnt2#11 )
(byte) cnt#1 ← phi( main/(byte) cnt#12 )
(byte~) main::$0 ← (byte) inccnt::return#0
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0
(byte) cnt#2 ← ++ (byte) cnt#1
call inccnt param-assignment
(byte) inccnt::return#1 ← (byte) inccnt::return#2
@ -522,7 +505,7 @@ main::@2: scope:[main] from main::@1
(byte) cnt2#2 ← phi( main::@1/(byte) cnt2#11 )
(byte) cnt#10 ← phi( main::@1/(byte) cnt#12 )
(byte~) main::$1 ← (byte) inccnt::return#1
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1
to:main::@return
main::@return: scope:[main] from main::@2
return
@ -552,7 +535,6 @@ inccnt::@return: scope:[inccnt] from inccnt
Not aliassing across scopes: cnt#14 cnt#0
Not aliassing across scopes: cnt2#13 cnt2#0
Not aliassing across scopes: cnt3#13 cnt3#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: inccnt::return#0 inccnt::return#2
Not aliassing across scopes: cnt#1 cnt#12
Not aliassing across scopes: cnt2#1 cnt2#11
@ -573,7 +555,6 @@ Not aliassing across scopes: cnt3#12 cnt3#2
Redundant Phi (byte) cnt#14 (byte) cnt#0
Redundant Phi (byte) cnt2#13 (byte) cnt2#0
Redundant Phi (byte) cnt3#13 (byte) cnt3#0
Redundant Phi (byte[256]) SCREEN#1 (byte[256]) SCREEN#0
Redundant Phi (byte) cnt#1 (byte) cnt#12
Redundant Phi (byte) cnt2#1 (byte) cnt2#11
Redundant Phi (byte) cnt3#1 (byte) cnt3#11

View File

@ -150,7 +150,6 @@ inccnt::@return: scope:[inccnt] from inccnt
to:@end
@end: scope:[] from @3
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@ -159,24 +158,21 @@ CONTROL FLOW GRAPH SSA
(byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
(byte) cnt#15 ← phi( @2/(byte) cnt#16 )
call inccnt param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[256]) SCREEN#1 ← phi( main/(byte[256]) SCREEN#3 )
(byte) cnt#9 ← phi( main/(byte) cnt#15 )
(byte) cnt#1 ← (byte) cnt#9
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1
(byte) cnt#2 ← ++ (byte) cnt#1
call inccnt param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte[256]) SCREEN#2 ← phi( main::@1/(byte[256]) SCREEN#1 )
(byte) cnt#10 ← phi( main::@1/(byte) cnt#2 )
(byte) cnt#3 ← (byte) cnt#10
(byte) cnt#4 ← ++ (byte) cnt#3
*((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#4
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#4
to:main::@return
main::@return: scope:[main] from main::@2
(byte) cnt#11 ← phi( main::@2/(byte) cnt#4 )
@ -193,7 +189,6 @@ inccnt::@return: scope:[inccnt] from inccnt
return
to:@return
@2: scope:[] from @begin
(byte[256]) SCREEN#4 ← phi( @begin/(byte[256]) SCREEN#0 )
(byte) cnt#16 ← phi( @begin/(byte) cnt#0 )
call main param-assignment
to:@3
@ -209,24 +204,21 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
(byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
(byte) cnt#15 ← phi( @2/(byte) cnt#16 )
call inccnt param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[256]) SCREEN#1 ← phi( main/(byte[256]) SCREEN#3 )
(byte) cnt#9 ← phi( main/(byte) cnt#7 )
(byte) cnt#1 ← (byte) cnt#9
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1
(byte) cnt#2 ← ++ (byte) cnt#1
call inccnt param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte[256]) SCREEN#2 ← phi( main::@1/(byte[256]) SCREEN#1 )
(byte) cnt#10 ← phi( main::@1/(byte) cnt#7 )
(byte) cnt#3 ← (byte) cnt#10
(byte) cnt#4 ← ++ (byte) cnt#3
*((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#4
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#4
to:main::@return
main::@return: scope:[main] from main::@2
(byte) cnt#11 ← phi( main::@2/(byte) cnt#4 )
@ -243,7 +235,6 @@ inccnt::@return: scope:[inccnt] from inccnt
return
to:@return
@2: scope:[] from @begin
(byte[256]) SCREEN#4 ← phi( @begin/(byte[256]) SCREEN#0 )
(byte) cnt#16 ← phi( @begin/(byte) cnt#0 )
call main param-assignment
to:@3
@ -260,10 +251,6 @@ INITIAL SSA SYMBOL TABLE
(label) @end
(byte[256]) SCREEN
(byte[256]) SCREEN#0
(byte[256]) SCREEN#1
(byte[256]) SCREEN#2
(byte[256]) SCREEN#3
(byte[256]) SCREEN#4
(byte) cnt
(byte) cnt#0
(byte) cnt#1
@ -290,18 +277,15 @@ INITIAL SSA SYMBOL TABLE
(label) main::@return
Not aliassing across scopes: cnt#15 cnt#16
Not aliassing across scopes: SCREEN#3 SCREEN#4
Not aliassing across scopes: cnt#9 cnt#7
Not aliassing across scopes: cnt#10 cnt#7
Not aliassing across scopes: cnt#12 cnt#15
Not aliassing across scopes: cnt#14 cnt#5
Alias (byte[256]) SCREEN#1 = (byte[256]) SCREEN#3 (byte[256]) SCREEN#2
Alias (byte) cnt#1 = (byte) cnt#9
Alias (byte) cnt#10 = (byte) cnt#3
Alias (byte) cnt#11 = (byte) cnt#4 (byte) cnt#5
Alias (byte) cnt#13 = (byte) cnt#6 (byte) cnt#7
Alias (byte) cnt#0 = (byte) cnt#16
Alias (byte[256]) SCREEN#0 = (byte[256]) SCREEN#4
Alias (byte) cnt#14 = (byte) cnt#8
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -310,20 +294,19 @@ CONTROL FLOW GRAPH
(byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte[256]) SCREEN#1 ← phi( @2/(byte[256]) SCREEN#0 )
(byte) cnt#15 ← phi( @2/(byte) cnt#0 )
call inccnt param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte) cnt#1 ← phi( main/(byte) cnt#13 )
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1
(byte) cnt#2 ← ++ (byte) cnt#1
call inccnt param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte) cnt#10 ← phi( main::@1/(byte) cnt#13 )
(byte) cnt#11 ← ++ (byte) cnt#10
*((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#11
*((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#11
to:main::@return
main::@return: scope:[main] from main::@2
return
@ -344,13 +327,11 @@ inccnt::@return: scope:[inccnt] from inccnt
@end: scope:[] from @3
Not aliassing across scopes: cnt#15 cnt#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: cnt#1 cnt#13
Not aliassing across scopes: cnt#10 cnt#13
Not aliassing across scopes: cnt#12 cnt#15
Not aliassing across scopes: cnt#14 cnt#11
Redundant Phi (byte) cnt#15 (byte) cnt#0
Redundant Phi (byte[256]) SCREEN#1 (byte[256]) SCREEN#0
Redundant Phi (byte) cnt#1 (byte) cnt#13
Redundant Phi (byte) cnt#10 (byte) cnt#13
Redundant Phi (byte) cnt#14 (byte) cnt#11

View File

@ -477,9 +477,6 @@ main::@return: scope:[main] from main::@6
to:@end
@end: scope:[] from @8
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
@ -541,46 +538,37 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
(byte[]) msg3#0 ← (const string) $2
to:@7
main: scope:[main] from @7
(byte[]) msg3#5 ← phi( @7/(byte[]) msg3#6 )
(byte[]) msg2#3 ← phi( @7/(byte[]) msg2#4 )
(byte*) line_cursor#21 ← phi( @7/(byte*) line_cursor#20 )
(byte*) char_cursor#27 ← phi( @7/(byte*) char_cursor#28 )
(byte[]) msg#1 ← phi( @7/(byte[]) msg#2 )
(byte*) print_str::str#1 ← (byte[]) msg#1
(byte*) print_str::str#1 ← (byte[]) msg#0
call print_str param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[]) msg3#4 ← phi( main/(byte[]) msg3#5 )
(byte[]) msg2#2 ← phi( main/(byte[]) msg2#3 )
(byte*) line_cursor#17 ← phi( main/(byte*) line_cursor#21 )
(byte*) char_cursor#17 ← phi( main/(byte*) char_cursor#27 )
(byte*) char_cursor#5 ← (byte*) char_cursor#17
call print_ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte[]) msg3#3 ← phi( main::@1/(byte[]) msg3#4 )
(byte[]) msg2#1 ← phi( main::@1/(byte[]) msg2#2 )
(byte*) char_cursor#18 ← phi( main::@1/(byte*) char_cursor#5 )
(byte*) line_cursor#11 ← phi( main::@1/(byte*) line_cursor#17 )
(byte*) line_cursor#3 ← (byte*) line_cursor#11
(byte*) char_cursor#6 ← (byte*) char_cursor#18
(byte*) print_str::str#2 ← (byte[]) msg2#1
(byte*) print_str::str#2 ← (byte[]) msg2#0
call print_str param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
(byte[]) msg3#2 ← phi( main::@2/(byte[]) msg3#3 )
(byte*) line_cursor#18 ← phi( main::@2/(byte*) line_cursor#3 )
(byte*) char_cursor#19 ← phi( main::@2/(byte*) char_cursor#6 )
(byte*) char_cursor#7 ← (byte*) char_cursor#19
call print_ln param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte[]) msg3#1 ← phi( main::@3/(byte[]) msg3#2 )
(byte*) char_cursor#20 ← phi( main::@3/(byte*) char_cursor#7 )
(byte*) line_cursor#12 ← phi( main::@3/(byte*) line_cursor#18 )
(byte*) line_cursor#4 ← (byte*) line_cursor#12
(byte*) char_cursor#8 ← (byte*) char_cursor#20
(byte*) print_str::str#3 ← (byte[]) msg3#1
(byte*) print_str::str#3 ← (byte[]) msg3#0
call print_str param-assignment
to:main::@5
main::@5: scope:[main] from main::@4
@ -603,11 +591,8 @@ main::@return: scope:[main] from main::@6
return
to:@return
@7: scope:[] from @6
(byte[]) msg3#6 ← phi( @6/(byte[]) msg3#0 )
(byte[]) msg2#4 ← phi( @6/(byte[]) msg2#0 )
(byte*) line_cursor#20 ← phi( @6/(byte*) line_cursor#22 )
(byte*) char_cursor#28 ← phi( @6/(byte*) char_cursor#30 )
(byte[]) msg#2 ← phi( @6/(byte[]) msg#0 )
call main param-assignment
to:@8
@8: scope:[] from @7
@ -676,46 +661,37 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
(byte[]) msg3#0 ← (const string) $2
to:@7
main: scope:[main] from @7
(byte[]) msg3#5 ← phi( @7/(byte[]) msg3#6 )
(byte[]) msg2#3 ← phi( @7/(byte[]) msg2#4 )
(byte*) line_cursor#21 ← phi( @7/(byte*) line_cursor#20 )
(byte*) char_cursor#27 ← phi( @7/(byte*) char_cursor#28 )
(byte[]) msg#1 ← phi( @7/(byte[]) msg#2 )
(byte*) print_str::str#1 ← (byte[]) msg#1
(byte*) print_str::str#1 ← (byte[]) msg#0
call print_str param-assignment
to:main::@1
main::@1: scope:[main] from main
(byte[]) msg3#4 ← phi( main/(byte[]) msg3#5 )
(byte[]) msg2#2 ← phi( main/(byte[]) msg2#3 )
(byte*) line_cursor#17 ← phi( main/(byte*) line_cursor#21 )
(byte*) char_cursor#17 ← phi( main/(byte*) char_cursor#2 )
(byte*) char_cursor#5 ← (byte*) char_cursor#17
call print_ln param-assignment
to:main::@2
main::@2: scope:[main] from main::@1
(byte[]) msg3#3 ← phi( main::@1/(byte[]) msg3#4 )
(byte[]) msg2#1 ← phi( main::@1/(byte[]) msg2#2 )
(byte*) char_cursor#18 ← phi( main::@1/(byte*) char_cursor#4 )
(byte*) line_cursor#11 ← phi( main::@1/(byte*) line_cursor#2 )
(byte*) line_cursor#3 ← (byte*) line_cursor#11
(byte*) char_cursor#6 ← (byte*) char_cursor#18
(byte*) print_str::str#2 ← (byte[]) msg2#1
(byte*) print_str::str#2 ← (byte[]) msg2#0
call print_str param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
(byte[]) msg3#2 ← phi( main::@2/(byte[]) msg3#3 )
(byte*) line_cursor#18 ← phi( main::@2/(byte*) line_cursor#3 )
(byte*) char_cursor#19 ← phi( main::@2/(byte*) char_cursor#2 )
(byte*) char_cursor#7 ← (byte*) char_cursor#19
call print_ln param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte[]) msg3#1 ← phi( main::@3/(byte[]) msg3#2 )
(byte*) char_cursor#20 ← phi( main::@3/(byte*) char_cursor#4 )
(byte*) line_cursor#12 ← phi( main::@3/(byte*) line_cursor#2 )
(byte*) line_cursor#4 ← (byte*) line_cursor#12
(byte*) char_cursor#8 ← (byte*) char_cursor#20
(byte*) print_str::str#3 ← (byte[]) msg3#1
(byte*) print_str::str#3 ← (byte[]) msg3#0
call print_str param-assignment
to:main::@5
main::@5: scope:[main] from main::@4
@ -738,11 +714,8 @@ main::@return: scope:[main] from main::@6
return
to:@return
@7: scope:[] from @6
(byte[]) msg3#6 ← phi( @6/(byte[]) msg3#0 )
(byte[]) msg2#4 ← phi( @6/(byte[]) msg2#0 )
(byte*) line_cursor#20 ← phi( @6/(byte*) line_cursor#22 )
(byte*) char_cursor#28 ← phi( @6/(byte*) char_cursor#30 )
(byte[]) msg#2 ← phi( @6/(byte[]) msg#0 )
call main param-assignment
to:@8
@8: scope:[] from @7
@ -828,22 +801,10 @@ INITIAL SSA SYMBOL TABLE
(label) main::@return
(byte[]) msg
(byte[]) msg#0
(byte[]) msg#1
(byte[]) msg#2
(byte[]) msg2
(byte[]) msg2#0
(byte[]) msg2#1
(byte[]) msg2#2
(byte[]) msg2#3
(byte[]) msg2#4
(byte[]) msg3
(byte[]) msg3#0
(byte[]) msg3#1
(byte[]) msg3#2
(byte[]) msg3#3
(byte[]) msg3#4
(byte[]) msg3#5
(byte[]) msg3#6
(void()) print_ln()
(byte*~) print_ln::$0
(boolean~) print_ln::$1
@ -868,20 +829,17 @@ Not aliassing across scopes: print_str::str#6 print_str::str#1
Not aliassing across scopes: char_cursor#29 char_cursor#27
Not aliassing across scopes: line_cursor#16 line_cursor#17
Not aliassing across scopes: char_cursor#26 char_cursor#5
Not aliassing across scopes: msg#1 msg#2
Not aliassing across scopes: char_cursor#27 char_cursor#28
Not aliassing across scopes: line_cursor#21 line_cursor#20
Not aliassing across scopes: msg2#3 msg2#4
Not aliassing across scopes: msg3#5 msg3#6
Not aliassing across scopes: print_str::str#1 msg#1
Not aliassing across scopes: print_str::str#1 msg#0
Not aliassing across scopes: char_cursor#17 char_cursor#2
Not aliassing across scopes: line_cursor#11 line_cursor#2
Not aliassing across scopes: char_cursor#18 char_cursor#4
Not aliassing across scopes: print_str::str#2 msg2#1
Not aliassing across scopes: print_str::str#2 msg2#0
Not aliassing across scopes: char_cursor#19 char_cursor#2
Not aliassing across scopes: line_cursor#12 line_cursor#2
Not aliassing across scopes: char_cursor#20 char_cursor#4
Not aliassing across scopes: print_str::str#3 msg3#1
Not aliassing across scopes: print_str::str#3 msg3#0
Not aliassing across scopes: char_cursor#21 char_cursor#2
Not aliassing across scopes: line_cursor#13 line_cursor#2
Not aliassing across scopes: char_cursor#22 char_cursor#4
@ -892,8 +850,6 @@ Alias (byte*) print_str::str#4 = (byte*) print_str::str#5
Alias (byte*) char_cursor#13 = (byte*) char_cursor#25 (byte*) char_cursor#14 (byte*) char_cursor#2
Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#9 (byte*) char_cursor#3 (byte*) line_cursor#10 (byte*) char_cursor#16 (byte*) line_cursor#2 (byte*) char_cursor#4
Alias (byte*) line_cursor#17 = (byte*) line_cursor#21
Alias (byte[]) msg2#1 = (byte[]) msg2#2 (byte[]) msg2#3
Alias (byte[]) msg3#1 = (byte[]) msg3#4 (byte[]) msg3#5 (byte[]) msg3#3 (byte[]) msg3#2
Alias (byte*) char_cursor#17 = (byte*) char_cursor#5
Alias (byte*) line_cursor#11 = (byte*) line_cursor#3 (byte*) line_cursor#18
Alias (byte*) char_cursor#18 = (byte*) char_cursor#6
@ -903,9 +859,6 @@ Alias (byte*) char_cursor#20 = (byte*) char_cursor#8
Alias (byte*) char_cursor#21 = (byte*) char_cursor#9
Alias (byte*) line_cursor#13 = (byte*) line_cursor#5 (byte*) line_cursor#14 (byte*) line_cursor#6
Alias (byte*) char_cursor#10 = (byte*) char_cursor#22 (byte*) char_cursor#23 (byte*) char_cursor#11
Alias (byte[]) msg#0 = (byte[]) msg#2
Alias (byte[]) msg2#0 = (byte[]) msg2#4
Alias (byte[]) msg3#0 = (byte[]) msg3#6
Alias (byte*) char_cursor#12 = (byte*) char_cursor#24
Alias (byte*) line_cursor#15 = (byte*) line_cursor#7
Succesful SSA optimization Pass2AliasElimination
@ -953,12 +906,9 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
(byte[]) msg3#0 ← (const string) $2
to:@7
main: scope:[main] from @7
(byte[]) msg3#1 ← phi( @7/(byte[]) msg3#0 )
(byte[]) msg2#1 ← phi( @7/(byte[]) msg2#0 )
(byte*) line_cursor#17 ← phi( @7/(byte*) char_cursor#0 )
(byte*) char_cursor#27 ← phi( @7/(byte*) char_cursor#0 )
(byte[]) msg#1 ← phi( @7/(byte[]) msg#0 )
(byte*) print_str::str#1 ← (byte[]) msg#1
(byte*) print_str::str#1 ← (byte[]) msg#0
call print_str param-assignment
to:main::@1
main::@1: scope:[main] from main
@ -968,7 +918,7 @@ main::@1: scope:[main] from main
main::@2: scope:[main] from main::@1
(byte*) char_cursor#18 ← phi( main::@1/(byte*) line_cursor#1 )
(byte*) line_cursor#11 ← phi( main::@1/(byte*) line_cursor#1 )
(byte*) print_str::str#2 ← (byte[]) msg2#1
(byte*) print_str::str#2 ← (byte[]) msg2#0
call print_str param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
@ -978,7 +928,7 @@ main::@3: scope:[main] from main::@2
main::@4: scope:[main] from main::@3
(byte*) char_cursor#20 ← phi( main::@3/(byte*) line_cursor#1 )
(byte*) line_cursor#12 ← phi( main::@3/(byte*) line_cursor#1 )
(byte*) print_str::str#3 ← (byte[]) msg3#1
(byte*) print_str::str#3 ← (byte[]) msg3#0
call print_str param-assignment
to:main::@5
main::@5: scope:[main] from main::@4
@ -1005,20 +955,17 @@ Not aliassing across scopes: print_str::str#6 print_str::str#1
Not aliassing across scopes: char_cursor#29 char_cursor#27
Not aliassing across scopes: line_cursor#16 line_cursor#17
Not aliassing across scopes: char_cursor#26 char_cursor#17
Not aliassing across scopes: msg#1 msg#0
Not aliassing across scopes: char_cursor#27 char_cursor#0
Not aliassing across scopes: line_cursor#17 char_cursor#0
Not aliassing across scopes: msg2#1 msg2#0
Not aliassing across scopes: msg3#1 msg3#0
Not aliassing across scopes: print_str::str#1 msg#1
Not aliassing across scopes: print_str::str#1 msg#0
Not aliassing across scopes: char_cursor#17 char_cursor#13
Not aliassing across scopes: line_cursor#11 line_cursor#1
Not aliassing across scopes: char_cursor#18 line_cursor#1
Not aliassing across scopes: print_str::str#2 msg2#1
Not aliassing across scopes: print_str::str#2 msg2#0
Not aliassing across scopes: char_cursor#19 char_cursor#13
Not aliassing across scopes: line_cursor#12 line_cursor#1
Not aliassing across scopes: char_cursor#20 line_cursor#1
Not aliassing across scopes: print_str::str#3 msg3#1
Not aliassing across scopes: print_str::str#3 msg3#0
Not aliassing across scopes: char_cursor#21 char_cursor#13
Not aliassing across scopes: line_cursor#13 line_cursor#1
Not aliassing across scopes: char_cursor#10 line_cursor#1
@ -1070,12 +1017,9 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
(byte[]) msg3#0 ← (const string) $2
to:@7
main: scope:[main] from @7
(byte[]) msg3#1 ← phi( @7/(byte[]) msg3#0 )
(byte[]) msg2#1 ← phi( @7/(byte[]) msg2#0 )
(byte*) line_cursor#17 ← phi( @7/(byte*) char_cursor#0 )
(byte*) char_cursor#27 ← phi( @7/(byte*) char_cursor#0 )
(byte[]) msg#1 ← phi( @7/(byte[]) msg#0 )
(byte*) print_str::str#1 ← (byte[]) msg#1
(byte*) print_str::str#1 ← (byte[]) msg#0
call print_str param-assignment
to:main::@1
main::@1: scope:[main] from main
@ -1085,7 +1029,7 @@ main::@1: scope:[main] from main
main::@2: scope:[main] from main::@1
(byte*) char_cursor#18 ← phi( main::@1/(byte*) line_cursor#1 )
(byte*) line_cursor#11 ← phi( main::@1/(byte*) line_cursor#1 )
(byte*) print_str::str#2 ← (byte[]) msg2#1
(byte*) print_str::str#2 ← (byte[]) msg2#0
call print_str param-assignment
to:main::@3
main::@3: scope:[main] from main::@2
@ -1095,7 +1039,7 @@ main::@3: scope:[main] from main::@2
main::@4: scope:[main] from main::@3
(byte*) char_cursor#20 ← phi( main::@3/(byte*) line_cursor#1 )
(byte*) line_cursor#12 ← phi( main::@3/(byte*) line_cursor#1 )
(byte*) print_str::str#3 ← (byte[]) msg3#1
(byte*) print_str::str#3 ← (byte[]) msg3#0
call print_str param-assignment
to:main::@5
main::@5: scope:[main] from main::@4
@ -1119,11 +1063,8 @@ main::@return: scope:[main] from main::@6
@end: scope:[] from @8
Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#26
Redundant Phi (byte[]) msg#1 (byte[]) msg#0
Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#0
Redundant Phi (byte*) line_cursor#17 (byte*) char_cursor#0
Redundant Phi (byte[]) msg2#1 (byte[]) msg2#0
Redundant Phi (byte[]) msg3#1 (byte[]) msg3#0
Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#13
Redundant Phi (byte*) line_cursor#11 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#18 (byte*) line_cursor#1

View File

@ -559,15 +559,13 @@ lvalue: scope:[lvalue] from main
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:lvalue::@1
lvalue::@1: scope:[lvalue] from lvalue lvalue::@2
(byte[1024]) lvalue::SCREEN#2 ← phi( lvalue/(byte[1024]) lvalue::SCREEN#0 lvalue::@2/(byte[1024]) lvalue::SCREEN#1 )
(byte) lvalue::i#2 ← phi( lvalue/(byte) lvalue::i#0 lvalue::@2/(byte) lvalue::i#1 )
(boolean~) lvalue::$0 ← (byte) lvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) lvalue::$0) goto lvalue::@2
to:lvalue::@return
lvalue::@2: scope:[lvalue] from lvalue::@1
(byte) lvalue::i#3 ← phi( lvalue::@1/(byte) lvalue::i#2 )
(byte[1024]) lvalue::SCREEN#1 ← phi( lvalue::@1/(byte[1024]) lvalue::SCREEN#2 )
*((byte[1024]) lvalue::SCREEN#1 + (byte) lvalue::i#3) ← (byte/signed byte/word/signed word) 3
*((byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#3) ← (byte/signed byte/word/signed word) 3
(byte) lvalue::i#1 ← ++ (byte) lvalue::i#3
to:lvalue::@1
lvalue::@return: scope:[lvalue] from lvalue::@1
@ -580,15 +578,13 @@ rvalue: scope:[rvalue] from main::@1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(byte[1024]) rvalue::SCREEN#2 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 )
(byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 )
(boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) rvalue::$0) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 )
(byte[1024]) rvalue::SCREEN#1 ← phi( rvalue::@1/(byte[1024]) rvalue::SCREEN#2 )
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#3)
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#3)
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#3
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -670,15 +666,13 @@ lvalue: scope:[lvalue] from main
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:lvalue::@1
lvalue::@1: scope:[lvalue] from lvalue lvalue::@2
(byte[1024]) lvalue::SCREEN#2 ← phi( lvalue/(byte[1024]) lvalue::SCREEN#0 lvalue::@2/(byte[1024]) lvalue::SCREEN#1 )
(byte) lvalue::i#2 ← phi( lvalue/(byte) lvalue::i#0 lvalue::@2/(byte) lvalue::i#1 )
(boolean~) lvalue::$0 ← (byte) lvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) lvalue::$0) goto lvalue::@2
to:lvalue::@return
lvalue::@2: scope:[lvalue] from lvalue::@1
(byte) lvalue::i#3 ← phi( lvalue::@1/(byte) lvalue::i#2 )
(byte[1024]) lvalue::SCREEN#1 ← phi( lvalue::@1/(byte[1024]) lvalue::SCREEN#2 )
*((byte[1024]) lvalue::SCREEN#1 + (byte) lvalue::i#3) ← (byte/signed byte/word/signed word) 3
*((byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#3) ← (byte/signed byte/word/signed word) 3
(byte) lvalue::i#1 ← ++ (byte) lvalue::i#3
to:lvalue::@1
lvalue::@return: scope:[lvalue] from lvalue::@1
@ -691,15 +685,13 @@ rvalue: scope:[rvalue] from main::@1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(byte[1024]) rvalue::SCREEN#2 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 )
(byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 )
(boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) rvalue::$0) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 )
(byte[1024]) rvalue::SCREEN#1 ← phi( rvalue::@1/(byte[1024]) rvalue::SCREEN#2 )
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#3)
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#3)
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#3
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -766,8 +758,6 @@ INITIAL SSA SYMBOL TABLE
(label) lvalue::@return
(byte[1024]) lvalue::SCREEN
(byte[1024]) lvalue::SCREEN#0
(byte[1024]) lvalue::SCREEN#1
(byte[1024]) lvalue::SCREEN#2
(byte) lvalue::i
(byte) lvalue::i#0
(byte) lvalue::i#1
@ -805,8 +795,6 @@ INITIAL SSA SYMBOL TABLE
(label) rvalue::@return
(byte[1024]) rvalue::SCREEN
(byte[1024]) rvalue::SCREEN#0
(byte[1024]) rvalue::SCREEN#1
(byte[1024]) rvalue::SCREEN#2
(byte) rvalue::b
(byte) rvalue::b#0
(byte) rvalue::b#1
@ -860,15 +848,13 @@ lvalue: scope:[lvalue] from main
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:lvalue::@1
lvalue::@1: scope:[lvalue] from lvalue lvalue::@2
(byte[1024]) lvalue::SCREEN#2 ← phi( lvalue/(byte[1024]) lvalue::SCREEN#0 lvalue::@2/(byte[1024]) lvalue::SCREEN#1 )
(byte) lvalue::i#2 ← phi( lvalue/(byte) lvalue::i#0 lvalue::@2/(byte) lvalue::i#1 )
(boolean~) lvalue::$0 ← (byte) lvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) lvalue::$0) goto lvalue::@2
to:lvalue::@return
lvalue::@2: scope:[lvalue] from lvalue::@1
(byte) lvalue::i#3 ← phi( lvalue::@1/(byte) lvalue::i#2 )
(byte[1024]) lvalue::SCREEN#1 ← phi( lvalue::@1/(byte[1024]) lvalue::SCREEN#2 )
*((byte[1024]) lvalue::SCREEN#1 + (byte) lvalue::i#3) ← (byte/signed byte/word/signed word) 3
*((byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#3) ← (byte/signed byte/word/signed word) 3
(byte) lvalue::i#1 ← ++ (byte) lvalue::i#3
to:lvalue::@1
lvalue::@return: scope:[lvalue] from lvalue::@1
@ -881,15 +867,13 @@ rvalue: scope:[rvalue] from main::@1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(byte[1024]) rvalue::SCREEN#2 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 )
(byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 )
(boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) rvalue::$0) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 )
(byte[1024]) rvalue::SCREEN#1 ← phi( rvalue::@1/(byte[1024]) rvalue::SCREEN#2 )
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#3)
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#3)
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#3
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -942,9 +926,7 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
to:@end
@end: scope:[] from @5
Alias (byte[1024]) lvalue::SCREEN#1 = (byte[1024]) lvalue::SCREEN#2
Alias (byte) lvalue::i#2 = (byte) lvalue::i#3
Alias (byte[1024]) rvalue::SCREEN#1 = (byte[1024]) rvalue::SCREEN#2
Alias (byte) rvalue::i#2 = (byte) rvalue::i#3
Alias (byte) lvaluevar::b#1 = (byte) lvaluevar::b#2
Alias (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#3
@ -977,13 +959,12 @@ lvalue: scope:[lvalue] from main
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:lvalue::@1
lvalue::@1: scope:[lvalue] from lvalue lvalue::@2
(byte[1024]) lvalue::SCREEN#1 ← phi( lvalue/(byte[1024]) lvalue::SCREEN#0 lvalue::@2/(byte[1024]) lvalue::SCREEN#1 )
(byte) lvalue::i#2 ← phi( lvalue/(byte) lvalue::i#0 lvalue::@2/(byte) lvalue::i#1 )
(boolean~) lvalue::$0 ← (byte) lvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) lvalue::$0) goto lvalue::@2
to:lvalue::@return
lvalue::@2: scope:[lvalue] from lvalue::@1
*((byte[1024]) lvalue::SCREEN#1 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3
*((byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3
(byte) lvalue::i#1 ← ++ (byte) lvalue::i#2
to:lvalue::@1
lvalue::@return: scope:[lvalue] from lvalue::@1
@ -996,13 +977,12 @@ rvalue: scope:[rvalue] from main::@1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(byte[1024]) rvalue::SCREEN#1 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 )
(byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 )
(boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) rvalue::$0) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#2)
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2)
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#2
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -1050,8 +1030,6 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
to:@end
@end: scope:[] from @5
Self Phi Eliminated (byte[1024]) lvalue::SCREEN#1
Self Phi Eliminated (byte[1024]) rvalue::SCREEN#1
Self Phi Eliminated (byte) lvaluevar::b#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@ -1079,13 +1057,12 @@ lvalue: scope:[lvalue] from main
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:lvalue::@1
lvalue::@1: scope:[lvalue] from lvalue lvalue::@2
(byte[1024]) lvalue::SCREEN#1 ← phi( lvalue/(byte[1024]) lvalue::SCREEN#0 )
(byte) lvalue::i#2 ← phi( lvalue/(byte) lvalue::i#0 lvalue::@2/(byte) lvalue::i#1 )
(boolean~) lvalue::$0 ← (byte) lvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) lvalue::$0) goto lvalue::@2
to:lvalue::@return
lvalue::@2: scope:[lvalue] from lvalue::@1
*((byte[1024]) lvalue::SCREEN#1 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3
*((byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3
(byte) lvalue::i#1 ← ++ (byte) lvalue::i#2
to:lvalue::@1
lvalue::@return: scope:[lvalue] from lvalue::@1
@ -1098,13 +1075,12 @@ rvalue: scope:[rvalue] from main::@1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(byte[1024]) rvalue::SCREEN#1 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 )
(byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 )
(boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10
if((boolean~) rvalue::$0) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#2)
(byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2)
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#2
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -1152,8 +1128,6 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
to:@end
@end: scope:[] from @5
Redundant Phi (byte[1024]) lvalue::SCREEN#1 (byte[1024]) lvalue::SCREEN#0
Redundant Phi (byte[1024]) rvalue::SCREEN#1 (byte[1024]) rvalue::SCREEN#0
Redundant Phi (byte) lvaluevar::b#1 (byte) lvaluevar::b#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH

View File

@ -178,12 +178,10 @@ CONTROL FLOW GRAPH SSA
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -193,7 +191,6 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#3 )
(byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 )
@ -206,8 +203,7 @@ main::@2: scope:[main] from main::@1 main::@3
main::@3: scope:[main] from main::@1
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#2 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -215,7 +211,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#5 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TEXT#3 ← phi( @begin/(byte[]) TEXT#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -229,12 +224,10 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -244,7 +237,6 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#3 )
(byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 )
@ -257,8 +249,7 @@ main::@2: scope:[main] from main::@1 main::@3
main::@3: scope:[main] from main::@1
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#2 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -266,7 +257,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#5 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TEXT#3 ← phi( @begin/(byte[]) TEXT#0 )
call main param-assignment
to:@2
@2: scope:[] from @1
@ -288,11 +278,6 @@ INITIAL SSA SYMBOL TABLE
(byte*) SCREEN#5
(byte[]) TEXT
(byte[]) TEXT#0
(byte[]) TEXT#1
(byte[]) TEXT#2
(byte[]) TEXT#3
(byte[]) TEXT#4
(byte[]) TEXT#5
(void()) main()
(boolean~) main::$0
(boolean~) main::$1
@ -326,12 +311,10 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -341,7 +324,6 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#3 )
(byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 )
@ -354,8 +336,7 @@ main::@2: scope:[main] from main::@1 main::@3
main::@3: scope:[main] from main::@1
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#2 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -363,7 +344,6 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#5 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TEXT#3 ← phi( @begin/(byte[]) TEXT#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
@ -377,12 +357,10 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -391,7 +369,6 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#3 )
(byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 )
@ -404,8 +381,7 @@ main::@2: scope:[main] from main::@1 main::@3
main::@3: scope:[main] from main::@1
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#2 )
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -413,19 +389,15 @@ main::@return: scope:[main] from main::@2
to:@return
@1: scope:[] from @begin
(byte*) SCREEN#5 ← phi( @begin/(byte*) SCREEN#0 )
(byte[]) TEXT#3 ← phi( @begin/(byte[]) TEXT#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
Not aliassing across scopes: TEXT#1 TEXT#3
Not aliassing across scopes: SCREEN#4 SCREEN#5
Not aliassing across scopes: main::nxt#0 TEXT#1
Not aliassing across scopes: main::nxt#2 TEXT#2
Alias (byte[]) TEXT#2 = (byte[]) TEXT#4
Not aliassing across scopes: main::nxt#0 TEXT#0
Not aliassing across scopes: main::nxt#2 TEXT#0
Alias (byte) main::i#3 = (byte) main::i#4
Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
Alias (byte[]) TEXT#0 = (byte[]) TEXT#3
Alias (byte*) SCREEN#0 = (byte*) SCREEN#5
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@ -435,12 +407,10 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#0 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#2 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 )
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -449,7 +419,6 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#2 main::@3/(byte[]) TEXT#2 )
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#2 )
(byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 )
@ -460,7 +429,7 @@ main::@2: scope:[main] from main::@1 main::@3
if(true) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -471,13 +440,11 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Not aliassing across scopes: TEXT#1 TEXT#0
Not aliassing across scopes: SCREEN#4 SCREEN#0
Not aliassing across scopes: main::nxt#0 TEXT#1
Not aliassing across scopes: main::nxt#2 TEXT#2
Not aliassing across scopes: main::nxt#0 TEXT#0
Not aliassing across scopes: main::nxt#2 TEXT#0
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
Alias (byte[]) TEXT#2 = (byte[]) TEXT#5
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -486,12 +453,10 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#0 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#2 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#2 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -508,7 +473,7 @@ main::@2: scope:[main] from main::@1 main::@3
if(true) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -519,12 +484,10 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Not aliassing across scopes: TEXT#1 TEXT#0
Not aliassing across scopes: SCREEN#4 SCREEN#0
Not aliassing across scopes: main::nxt#0 TEXT#1
Not aliassing across scopes: main::nxt#2 TEXT#2
Not aliassing across scopes: main::nxt#0 TEXT#0
Not aliassing across scopes: main::nxt#2 TEXT#0
Self Phi Eliminated (byte*) SCREEN#1
Self Phi Eliminated (byte[]) TEXT#2
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -533,12 +496,10 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#0 )
(byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#0 )
(byte*) main::nxt#0 ← (byte[]) TEXT#1
(byte*) main::nxt#0 ← (byte[]) TEXT#0
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte[]) TEXT#2 ← phi( main/(byte[]) TEXT#1 )
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#4 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
@ -555,7 +516,7 @@ main::@2: scope:[main] from main::@1 main::@3
if(true) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
@ -566,10 +527,8 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) TEXT#1 (byte[]) TEXT#0
Redundant Phi (byte*) SCREEN#4 (byte*) SCREEN#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#4
Redundant Phi (byte[]) TEXT#2 (byte[]) TEXT#1
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from

File diff suppressed because it is too large Load Diff

View File

@ -1441,31 +1441,23 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
(byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 )
(byte[]) scroll_hard::line6#1 ← phi( scroll_hard/(byte[]) scroll_hard::line6#0 scroll_hard::@1/(byte[]) scroll_hard::line6#1 )
(byte[]) scroll_hard::line5#1 ← phi( scroll_hard/(byte[]) scroll_hard::line5#0 scroll_hard::@1/(byte[]) scroll_hard::line5#1 )
(byte[]) scroll_hard::line4#1 ← phi( scroll_hard/(byte[]) scroll_hard::line4#0 scroll_hard::@1/(byte[]) scroll_hard::line4#1 )
(byte[]) scroll_hard::line3#1 ← phi( scroll_hard/(byte[]) scroll_hard::line3#0 scroll_hard::@1/(byte[]) scroll_hard::line3#1 )
(byte[]) scroll_hard::line2#1 ← phi( scroll_hard/(byte[]) scroll_hard::line2#0 scroll_hard::@1/(byte[]) scroll_hard::line2#1 )
(byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 )
(byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 )
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
(byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16)
*((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#0 + (byte/word~) scroll_hard::$16)
(byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17)
*((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#0 + (byte/word~) scroll_hard::$17)
(byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18)
*((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#0 + (byte/word~) scroll_hard::$18)
(byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19)
*((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#0 + (byte/word~) scroll_hard::$19)
(byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20)
*((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#0 + (byte/word~) scroll_hard::$20)
(byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21)
*((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#0 + (byte/word~) scroll_hard::$21)
(byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22)
*((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#0 + (byte/word~) scroll_hard::$22)
(byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23)
*((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#0 + (byte/word~) scroll_hard::$23)
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
(boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39
if((boolean~) scroll_hard::$24) goto scroll_hard::@1
@ -1904,31 +1896,23 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
(byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 )
(byte[]) scroll_hard::line6#1 ← phi( scroll_hard/(byte[]) scroll_hard::line6#0 scroll_hard::@1/(byte[]) scroll_hard::line6#1 )
(byte[]) scroll_hard::line5#1 ← phi( scroll_hard/(byte[]) scroll_hard::line5#0 scroll_hard::@1/(byte[]) scroll_hard::line5#1 )
(byte[]) scroll_hard::line4#1 ← phi( scroll_hard/(byte[]) scroll_hard::line4#0 scroll_hard::@1/(byte[]) scroll_hard::line4#1 )
(byte[]) scroll_hard::line3#1 ← phi( scroll_hard/(byte[]) scroll_hard::line3#0 scroll_hard::@1/(byte[]) scroll_hard::line3#1 )
(byte[]) scroll_hard::line2#1 ← phi( scroll_hard/(byte[]) scroll_hard::line2#0 scroll_hard::@1/(byte[]) scroll_hard::line2#1 )
(byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 )
(byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 )
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
(byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16)
*((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#0 + (byte/word~) scroll_hard::$16)
(byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17)
*((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#0 + (byte/word~) scroll_hard::$17)
(byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18)
*((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#0 + (byte/word~) scroll_hard::$18)
(byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19)
*((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#0 + (byte/word~) scroll_hard::$19)
(byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20)
*((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#0 + (byte/word~) scroll_hard::$20)
(byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21)
*((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#0 + (byte/word~) scroll_hard::$21)
(byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22)
*((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#0 + (byte/word~) scroll_hard::$22)
(byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23)
*((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#0 + (byte/word~) scroll_hard::$23)
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
(boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39
if((boolean~) scroll_hard::$24) goto scroll_hard::@1
@ -2366,28 +2350,20 @@ INITIAL SSA SYMBOL TABLE
(byte) scroll_hard::i#2
(byte[]) scroll_hard::line0
(byte[]) scroll_hard::line0#0
(byte[]) scroll_hard::line0#1
(byte[]) scroll_hard::line1
(byte[]) scroll_hard::line1#0
(byte[]) scroll_hard::line1#1
(byte[]) scroll_hard::line2
(byte[]) scroll_hard::line2#0
(byte[]) scroll_hard::line2#1
(byte[]) scroll_hard::line3
(byte[]) scroll_hard::line3#0
(byte[]) scroll_hard::line3#1
(byte[]) scroll_hard::line4
(byte[]) scroll_hard::line4#0
(byte[]) scroll_hard::line4#1
(byte[]) scroll_hard::line5
(byte[]) scroll_hard::line5#0
(byte[]) scroll_hard::line5#1
(byte[]) scroll_hard::line6
(byte[]) scroll_hard::line6#0
(byte[]) scroll_hard::line6#1
(byte[]) scroll_hard::line7
(byte[]) scroll_hard::line7#0
(byte[]) scroll_hard::line7#1
(void()) scroll_soft()
(boolean~) scroll_soft::$0
(boolean~) scroll_soft::$1
@ -2784,31 +2760,23 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
(byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 )
(byte[]) scroll_hard::line6#1 ← phi( scroll_hard/(byte[]) scroll_hard::line6#0 scroll_hard::@1/(byte[]) scroll_hard::line6#1 )
(byte[]) scroll_hard::line5#1 ← phi( scroll_hard/(byte[]) scroll_hard::line5#0 scroll_hard::@1/(byte[]) scroll_hard::line5#1 )
(byte[]) scroll_hard::line4#1 ← phi( scroll_hard/(byte[]) scroll_hard::line4#0 scroll_hard::@1/(byte[]) scroll_hard::line4#1 )
(byte[]) scroll_hard::line3#1 ← phi( scroll_hard/(byte[]) scroll_hard::line3#0 scroll_hard::@1/(byte[]) scroll_hard::line3#1 )
(byte[]) scroll_hard::line2#1 ← phi( scroll_hard/(byte[]) scroll_hard::line2#0 scroll_hard::@1/(byte[]) scroll_hard::line2#1 )
(byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 )
(byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 )
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
(byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16)
*((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#0 + (byte/word~) scroll_hard::$16)
(byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17)
*((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#0 + (byte/word~) scroll_hard::$17)
(byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18)
*((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#0 + (byte/word~) scroll_hard::$18)
(byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19)
*((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#0 + (byte/word~) scroll_hard::$19)
(byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20)
*((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#0 + (byte/word~) scroll_hard::$20)
(byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21)
*((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#0 + (byte/word~) scroll_hard::$21)
(byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22)
*((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#0 + (byte/word~) scroll_hard::$22)
(byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23)
*((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#0 + (byte/word~) scroll_hard::$23)
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
(boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39
if((boolean~) scroll_hard::$24) goto scroll_hard::@1
@ -3234,31 +3202,23 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
(byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 )
(byte[]) scroll_hard::line6#1 ← phi( scroll_hard/(byte[]) scroll_hard::line6#0 scroll_hard::@1/(byte[]) scroll_hard::line6#1 )
(byte[]) scroll_hard::line5#1 ← phi( scroll_hard/(byte[]) scroll_hard::line5#0 scroll_hard::@1/(byte[]) scroll_hard::line5#1 )
(byte[]) scroll_hard::line4#1 ← phi( scroll_hard/(byte[]) scroll_hard::line4#0 scroll_hard::@1/(byte[]) scroll_hard::line4#1 )
(byte[]) scroll_hard::line3#1 ← phi( scroll_hard/(byte[]) scroll_hard::line3#0 scroll_hard::@1/(byte[]) scroll_hard::line3#1 )
(byte[]) scroll_hard::line2#1 ← phi( scroll_hard/(byte[]) scroll_hard::line2#0 scroll_hard::@1/(byte[]) scroll_hard::line2#1 )
(byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 )
(byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 )
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
(byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16)
*((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#0 + (byte/word~) scroll_hard::$16)
(byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17)
*((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#0 + (byte/word~) scroll_hard::$17)
(byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18)
*((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#0 + (byte/word~) scroll_hard::$18)
(byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19)
*((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#0 + (byte/word~) scroll_hard::$19)
(byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20)
*((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#0 + (byte/word~) scroll_hard::$20)
(byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21)
*((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#0 + (byte/word~) scroll_hard::$21)
(byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22)
*((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#0 + (byte/word~) scroll_hard::$22)
(byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23)
*((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#0 + (byte/word~) scroll_hard::$23)
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
(boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39
if((boolean~) scroll_hard::$24) goto scroll_hard::@1
@ -3574,31 +3534,23 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
(byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 )
(byte[]) scroll_hard::line6#1 ← phi( scroll_hard/(byte[]) scroll_hard::line6#0 scroll_hard::@1/(byte[]) scroll_hard::line6#1 )
(byte[]) scroll_hard::line5#1 ← phi( scroll_hard/(byte[]) scroll_hard::line5#0 scroll_hard::@1/(byte[]) scroll_hard::line5#1 )
(byte[]) scroll_hard::line4#1 ← phi( scroll_hard/(byte[]) scroll_hard::line4#0 scroll_hard::@1/(byte[]) scroll_hard::line4#1 )
(byte[]) scroll_hard::line3#1 ← phi( scroll_hard/(byte[]) scroll_hard::line3#0 scroll_hard::@1/(byte[]) scroll_hard::line3#1 )
(byte[]) scroll_hard::line2#1 ← phi( scroll_hard/(byte[]) scroll_hard::line2#0 scroll_hard::@1/(byte[]) scroll_hard::line2#1 )
(byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 )
(byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 )
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
(byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16)
*((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#0 + (byte/word~) scroll_hard::$16)
(byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17)
*((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#0 + (byte/word~) scroll_hard::$17)
(byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18)
*((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#0 + (byte/word~) scroll_hard::$18)
(byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19)
*((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#0 + (byte/word~) scroll_hard::$19)
(byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20)
*((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#0 + (byte/word~) scroll_hard::$20)
(byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21)
*((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#0 + (byte/word~) scroll_hard::$21)
(byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22)
*((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#0 + (byte/word~) scroll_hard::$22)
(byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23)
*((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#0 + (byte/word~) scroll_hard::$23)
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
(boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39
if((boolean~) scroll_hard::$24) goto scroll_hard::@1
@ -3711,14 +3663,6 @@ Self Phi Eliminated (byte*) current_chargen#12
Self Phi Eliminated (byte) current_bit#14
Self Phi Eliminated (byte*) PROCPORT#2
Self Phi Eliminated (byte*) nxt#16
Self Phi Eliminated (byte[]) scroll_hard::line0#1
Self Phi Eliminated (byte[]) scroll_hard::line1#1
Self Phi Eliminated (byte[]) scroll_hard::line2#1
Self Phi Eliminated (byte[]) scroll_hard::line3#1
Self Phi Eliminated (byte[]) scroll_hard::line4#1
Self Phi Eliminated (byte[]) scroll_hard::line5#1
Self Phi Eliminated (byte[]) scroll_hard::line6#1
Self Phi Eliminated (byte[]) scroll_hard::line7#1
Self Phi Eliminated (byte) fillscreen::fill#1
Self Phi Eliminated (byte*) fillscreen::screen#2
Succesful SSA optimization Pass2SelfPhiElimination
@ -3945,31 +3889,23 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0
to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
(byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 )
(byte[]) scroll_hard::line6#1 ← phi( scroll_hard/(byte[]) scroll_hard::line6#0 )
(byte[]) scroll_hard::line5#1 ← phi( scroll_hard/(byte[]) scroll_hard::line5#0 )
(byte[]) scroll_hard::line4#1 ← phi( scroll_hard/(byte[]) scroll_hard::line4#0 )
(byte[]) scroll_hard::line3#1 ← phi( scroll_hard/(byte[]) scroll_hard::line3#0 )
(byte[]) scroll_hard::line2#1 ← phi( scroll_hard/(byte[]) scroll_hard::line2#0 )
(byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 )
(byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 )
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
(byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16)
*((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line0#0 + (byte/word~) scroll_hard::$16)
(byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17)
*((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line1#0 + (byte/word~) scroll_hard::$17)
(byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18)
*((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line2#0 + (byte/word~) scroll_hard::$18)
(byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19)
*((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line3#0 + (byte/word~) scroll_hard::$19)
(byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20)
*((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line4#0 + (byte/word~) scroll_hard::$20)
(byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21)
*((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line5#0 + (byte/word~) scroll_hard::$21)
(byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22)
*((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line6#0 + (byte/word~) scroll_hard::$22)
(byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1
*((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23)
*((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((byte[]) scroll_hard::line7#0 + (byte/word~) scroll_hard::$23)
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
(boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39
if((boolean~) scroll_hard::$24) goto scroll_hard::@1
@ -4058,14 +3994,6 @@ Redundant Phi (byte*) nxt#16 (byte*) nxt#36
Redundant Phi (byte*) nxt#17 (byte*) nxt#24
Redundant Phi (byte*) TEXT#2 (byte*) TEXT#6
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#10
Redundant Phi (byte[]) scroll_hard::line0#1 (byte[]) scroll_hard::line0#0
Redundant Phi (byte[]) scroll_hard::line1#1 (byte[]) scroll_hard::line1#0
Redundant Phi (byte[]) scroll_hard::line2#1 (byte[]) scroll_hard::line2#0
Redundant Phi (byte[]) scroll_hard::line3#1 (byte[]) scroll_hard::line3#0
Redundant Phi (byte[]) scroll_hard::line4#1 (byte[]) scroll_hard::line4#0
Redundant Phi (byte[]) scroll_hard::line5#1 (byte[]) scroll_hard::line5#0
Redundant Phi (byte[]) scroll_hard::line6#1 (byte[]) scroll_hard::line6#0
Redundant Phi (byte[]) scroll_hard::line7#1 (byte[]) scroll_hard::line7#0
Redundant Phi (byte*) fillscreen::cursor#0 (byte*) fillscreen::screen#0
Redundant Phi (byte) fillscreen::fill#2 (byte) fillscreen::fill#0
Redundant Phi (byte) fillscreen::fill#1 (byte) fillscreen::fill#2

View File

@ -158,17 +158,15 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 )
(byte[]) main::screen#2 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 )
(signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 )
(boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127
if((boolean~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte) main::j#2 ← phi( main::@1/(byte) main::j#3 )
(byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 )
(signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 )
(byte~) main::$2 ← ((byte)) (signed byte) main::i#3
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
*((byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#3
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -193,17 +191,15 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 )
(byte[]) main::screen#2 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 )
(signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 )
(boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127
if((boolean~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte) main::j#2 ← phi( main::@1/(byte) main::j#3 )
(byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 )
(signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 )
(byte~) main::$2 ← ((byte)) (signed byte) main::i#3
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
*((byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#3
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -241,8 +237,6 @@ INITIAL SSA SYMBOL TABLE
(byte) main::j#3
(byte[]) main::screen
(byte[]) main::screen#0
(byte[]) main::screen#1
(byte[]) main::screen#2
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
@ -257,17 +251,15 @@ main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 )
(byte[]) main::screen#2 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 )
(signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 )
(boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127
if((boolean~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte) main::j#2 ← phi( main::@1/(byte) main::j#3 )
(byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 )
(signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 )
(byte~) main::$2 ← ((byte)) (signed byte) main::i#3
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
*((byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#3
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -281,72 +273,9 @@ main::@return: scope:[main] from main::@1
Alias (signed byte) main::i#0 = (signed byte/signed word~) main::$0
Alias (signed byte) main::i#2 = (signed byte) main::i#3
Alias (byte[]) main::screen#1 = (byte[]) main::screen#2
Alias (byte) main::j#2 = (byte) main::j#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::j#2 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 )
(byte[]) main::screen#1 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 )
(signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 )
(boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127
if((boolean~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Self Phi Eliminated (byte[]) main::screen#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::j#2 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 )
(byte[]) main::screen#1 ← phi( main/(byte[]) main::screen#0 )
(signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 )
(boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127
if((boolean~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Redundant Phi (byte[]) main::screen#1 (byte[]) main::screen#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1

View File

@ -1787,30 +1787,22 @@ main: scope:[main] from @34
main::@3: scope:[main] from main
(byte*) line_cursor#28 ← phi( main/(byte*) line_cursor#29 )
(byte*) char_cursor#46 ← phi( main/(byte*) char_cursor#47 )
(byte[]) main::f_i#10 ← phi( main/(byte[]) main::f_i#0 )
(byte[]) main::f_127#4 ← phi( main/(byte[]) main::f_127#0 )
call divFACby10 param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte*) line_cursor#27 ← phi( main::@3/(byte*) line_cursor#28 )
(byte*) char_cursor#45 ← phi( main::@3/(byte*) char_cursor#46 )
(byte[]) main::f_i#8 ← phi( main::@3/(byte[]) main::f_i#10 )
(byte[]) main::f_127#1 ← phi( main::@3/(byte[]) main::f_127#4 )
(byte*) setMEMtoFAC::mem#0 ← (byte[]) main::f_127#1
(byte*) setMEMtoFAC::mem#0 ← (byte[]) main::f_127#0
call setMEMtoFAC param-assignment
to:main::@5
main::@5: scope:[main] from main::@4
(byte*) line_cursor#26 ← phi( main::@4/(byte*) line_cursor#27 )
(byte*) char_cursor#44 ← phi( main::@4/(byte*) char_cursor#45 )
(byte[]) main::f_127#12 ← phi( main::@4/(byte[]) main::f_127#1 )
(byte[]) main::f_i#7 ← phi( main::@4/(byte[]) main::f_i#8 )
(byte) main::i#0 ← (byte/signed byte/word/signed word) 1
to:main::@1
main::@1: scope:[main] from main::@16 main::@5
(byte*) line_cursor#25 ← phi( main::@16/(byte*) line_cursor#3 main::@5/(byte*) line_cursor#26 )
(byte*) char_cursor#43 ← phi( main::@16/(byte*) char_cursor#12 main::@5/(byte*) char_cursor#44 )
(byte[]) main::f_127#10 ← phi( main::@16/(byte[]) main::f_127#11 main::@5/(byte[]) main::f_127#12 )
(byte[]) main::f_i#5 ← phi( main::@16/(byte[]) main::f_i#6 main::@5/(byte[]) main::f_i#7 )
(byte) main::i#2 ← phi( main::@16/(byte) main::i#1 main::@5/(byte) main::i#0 )
(word~) main::$3 ← ((word)) (byte) main::i#2
(word) setFAC::w#1 ← (word~) main::$3
@ -1820,8 +1812,6 @@ main::@6: scope:[main] from main::@1
(byte) main::i#13 ← phi( main::@1/(byte) main::i#2 )
(byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#25 )
(byte*) char_cursor#42 ← phi( main::@1/(byte*) char_cursor#43 )
(byte[]) main::f_127#9 ← phi( main::@1/(byte[]) main::f_127#10 )
(byte[]) main::f_i#3 ← phi( main::@1/(byte[]) main::f_i#5 )
(byte*) mulFACbyMEM::mem#0 ← (byte*) main::f_2pi#0
call mulFACbyMEM param-assignment
to:main::@7
@ -1829,17 +1819,13 @@ main::@7: scope:[main] from main::@6
(byte) main::i#12 ← phi( main::@6/(byte) main::i#13 )
(byte*) line_cursor#23 ← phi( main::@6/(byte*) line_cursor#24 )
(byte*) char_cursor#41 ← phi( main::@6/(byte*) char_cursor#42 )
(byte[]) main::f_127#8 ← phi( main::@6/(byte[]) main::f_127#9 )
(byte[]) main::f_i#1 ← phi( main::@6/(byte[]) main::f_i#3 )
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#1
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#0
call setMEMtoFAC param-assignment
to:main::@8
main::@8: scope:[main] from main::@7
(byte) main::i#11 ← phi( main::@7/(byte) main::i#12 )
(byte*) line_cursor#22 ← phi( main::@7/(byte*) line_cursor#23 )
(byte*) char_cursor#40 ← phi( main::@7/(byte*) char_cursor#41 )
(byte[]) main::f_127#7 ← phi( main::@7/(byte[]) main::f_127#8 )
(byte[]) main::f_i#4 ← phi( main::@7/(byte[]) main::f_i#1 )
(word) setFAC::w#2 ← (byte/signed byte/word/signed word) 25
call setFAC param-assignment
to:main::@9
@ -1847,48 +1833,36 @@ main::@9: scope:[main] from main::@8
(byte) main::i#10 ← phi( main::@8/(byte) main::i#11 )
(byte*) line_cursor#21 ← phi( main::@8/(byte*) line_cursor#22 )
(byte*) char_cursor#39 ← phi( main::@8/(byte*) char_cursor#40 )
(byte[]) main::f_127#6 ← phi( main::@8/(byte[]) main::f_127#7 )
(byte[]) main::f_i#2 ← phi( main::@8/(byte[]) main::f_i#4 )
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#2
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#0
call divMEMbyFAC param-assignment
to:main::@10
main::@10: scope:[main] from main::@9
(byte[]) main::f_i#15 ← phi( main::@9/(byte[]) main::f_i#2 )
(byte) main::i#9 ← phi( main::@9/(byte) main::i#10 )
(byte*) line_cursor#20 ← phi( main::@9/(byte*) line_cursor#21 )
(byte*) char_cursor#38 ← phi( main::@9/(byte*) char_cursor#39 )
(byte[]) main::f_127#5 ← phi( main::@9/(byte[]) main::f_127#6 )
call sinFAC param-assignment
to:main::@11
main::@11: scope:[main] from main::@10
(byte[]) main::f_i#14 ← phi( main::@10/(byte[]) main::f_i#15 )
(byte) main::i#8 ← phi( main::@10/(byte) main::i#9 )
(byte*) line_cursor#19 ← phi( main::@10/(byte*) line_cursor#20 )
(byte*) char_cursor#37 ← phi( main::@10/(byte*) char_cursor#38 )
(byte[]) main::f_127#2 ← phi( main::@10/(byte[]) main::f_127#5 )
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#2
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#0
call mulFACbyMEM param-assignment
to:main::@12
main::@12: scope:[main] from main::@11
(byte[]) main::f_i#13 ← phi( main::@11/(byte[]) main::f_i#14 )
(byte) main::i#7 ← phi( main::@11/(byte) main::i#8 )
(byte*) line_cursor#18 ← phi( main::@11/(byte*) line_cursor#19 )
(byte*) char_cursor#36 ← phi( main::@11/(byte*) char_cursor#37 )
(byte[]) main::f_127#3 ← phi( main::@11/(byte[]) main::f_127#2 )
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#3
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#0
call addMEMtoFAC param-assignment
to:main::@13
main::@13: scope:[main] from main::@12
(byte[]) main::f_127#15 ← phi( main::@12/(byte[]) main::f_127#3 )
(byte[]) main::f_i#12 ← phi( main::@12/(byte[]) main::f_i#13 )
(byte) main::i#6 ← phi( main::@12/(byte) main::i#7 )
(byte*) line_cursor#17 ← phi( main::@12/(byte*) line_cursor#18 )
(byte*) char_cursor#34 ← phi( main::@12/(byte*) char_cursor#36 )
(word) getFAC::return#2 ← call getFAC param-assignment
to:main::@14
main::@14: scope:[main] from main::@13
(byte[]) main::f_127#14 ← phi( main::@13/(byte[]) main::f_127#15 )
(byte[]) main::f_i#11 ← phi( main::@13/(byte[]) main::f_i#12 )
(byte) main::i#5 ← phi( main::@13/(byte) main::i#6 )
(byte*) line_cursor#15 ← phi( main::@13/(byte*) line_cursor#17 )
(byte*) char_cursor#32 ← phi( main::@13/(byte*) char_cursor#34 )
@ -1898,8 +1872,6 @@ main::@14: scope:[main] from main::@13
call print_word param-assignment
to:main::@15
main::@15: scope:[main] from main::@14
(byte[]) main::f_127#13 ← phi( main::@14/(byte[]) main::f_127#14 )
(byte[]) main::f_i#9 ← phi( main::@14/(byte[]) main::f_i#11 )
(byte) main::i#4 ← phi( main::@14/(byte) main::i#5 )
(byte*) line_cursor#13 ← phi( main::@14/(byte*) line_cursor#15 )
(byte*) char_cursor#25 ← phi( main::@14/(byte*) char_cursor#32 )
@ -1907,8 +1879,6 @@ main::@15: scope:[main] from main::@14
call print_ln param-assignment
to:main::@16
main::@16: scope:[main] from main::@15
(byte[]) main::f_127#11 ← phi( main::@15/(byte[]) main::f_127#13 )
(byte[]) main::f_i#6 ← phi( main::@15/(byte[]) main::f_i#9 )
(byte) main::i#3 ← phi( main::@15/(byte) main::i#4 )
(byte*) char_cursor#26 ← phi( main::@15/(byte*) char_cursor#11 )
(byte*) line_cursor#9 ← phi( main::@15/(byte*) line_cursor#13 )
@ -2132,30 +2102,22 @@ main: scope:[main] from @34
main::@3: scope:[main] from main
(byte*) line_cursor#28 ← phi( main/(byte*) line_cursor#29 )
(byte*) char_cursor#46 ← phi( main/(byte*) char_cursor#47 )
(byte[]) main::f_i#10 ← phi( main/(byte[]) main::f_i#0 )
(byte[]) main::f_127#4 ← phi( main/(byte[]) main::f_127#0 )
call divFACby10 param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte*) line_cursor#27 ← phi( main::@3/(byte*) line_cursor#28 )
(byte*) char_cursor#45 ← phi( main::@3/(byte*) char_cursor#46 )
(byte[]) main::f_i#8 ← phi( main::@3/(byte[]) main::f_i#10 )
(byte[]) main::f_127#1 ← phi( main::@3/(byte[]) main::f_127#4 )
(byte*) setMEMtoFAC::mem#0 ← (byte[]) main::f_127#1
(byte*) setMEMtoFAC::mem#0 ← (byte[]) main::f_127#0
call setMEMtoFAC param-assignment
to:main::@5
main::@5: scope:[main] from main::@4
(byte*) line_cursor#26 ← phi( main::@4/(byte*) line_cursor#27 )
(byte*) char_cursor#44 ← phi( main::@4/(byte*) char_cursor#45 )
(byte[]) main::f_127#12 ← phi( main::@4/(byte[]) main::f_127#1 )
(byte[]) main::f_i#7 ← phi( main::@4/(byte[]) main::f_i#8 )
(byte) main::i#0 ← (byte/signed byte/word/signed word) 1
to:main::@1
main::@1: scope:[main] from main::@16 main::@5
(byte*) line_cursor#25 ← phi( main::@16/(byte*) line_cursor#3 main::@5/(byte*) line_cursor#26 )
(byte*) char_cursor#43 ← phi( main::@16/(byte*) char_cursor#12 main::@5/(byte*) char_cursor#44 )
(byte[]) main::f_127#10 ← phi( main::@16/(byte[]) main::f_127#11 main::@5/(byte[]) main::f_127#12 )
(byte[]) main::f_i#5 ← phi( main::@16/(byte[]) main::f_i#6 main::@5/(byte[]) main::f_i#7 )
(byte) main::i#2 ← phi( main::@16/(byte) main::i#1 main::@5/(byte) main::i#0 )
(word~) main::$3 ← ((word)) (byte) main::i#2
(word) setFAC::w#1 ← (word~) main::$3
@ -2165,8 +2127,6 @@ main::@6: scope:[main] from main::@1
(byte) main::i#13 ← phi( main::@1/(byte) main::i#2 )
(byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#25 )
(byte*) char_cursor#42 ← phi( main::@1/(byte*) char_cursor#43 )
(byte[]) main::f_127#9 ← phi( main::@1/(byte[]) main::f_127#10 )
(byte[]) main::f_i#3 ← phi( main::@1/(byte[]) main::f_i#5 )
(byte*) mulFACbyMEM::mem#0 ← (byte*) main::f_2pi#0
call mulFACbyMEM param-assignment
to:main::@7
@ -2174,17 +2134,13 @@ main::@7: scope:[main] from main::@6
(byte) main::i#12 ← phi( main::@6/(byte) main::i#13 )
(byte*) line_cursor#23 ← phi( main::@6/(byte*) line_cursor#24 )
(byte*) char_cursor#41 ← phi( main::@6/(byte*) char_cursor#42 )
(byte[]) main::f_127#8 ← phi( main::@6/(byte[]) main::f_127#9 )
(byte[]) main::f_i#1 ← phi( main::@6/(byte[]) main::f_i#3 )
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#1
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#0
call setMEMtoFAC param-assignment
to:main::@8
main::@8: scope:[main] from main::@7
(byte) main::i#11 ← phi( main::@7/(byte) main::i#12 )
(byte*) line_cursor#22 ← phi( main::@7/(byte*) line_cursor#23 )
(byte*) char_cursor#40 ← phi( main::@7/(byte*) char_cursor#41 )
(byte[]) main::f_127#7 ← phi( main::@7/(byte[]) main::f_127#8 )
(byte[]) main::f_i#4 ← phi( main::@7/(byte[]) main::f_i#1 )
(word) setFAC::w#2 ← (byte/signed byte/word/signed word) 25
call setFAC param-assignment
to:main::@9
@ -2192,40 +2148,30 @@ main::@9: scope:[main] from main::@8
(byte) main::i#10 ← phi( main::@8/(byte) main::i#11 )
(byte*) line_cursor#21 ← phi( main::@8/(byte*) line_cursor#22 )
(byte*) char_cursor#39 ← phi( main::@8/(byte*) char_cursor#40 )
(byte[]) main::f_127#6 ← phi( main::@8/(byte[]) main::f_127#7 )
(byte[]) main::f_i#2 ← phi( main::@8/(byte[]) main::f_i#4 )
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#2
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#0
call divMEMbyFAC param-assignment
to:main::@10
main::@10: scope:[main] from main::@9
(byte[]) main::f_i#15 ← phi( main::@9/(byte[]) main::f_i#2 )
(byte) main::i#9 ← phi( main::@9/(byte) main::i#10 )
(byte*) line_cursor#20 ← phi( main::@9/(byte*) line_cursor#21 )
(byte*) char_cursor#38 ← phi( main::@9/(byte*) char_cursor#39 )
(byte[]) main::f_127#5 ← phi( main::@9/(byte[]) main::f_127#6 )
call sinFAC param-assignment
to:main::@11
main::@11: scope:[main] from main::@10
(byte[]) main::f_i#14 ← phi( main::@10/(byte[]) main::f_i#15 )
(byte) main::i#8 ← phi( main::@10/(byte) main::i#9 )
(byte*) line_cursor#19 ← phi( main::@10/(byte*) line_cursor#20 )
(byte*) char_cursor#37 ← phi( main::@10/(byte*) char_cursor#38 )
(byte[]) main::f_127#2 ← phi( main::@10/(byte[]) main::f_127#5 )
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#2
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#0
call mulFACbyMEM param-assignment
to:main::@12
main::@12: scope:[main] from main::@11
(byte[]) main::f_i#13 ← phi( main::@11/(byte[]) main::f_i#14 )
(byte) main::i#7 ← phi( main::@11/(byte) main::i#8 )
(byte*) line_cursor#18 ← phi( main::@11/(byte*) line_cursor#19 )
(byte*) char_cursor#36 ← phi( main::@11/(byte*) char_cursor#37 )
(byte[]) main::f_127#3 ← phi( main::@11/(byte[]) main::f_127#2 )
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#3
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#0
call addMEMtoFAC param-assignment
to:main::@13
main::@13: scope:[main] from main::@12
(byte[]) main::f_127#15 ← phi( main::@12/(byte[]) main::f_127#3 )
(byte[]) main::f_i#12 ← phi( main::@12/(byte[]) main::f_i#13 )
(byte) main::i#6 ← phi( main::@12/(byte) main::i#7 )
(byte*) line_cursor#17 ← phi( main::@12/(byte*) line_cursor#18 )
(byte*) char_cursor#34 ← phi( main::@12/(byte*) char_cursor#36 )
@ -2233,8 +2179,6 @@ main::@13: scope:[main] from main::@12
(word) getFAC::return#2 ← (word) getFAC::return#1
to:main::@14
main::@14: scope:[main] from main::@13
(byte[]) main::f_127#14 ← phi( main::@13/(byte[]) main::f_127#15 )
(byte[]) main::f_i#11 ← phi( main::@13/(byte[]) main::f_i#12 )
(byte) main::i#5 ← phi( main::@13/(byte) main::i#6 )
(byte*) line_cursor#15 ← phi( main::@13/(byte*) line_cursor#17 )
(byte*) char_cursor#32 ← phi( main::@13/(byte*) char_cursor#34 )
@ -2244,8 +2188,6 @@ main::@14: scope:[main] from main::@13
call print_word param-assignment
to:main::@15
main::@15: scope:[main] from main::@14
(byte[]) main::f_127#13 ← phi( main::@14/(byte[]) main::f_127#14 )
(byte[]) main::f_i#9 ← phi( main::@14/(byte[]) main::f_i#11 )
(byte) main::i#4 ← phi( main::@14/(byte) main::i#5 )
(byte*) line_cursor#13 ← phi( main::@14/(byte*) line_cursor#15 )
(byte*) char_cursor#25 ← phi( main::@14/(byte*) char_cursor#5 )
@ -2253,8 +2195,6 @@ main::@15: scope:[main] from main::@14
call print_ln param-assignment
to:main::@16
main::@16: scope:[main] from main::@15
(byte[]) main::f_127#11 ← phi( main::@15/(byte[]) main::f_127#13 )
(byte[]) main::f_i#6 ← phi( main::@15/(byte[]) main::f_i#9 )
(byte) main::i#3 ← phi( main::@15/(byte) main::i#4 )
(byte*) char_cursor#26 ← phi( main::@15/(byte*) char_cursor#2 )
(byte*) line_cursor#9 ← phi( main::@15/(byte*) line_cursor#2 )
@ -2416,40 +2356,10 @@ INITIAL SSA SYMBOL TABLE
(label) main::@return
(byte[]) main::f_127
(byte[]) main::f_127#0
(byte[]) main::f_127#1
(byte[]) main::f_127#10
(byte[]) main::f_127#11
(byte[]) main::f_127#12
(byte[]) main::f_127#13
(byte[]) main::f_127#14
(byte[]) main::f_127#15
(byte[]) main::f_127#2
(byte[]) main::f_127#3
(byte[]) main::f_127#4
(byte[]) main::f_127#5
(byte[]) main::f_127#6
(byte[]) main::f_127#7
(byte[]) main::f_127#8
(byte[]) main::f_127#9
(byte*) main::f_2pi
(byte*) main::f_2pi#0
(byte[]) main::f_i
(byte[]) main::f_i#0
(byte[]) main::f_i#1
(byte[]) main::f_i#10
(byte[]) main::f_i#11
(byte[]) main::f_i#12
(byte[]) main::f_i#13
(byte[]) main::f_i#14
(byte[]) main::f_i#15
(byte[]) main::f_i#2
(byte[]) main::f_i#3
(byte[]) main::f_i#4
(byte[]) main::f_i#5
(byte[]) main::f_i#6
(byte[]) main::f_i#7
(byte[]) main::f_i#8
(byte[]) main::f_i#9
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@ -2565,12 +2475,12 @@ Not aliassing across scopes: mulFACbyMEM::mem#2 mulFACbyMEM::mem#1
Not aliassing across scopes: prepareMEM::mem#4 mulFACbyMEM::mem#2
Not aliassing across scopes: char_cursor#47 char_cursor#33
Not aliassing across scopes: line_cursor#29 line_cursor#14
Not aliassing across scopes: setMEMtoFAC::mem#0 main::f_127#1
Not aliassing across scopes: setMEMtoFAC::mem#0 main::f_127#0
Not aliassing across scopes: mulFACbyMEM::mem#0 main::f_2pi#0
Not aliassing across scopes: setMEMtoFAC::mem#1 main::f_i#1
Not aliassing across scopes: divMEMbyFAC::mem#0 main::f_i#2
Not aliassing across scopes: mulFACbyMEM::mem#1 main::f_127#2
Not aliassing across scopes: addMEMtoFAC::mem#0 main::f_127#3
Not aliassing across scopes: setMEMtoFAC::mem#1 main::f_i#0
Not aliassing across scopes: divMEMbyFAC::mem#0 main::f_i#0
Not aliassing across scopes: mulFACbyMEM::mem#1 main::f_127#0
Not aliassing across scopes: addMEMtoFAC::mem#0 main::f_127#0
Not aliassing across scopes: getFAC::return#2 getFAC::return#1
Not aliassing across scopes: main::$12 getFAC::return#4
Not aliassing across scopes: char_cursor#25 char_cursor#5
@ -2591,13 +2501,9 @@ Alias (byte*) char_cursor#21 = (byte*) char_cursor#7 (byte*) char_cursor#22 (byt
Alias (byte*) char_cursor#10 = (byte*) char_cursor#24 (byte*) char_cursor#9
Alias (byte*) prepareMEM::mem#0 = (byte*~) setFAC::$0
Alias (word) getFAC::return#0 = (word) getFAC::w#0 (word) getFAC::return#3 (word) getFAC::return#1
Alias (byte[]) main::f_127#0 = (byte[]) main::f_127#4 (byte[]) main::f_127#1 (byte[]) main::f_127#12
Alias (byte[]) main::f_i#0 = (byte[]) main::f_i#10 (byte[]) main::f_i#8 (byte[]) main::f_i#7
Alias (byte*) char_cursor#44 = (byte*) char_cursor#46 (byte*) char_cursor#47 (byte*) char_cursor#45
Alias (byte*) line_cursor#26 = (byte*) line_cursor#28 (byte*) line_cursor#29 (byte*) line_cursor#27
Alias (word) setFAC::w#1 = (word~) main::$3
Alias (byte[]) main::f_i#1 = (byte[]) main::f_i#3 (byte[]) main::f_i#5 (byte[]) main::f_i#4 (byte[]) main::f_i#2 (byte[]) main::f_i#15 (byte[]) main::f_i#14 (byte[]) main::f_i#13 (byte[]) main::f_i#12 (byte[]) main::f_i#11 (byte[]) main::f_i#9 (byte[]) main::f_i#6
Alias (byte[]) main::f_127#10 = (byte[]) main::f_127#9 (byte[]) main::f_127#8 (byte[]) main::f_127#7 (byte[]) main::f_127#6 (byte[]) main::f_127#5 (byte[]) main::f_127#2 (byte[]) main::f_127#3 (byte[]) main::f_127#15 (byte[]) main::f_127#14 (byte[]) main::f_127#13 (byte[]) main::f_127#11
Alias (byte*) char_cursor#32 = (byte*) char_cursor#42 (byte*) char_cursor#43 (byte*) char_cursor#41 (byte*) char_cursor#40 (byte*) char_cursor#39 (byte*) char_cursor#38 (byte*) char_cursor#37 (byte*) char_cursor#36 (byte*) char_cursor#34
Alias (byte*) line_cursor#13 = (byte*) line_cursor#24 (byte*) line_cursor#25 (byte*) line_cursor#23 (byte*) line_cursor#22 (byte*) line_cursor#21 (byte*) line_cursor#20 (byte*) line_cursor#19 (byte*) line_cursor#18 (byte*) line_cursor#17 (byte*) line_cursor#15
Alias (byte) main::i#10 = (byte) main::i#13 (byte) main::i#2 (byte) main::i#12 (byte) main::i#11 (byte) main::i#9 (byte) main::i#8 (byte) main::i#7 (byte) main::i#6 (byte) main::i#5 (byte) main::i#4 (byte) main::i#3
@ -2785,8 +2691,6 @@ main::@5: scope:[main] from main::@4
main::@1: scope:[main] from main::@16 main::@5
(byte*) line_cursor#13 ← phi( main::@16/(byte*) line_cursor#10 main::@5/(byte*) line_cursor#26 )
(byte*) char_cursor#32 ← phi( main::@16/(byte*) char_cursor#12 main::@5/(byte*) char_cursor#44 )
(byte[]) main::f_127#10 ← phi( main::@16/(byte[]) main::f_127#10 main::@5/(byte[]) main::f_127#0 )
(byte[]) main::f_i#1 ← phi( main::@16/(byte[]) main::f_i#1 main::@5/(byte[]) main::f_i#0 )
(byte) main::i#10 ← phi( main::@16/(byte) main::i#1 main::@5/(byte) main::i#0 )
(word) setFAC::w#1 ← ((word)) (byte) main::i#10
call setFAC param-assignment
@ -2796,7 +2700,7 @@ main::@6: scope:[main] from main::@1
call mulFACbyMEM param-assignment
to:main::@7
main::@7: scope:[main] from main::@6
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#1
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#0
call setMEMtoFAC param-assignment
to:main::@8
main::@8: scope:[main] from main::@7
@ -2804,18 +2708,18 @@ main::@8: scope:[main] from main::@7
call setFAC param-assignment
to:main::@9
main::@9: scope:[main] from main::@8
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#1
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#0
call divMEMbyFAC param-assignment
to:main::@10
main::@10: scope:[main] from main::@9
call sinFAC param-assignment
to:main::@11
main::@11: scope:[main] from main::@10
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#10
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#0
call mulFACbyMEM param-assignment
to:main::@12
main::@12: scope:[main] from main::@11
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#10
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#0
call addMEMtoFAC param-assignment
to:main::@13
main::@13: scope:[main] from main::@12
@ -2874,13 +2778,11 @@ Not aliassing across scopes: prepareMEM::mem#4 mulFACbyMEM::mem#2
Not aliassing across scopes: char_cursor#44 char_cursor#0
Not aliassing across scopes: line_cursor#26 char_cursor#0
Not aliassing across scopes: setMEMtoFAC::mem#0 main::f_127#0
Not aliassing identity: main::f_i#1 main::f_i#1
Not aliassing identity: main::f_127#10 main::f_127#10
Not aliassing across scopes: mulFACbyMEM::mem#0 main::f_2pi#0
Not aliassing across scopes: setMEMtoFAC::mem#1 main::f_i#1
Not aliassing across scopes: divMEMbyFAC::mem#0 main::f_i#1
Not aliassing across scopes: mulFACbyMEM::mem#1 main::f_127#10
Not aliassing across scopes: addMEMtoFAC::mem#0 main::f_127#10
Not aliassing across scopes: setMEMtoFAC::mem#1 main::f_i#0
Not aliassing across scopes: divMEMbyFAC::mem#0 main::f_i#0
Not aliassing across scopes: mulFACbyMEM::mem#1 main::f_127#0
Not aliassing across scopes: addMEMtoFAC::mem#0 main::f_127#0
Not aliassing across scopes: getFAC::return#2 getFAC::return#0
Not aliassing across scopes: print_word::w#0 getFAC::return#2
Not aliassing across scopes: char_cursor#11 char_cursor#18
@ -2889,8 +2791,6 @@ Not aliassing across scopes: char_cursor#12 line_cursor#1
Not aliassing across scopes: char_cursor#14 char_cursor#12
Not aliassing across scopes: line_cursor#11 line_cursor#10
Self Phi Eliminated (byte*) char_cursor#15
Self Phi Eliminated (byte[]) main::f_i#1
Self Phi Eliminated (byte[]) main::f_127#10
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -3068,8 +2968,6 @@ main::@5: scope:[main] from main::@4
main::@1: scope:[main] from main::@16 main::@5
(byte*) line_cursor#13 ← phi( main::@16/(byte*) line_cursor#10 main::@5/(byte*) line_cursor#26 )
(byte*) char_cursor#32 ← phi( main::@16/(byte*) char_cursor#12 main::@5/(byte*) char_cursor#44 )
(byte[]) main::f_127#10 ← phi( main::@5/(byte[]) main::f_127#0 )
(byte[]) main::f_i#1 ← phi( main::@5/(byte[]) main::f_i#0 )
(byte) main::i#10 ← phi( main::@16/(byte) main::i#1 main::@5/(byte) main::i#0 )
(word) setFAC::w#1 ← ((word)) (byte) main::i#10
call setFAC param-assignment
@ -3079,7 +2977,7 @@ main::@6: scope:[main] from main::@1
call mulFACbyMEM param-assignment
to:main::@7
main::@7: scope:[main] from main::@6
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#1
(byte*) setMEMtoFAC::mem#1 ← (byte[]) main::f_i#0
call setMEMtoFAC param-assignment
to:main::@8
main::@8: scope:[main] from main::@7
@ -3087,18 +2985,18 @@ main::@8: scope:[main] from main::@7
call setFAC param-assignment
to:main::@9
main::@9: scope:[main] from main::@8
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#1
(byte*) divMEMbyFAC::mem#0 ← (byte[]) main::f_i#0
call divMEMbyFAC param-assignment
to:main::@10
main::@10: scope:[main] from main::@9
call sinFAC param-assignment
to:main::@11
main::@11: scope:[main] from main::@10
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#10
(byte*) mulFACbyMEM::mem#1 ← (byte[]) main::f_127#0
call mulFACbyMEM param-assignment
to:main::@12
main::@12: scope:[main] from main::@11
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#10
(byte*) addMEMtoFAC::mem#0 ← (byte[]) main::f_127#0
call addMEMtoFAC param-assignment
to:main::@13
main::@13: scope:[main] from main::@12
@ -3145,8 +3043,6 @@ Redundant Phi (byte*) addMEMtoFAC::mem#1 (byte*) addMEMtoFAC::mem#0
Redundant Phi (byte*) divMEMbyFAC::mem#1 (byte*) divMEMbyFAC::mem#0
Redundant Phi (byte*) char_cursor#44 (byte*) char_cursor#0
Redundant Phi (byte*) line_cursor#26 (byte*) char_cursor#0
Redundant Phi (byte[]) main::f_i#1 (byte[]) main::f_i#0
Redundant Phi (byte[]) main::f_127#10 (byte[]) main::f_127#0
Redundant Phi (byte*) char_cursor#11 (byte*) char_cursor#18
Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#12 (byte*) line_cursor#1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff