|
|
|
@ -248,8 +248,6 @@ main: scope:[main] from __start::@1
|
|
|
|
|
print_char_cursor#51 = phi( __start::@1/print_char_cursor#43 )
|
|
|
|
|
root#28 = phi( __start::@1/root#24 )
|
|
|
|
|
free_#30 = phi( __start::@1/free_#26 )
|
|
|
|
|
main::i#0 = 0
|
|
|
|
|
main::c#0 = 0
|
|
|
|
|
call start
|
|
|
|
|
to:main::@5
|
|
|
|
|
main::@5: scope:[main] from main
|
|
|
|
@ -258,12 +256,12 @@ main::@5: scope:[main] from main
|
|
|
|
|
print_char_cursor#50 = phi( main/print_char_cursor#51 )
|
|
|
|
|
root#25 = phi( main/root#28 )
|
|
|
|
|
free_#27 = phi( main/free_#30 )
|
|
|
|
|
main::c#1 = 0
|
|
|
|
|
main::c#0 = 0
|
|
|
|
|
to:main::@1
|
|
|
|
|
main::@1: scope:[main] from main::@5 main::@9
|
|
|
|
|
print_line_cursor#30 = phi( main::@5/print_line_cursor#31, main::@9/print_line_cursor#23 )
|
|
|
|
|
Ticks#24 = phi( main::@5/Ticks#25, main::@9/Ticks#18 )
|
|
|
|
|
main::c#9 = phi( main::@5/main::c#1, main::@9/main::c#2 )
|
|
|
|
|
main::c#8 = phi( main::@5/main::c#0, main::@9/main::c#1 )
|
|
|
|
|
print_char_cursor#49 = phi( main::@5/print_char_cursor#50, main::@9/print_char_cursor#13 )
|
|
|
|
|
root#21 = phi( main::@5/root#25, main::@9/root#26 )
|
|
|
|
|
free_#23 = phi( main::@5/free_#27, main::@9/free_#28 )
|
|
|
|
@ -272,44 +270,44 @@ main::@1: scope:[main] from main::@5 main::@9
|
|
|
|
|
main::@6: scope:[main] from main::@1
|
|
|
|
|
print_line_cursor#29 = phi( main::@1/print_line_cursor#30 )
|
|
|
|
|
Ticks#23 = phi( main::@1/Ticks#24 )
|
|
|
|
|
main::c#8 = phi( main::@1/main::c#9 )
|
|
|
|
|
main::c#7 = phi( main::@1/main::c#8 )
|
|
|
|
|
print_char_cursor#48 = phi( main::@1/print_char_cursor#49 )
|
|
|
|
|
root#14 = phi( main::@1/root#1 )
|
|
|
|
|
free_#17 = phi( main::@1/free_#1 )
|
|
|
|
|
free_#6 = free_#17
|
|
|
|
|
root#4 = root#14
|
|
|
|
|
main::i#1 = 0
|
|
|
|
|
main::i#0 = 0
|
|
|
|
|
to:main::@2
|
|
|
|
|
main::@2: scope:[main] from main::@6 main::@7
|
|
|
|
|
print_line_cursor#28 = phi( main::@6/print_line_cursor#29, main::@7/print_line_cursor#27 )
|
|
|
|
|
Ticks#22 = phi( main::@6/Ticks#23, main::@7/Ticks#21 )
|
|
|
|
|
main::c#7 = phi( main::@6/main::c#8, main::@7/main::c#6 )
|
|
|
|
|
main::c#6 = phi( main::@6/main::c#7, main::@7/main::c#5 )
|
|
|
|
|
print_char_cursor#47 = phi( main::@6/print_char_cursor#48, main::@7/print_char_cursor#46 )
|
|
|
|
|
root#22 = phi( main::@6/root#4, main::@7/root#5 )
|
|
|
|
|
free_#24 = phi( main::@6/free_#6, main::@7/free_#7 )
|
|
|
|
|
main::i#3 = phi( main::@6/main::i#1, main::@7/main::i#2 )
|
|
|
|
|
prepend::x#0 = main::i#3
|
|
|
|
|
main::i#2 = phi( main::@6/main::i#0, main::@7/main::i#1 )
|
|
|
|
|
prepend::x#0 = main::i#2
|
|
|
|
|
call prepend
|
|
|
|
|
to:main::@7
|
|
|
|
|
main::@7: scope:[main] from main::@2
|
|
|
|
|
print_line_cursor#27 = phi( main::@2/print_line_cursor#28 )
|
|
|
|
|
Ticks#21 = phi( main::@2/Ticks#22 )
|
|
|
|
|
main::c#6 = phi( main::@2/main::c#7 )
|
|
|
|
|
main::c#5 = phi( main::@2/main::c#6 )
|
|
|
|
|
print_char_cursor#46 = phi( main::@2/print_char_cursor#47 )
|
|
|
|
|
main::i#4 = phi( main::@2/main::i#3 )
|
|
|
|
|
main::i#3 = phi( main::@2/main::i#2 )
|
|
|
|
|
root#15 = phi( main::@2/root#3 )
|
|
|
|
|
free_#18 = phi( main::@2/free_#5 )
|
|
|
|
|
free_#7 = free_#18
|
|
|
|
|
root#5 = root#15
|
|
|
|
|
main::i#2 = main::i#4 + rangenext(0,$bb7)
|
|
|
|
|
main::$4 = main::i#2 != rangelast(0,$bb7)
|
|
|
|
|
main::i#1 = main::i#3 + rangenext(0,$bb7)
|
|
|
|
|
main::$4 = main::i#1 != rangelast(0,$bb7)
|
|
|
|
|
if(main::$4) goto main::@2
|
|
|
|
|
to:main::@3
|
|
|
|
|
main::@3: scope:[main] from main::@7
|
|
|
|
|
print_line_cursor#26 = phi( main::@7/print_line_cursor#27 )
|
|
|
|
|
Ticks#20 = phi( main::@7/Ticks#21 )
|
|
|
|
|
free_#32 = phi( main::@7/free_#7 )
|
|
|
|
|
main::c#5 = phi( main::@7/main::c#6 )
|
|
|
|
|
main::c#4 = phi( main::@7/main::c#5 )
|
|
|
|
|
print_char_cursor#45 = phi( main::@7/print_char_cursor#46 )
|
|
|
|
|
root#20 = phi( main::@7/root#5 )
|
|
|
|
|
call sum
|
|
|
|
@ -320,7 +318,7 @@ main::@8: scope:[main] from main::@3
|
|
|
|
|
Ticks#19 = phi( main::@3/Ticks#20 )
|
|
|
|
|
root#29 = phi( main::@3/root#20 )
|
|
|
|
|
free_#31 = phi( main::@3/free_#32 )
|
|
|
|
|
main::c#4 = phi( main::@3/main::c#5 )
|
|
|
|
|
main::c#3 = phi( main::@3/main::c#4 )
|
|
|
|
|
print_char_cursor#40 = phi( main::@3/print_char_cursor#45 )
|
|
|
|
|
sum::return#4 = phi( main::@3/sum::return#2 )
|
|
|
|
|
main::$5 = sum::return#4
|
|
|
|
@ -332,11 +330,11 @@ main::@9: scope:[main] from main::@8
|
|
|
|
|
Ticks#18 = phi( main::@8/Ticks#19 )
|
|
|
|
|
root#26 = phi( main::@8/root#29 )
|
|
|
|
|
free_#28 = phi( main::@8/free_#31 )
|
|
|
|
|
main::c#3 = phi( main::@8/main::c#4 )
|
|
|
|
|
main::c#2 = phi( main::@8/main::c#3 )
|
|
|
|
|
print_char_cursor#32 = phi( main::@8/print_char_cursor#9 )
|
|
|
|
|
print_char_cursor#13 = print_char_cursor#32
|
|
|
|
|
main::c#2 = main::c#3 + rangenext(0,4)
|
|
|
|
|
main::$7 = main::c#2 != rangelast(0,4)
|
|
|
|
|
main::c#1 = main::c#2 + rangenext(0,4)
|
|
|
|
|
main::$7 = main::c#1 != rangelast(0,4)
|
|
|
|
|
if(main::$7) goto main::@1
|
|
|
|
|
to:main::@4
|
|
|
|
|
main::@4: scope:[main] from main::@9
|
|
|
|
@ -522,13 +520,11 @@ byte main::c#5
|
|
|
|
|
byte main::c#6
|
|
|
|
|
byte main::c#7
|
|
|
|
|
byte main::c#8
|
|
|
|
|
byte main::c#9
|
|
|
|
|
word main::i
|
|
|
|
|
word main::i#0
|
|
|
|
|
word main::i#1
|
|
|
|
|
word main::i#2
|
|
|
|
|
word main::i#3
|
|
|
|
|
word main::i#4
|
|
|
|
|
void prepend(word prepend::x)
|
|
|
|
|
struct node*~ prepend::$0
|
|
|
|
|
struct node**~ prepend::$1
|
|
|
|
@ -725,14 +721,10 @@ Adding number conversion cast (unumber) $f in print_uchar::$2 = print_uchar::b#3
|
|
|
|
|
Adding number conversion cast (unumber) print_uchar::$2 in print_uchar::$2 = print_uchar::b#3 & (unumber)$f
|
|
|
|
|
Adding number conversion cast (unumber) 0 in free_#0 = 0
|
|
|
|
|
Adding number conversion cast (unumber) 0 in sum::s#1 = 0
|
|
|
|
|
Adding number conversion cast (unumber) 0 in main::c#1 = 0
|
|
|
|
|
Adding number conversion cast (unumber) 0 in main::i#1 = 0
|
|
|
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
|
|
|
Inlining cast free_#0 = (unumber)0
|
|
|
|
|
Inlining cast root#0 = (struct node*)0
|
|
|
|
|
Inlining cast sum::s#1 = (unumber)0
|
|
|
|
|
Inlining cast main::c#1 = (unumber)0
|
|
|
|
|
Inlining cast main::i#1 = (unumber)0
|
|
|
|
|
Successful SSA optimization Pass2InlineCast
|
|
|
|
|
Simplifying constant integer cast $28
|
|
|
|
|
Simplifying constant integer cast 4
|
|
|
|
@ -740,8 +732,6 @@ Simplifying constant integer cast $f
|
|
|
|
|
Simplifying constant integer cast 0
|
|
|
|
|
Simplifying constant pointer cast (struct node*) 0
|
|
|
|
|
Simplifying constant integer cast 0
|
|
|
|
|
Simplifying constant integer cast 0
|
|
|
|
|
Simplifying constant integer cast 0
|
|
|
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
|
|
|
Successful SSA optimization PassNCastSimplification
|
|
|
|
|
Finalized unsigned number type (byte) $28
|
|
|
|
@ -749,8 +739,6 @@ Finalized unsigned number type (byte) 4
|
|
|
|
|
Finalized unsigned number type (byte) $f
|
|
|
|
|
Finalized unsigned number type (byte) 0
|
|
|
|
|
Finalized unsigned number type (byte) 0
|
|
|
|
|
Finalized unsigned number type (byte) 0
|
|
|
|
|
Finalized unsigned number type (byte) 0
|
|
|
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
|
|
|
Inferred type updated to byte in print_uchar::$2 = print_uchar::b#3 & $f
|
|
|
|
|
Alias print_line_cursor#0 = print_ln::$0 print_line_cursor#10 print_char_cursor#0 print_line_cursor#11 print_char_cursor#20 print_line_cursor#1 print_char_cursor#1
|
|
|
|
@ -788,14 +776,14 @@ Alias print_char_cursor#50 = print_char_cursor#51
|
|
|
|
|
Alias Ticks#25 = Ticks#26
|
|
|
|
|
Alias print_line_cursor#31 = print_line_cursor#32
|
|
|
|
|
Alias print_char_cursor#48 = print_char_cursor#49
|
|
|
|
|
Alias main::c#8 = main::c#9
|
|
|
|
|
Alias main::c#7 = main::c#8
|
|
|
|
|
Alias Ticks#23 = Ticks#24
|
|
|
|
|
Alias print_line_cursor#29 = print_line_cursor#30
|
|
|
|
|
Alias free_#17 = free_#6
|
|
|
|
|
Alias root#14 = root#4
|
|
|
|
|
Alias main::i#3 = main::i#4
|
|
|
|
|
Alias main::i#2 = main::i#3
|
|
|
|
|
Alias print_char_cursor#40 = print_char_cursor#46 print_char_cursor#47 print_char_cursor#45
|
|
|
|
|
Alias main::c#3 = main::c#6 main::c#7 main::c#5 main::c#4
|
|
|
|
|
Alias main::c#2 = main::c#5 main::c#6 main::c#4 main::c#3
|
|
|
|
|
Alias Ticks#15 = Ticks#21 Ticks#22 Ticks#20 Ticks#19 Ticks#18
|
|
|
|
|
Alias print_line_cursor#20 = print_line_cursor#27 print_line_cursor#28 print_line_cursor#26 print_line_cursor#25 print_line_cursor#23
|
|
|
|
|
Alias free_#18 = free_#7 free_#32 free_#31 free_#28 free_#29 free_#25 free_#19 free_#8
|
|
|
|
@ -843,7 +831,7 @@ Identical Phi Values print_line_cursor#31 print_screen#0
|
|
|
|
|
Identical Phi Values free_#17 free_#0
|
|
|
|
|
Identical Phi Values root#14 root#0
|
|
|
|
|
Identical Phi Values print_char_cursor#40 print_char_cursor#48
|
|
|
|
|
Identical Phi Values main::c#3 main::c#8
|
|
|
|
|
Identical Phi Values main::c#2 main::c#7
|
|
|
|
|
Identical Phi Values Ticks#15 Ticks#23
|
|
|
|
|
Identical Phi Values print_line_cursor#20 print_line_cursor#29
|
|
|
|
|
Identical Phi Values free_#18 free_#15
|
|
|
|
@ -864,8 +852,8 @@ Identical Phi Values print_line_cursor#29 print_screen#0
|
|
|
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
|
|
|
Simple Condition print_ln::$1 [4] if(print_line_cursor#0<print_char_cursor#28) goto print_ln::@1
|
|
|
|
|
Simple Condition sum::$4 [71] if((struct node*)0!=sum::current#3) goto sum::@2
|
|
|
|
|
Simple Condition main::$4 [94] if(main::i#2!=rangelast(0,$bb7)) goto main::@2
|
|
|
|
|
Simple Condition main::$7 [103] if(main::c#2!=rangelast(0,4)) goto main::@1
|
|
|
|
|
Simple Condition main::$4 [92] if(main::i#1!=rangelast(0,$bb7)) goto main::@2
|
|
|
|
|
Simple Condition main::$7 [101] if(main::c#1!=rangelast(0,4)) goto main::@1
|
|
|
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
|
|
|
Constant free_#0 = 0
|
|
|
|
|
Constant root#0 = (struct node*) 0
|
|
|
|
@ -874,19 +862,17 @@ Constant prepend::new#0 = (struct node*) 0
|
|
|
|
|
Constant sum::current#0 = (struct node*) 0
|
|
|
|
|
Constant sum::s#0 = 0
|
|
|
|
|
Constant sum::s#1 = 0
|
|
|
|
|
Constant main::i#0 = 0
|
|
|
|
|
Constant main::c#0 = 0
|
|
|
|
|
Constant main::c#1 = 0
|
|
|
|
|
Constant main::i#1 = 0
|
|
|
|
|
Constant main::i#0 = 0
|
|
|
|
|
Constant print_screen#0 = (byte*) 1024
|
|
|
|
|
Constant Ticks#16 = 0
|
|
|
|
|
Constant free_#26 = 0
|
|
|
|
|
Constant root#24 = (struct node*) 0
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Resolved ranged next value [92] main::i#2 = ++ main::i#3 to ++
|
|
|
|
|
Resolved ranged comparison value [94] if(main::i#2!=rangelast(0,$bb7)) goto main::@2 to $bb8
|
|
|
|
|
Resolved ranged next value [101] main::c#2 = ++ main::c#8 to ++
|
|
|
|
|
Resolved ranged comparison value [103] if(main::c#2!=rangelast(0,4)) goto main::@1 to 5
|
|
|
|
|
Resolved ranged next value [90] main::i#1 = ++ main::i#2 to ++
|
|
|
|
|
Resolved ranged comparison value [92] if(main::i#1!=rangelast(0,$bb7)) goto main::@2 to $bb8
|
|
|
|
|
Resolved ranged next value [99] main::c#1 = ++ main::c#7 to ++
|
|
|
|
|
Resolved ranged comparison value [101] if(main::c#1!=rangelast(0,4)) goto main::@1 to 5
|
|
|
|
|
Converting *(pointer+n) to pointer[n] [58] *prepend::$1 = root#22 -- prepend::$3[OFFSET_STRUCT_NODE_NEXT]
|
|
|
|
|
Converting *(pointer+n) to pointer[n] [61] *prepend::$2 = prepend::x#0 -- prepend::$4[OFFSET_STRUCT_NODE_VALUE]
|
|
|
|
|
Converting *(pointer+n) to pointer[n] [74] sum::s#2 = sum::s#3 + *sum::$0 -- sum::$2[OFFSET_STRUCT_NODE_VALUE]
|
|
|
|
@ -907,8 +893,6 @@ Eliminating unused constant alloc::result#0
|
|
|
|
|
Eliminating unused constant prepend::new#0
|
|
|
|
|
Eliminating unused constant sum::current#0
|
|
|
|
|
Eliminating unused constant sum::s#0
|
|
|
|
|
Eliminating unused constant main::i#0
|
|
|
|
|
Eliminating unused constant main::c#0
|
|
|
|
|
Eliminating unused constant OFFSET_STRUCT_NODE_NEXT
|
|
|
|
|
Eliminating unused constant Ticks#16
|
|
|
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
|
|
@ -920,8 +904,8 @@ Removing unused procedure init
|
|
|
|
|
Removing unused procedure block init
|
|
|
|
|
Removing unused procedure block init::@return
|
|
|
|
|
Successful SSA optimization PassNEliminateEmptyProcedure
|
|
|
|
|
Adding number conversion cast (unumber) $bb8 in [60] if(main::i#2!=$bb8) goto main::@2
|
|
|
|
|
Adding number conversion cast (unumber) 5 in [67] if(main::c#2!=5) goto main::@1
|
|
|
|
|
Adding number conversion cast (unumber) $bb8 in [60] if(main::i#1!=$bb8) goto main::@2
|
|
|
|
|
Adding number conversion cast (unumber) 5 in [67] if(main::c#1!=5) goto main::@1
|
|
|
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
|
|
|
Simplifying constant integer cast $bb8
|
|
|
|
|
Simplifying constant integer cast 5
|
|
|
|
@ -937,14 +921,14 @@ Successful SSA optimization Pass2NopCastInlining
|
|
|
|
|
Rewriting multiplication to use shift [31] alloc::$1 = free_#24 * SIZEOF_STRUCT_NODE
|
|
|
|
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
|
|
|
|
Inlining constant with var siblings sum::s#1
|
|
|
|
|
Inlining constant with var siblings main::c#1
|
|
|
|
|
Inlining constant with var siblings main::i#1
|
|
|
|
|
Inlining constant with var siblings main::c#0
|
|
|
|
|
Inlining constant with var siblings main::i#0
|
|
|
|
|
Inlining constant with var siblings free_#0
|
|
|
|
|
Inlining constant with var siblings root#0
|
|
|
|
|
Constant inlined main::i#0 = 0
|
|
|
|
|
Constant inlined main::c#0 = 0
|
|
|
|
|
Constant inlined free_#0 = 0
|
|
|
|
|
Constant inlined sum::s#1 = 0
|
|
|
|
|
Constant inlined main::i#1 = 0
|
|
|
|
|
Constant inlined main::c#1 = 0
|
|
|
|
|
Constant inlined root#0 = (struct node*) 0
|
|
|
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
|
|
|
Eliminating unused constant SIZEOF_STRUCT_NODE
|
|
|
|
@ -988,8 +972,8 @@ Created 11 initial phi equivalence classes
|
|
|
|
|
Coalesced [21] print_char::ch#4 = print_char::ch#2
|
|
|
|
|
Coalesced [22] print_char_cursor#52 = print_char_cursor#48
|
|
|
|
|
Coalesced [30] print_char_cursor#55 = print_char_cursor#28
|
|
|
|
|
Coalesced [31] main::c#10 = main::c#2
|
|
|
|
|
Coalesced [32] main::i#5 = main::i#2
|
|
|
|
|
Coalesced [31] main::c#9 = main::c#1
|
|
|
|
|
Coalesced [32] main::i#4 = main::i#1
|
|
|
|
|
Coalesced [33] free_#33 = free_#14
|
|
|
|
|
Coalesced [34] root#30 = root#12
|
|
|
|
|
Not coalescing [43] root#12 = prepend::new#1
|
|
|
|
@ -1051,19 +1035,19 @@ main: scope:[main] from __start::@1
|
|
|
|
|
[6] call start
|
|
|
|
|
to:main::@1
|
|
|
|
|
main::@1: scope:[main] from main main::@7
|
|
|
|
|
[7] main::c#8 = phi( main/0, main::@7/main::c#2 )
|
|
|
|
|
[7] main::c#7 = phi( main/0, main::@7/main::c#1 )
|
|
|
|
|
[7] print_char_cursor#48 = phi( main/print_screen#0, main::@7/print_char_cursor#28 )
|
|
|
|
|
to:main::@2
|
|
|
|
|
main::@2: scope:[main] from main::@1 main::@5
|
|
|
|
|
[8] root#22 = phi( main::@1/(struct node*) 0, main::@5/root#12 )
|
|
|
|
|
[8] free_#24 = phi( main::@1/0, main::@5/free_#14 )
|
|
|
|
|
[8] main::i#3 = phi( main::@1/0, main::@5/main::i#2 )
|
|
|
|
|
[9] prepend::x#0 = main::i#3
|
|
|
|
|
[8] main::i#2 = phi( main::@1/0, main::@5/main::i#1 )
|
|
|
|
|
[9] prepend::x#0 = main::i#2
|
|
|
|
|
[10] call prepend
|
|
|
|
|
to:main::@5
|
|
|
|
|
main::@5: scope:[main] from main::@2
|
|
|
|
|
[11] main::i#2 = ++ main::i#3
|
|
|
|
|
[12] if(main::i#2!=$bb8) goto main::@2
|
|
|
|
|
[11] main::i#1 = ++ main::i#2
|
|
|
|
|
[12] if(main::i#1!=$bb8) goto main::@2
|
|
|
|
|
to:main::@3
|
|
|
|
|
main::@3: scope:[main] from main::@5
|
|
|
|
|
[13] phi()
|
|
|
|
@ -1076,8 +1060,8 @@ main::@6: scope:[main] from main::@3
|
|
|
|
|
[18] call print_char
|
|
|
|
|
to:main::@7
|
|
|
|
|
main::@7: scope:[main] from main::@6
|
|
|
|
|
[19] main::c#2 = ++ main::c#8
|
|
|
|
|
[20] if(main::c#2!=5) goto main::@1
|
|
|
|
|
[19] main::c#1 = ++ main::c#7
|
|
|
|
|
[20] if(main::c#1!=5) goto main::@1
|
|
|
|
|
to:main::@4
|
|
|
|
|
main::@4: scope:[main] from main::@7
|
|
|
|
|
[21] phi()
|
|
|
|
@ -1230,11 +1214,11 @@ volatile word last_time loadstore 18.454545454545453
|
|
|
|
|
void main()
|
|
|
|
|
word~ main::$5 101.0
|
|
|
|
|
byte main::c
|
|
|
|
|
byte main::c#2 151.5
|
|
|
|
|
byte main::c#8 16.833333333333332
|
|
|
|
|
byte main::c#1 151.5
|
|
|
|
|
byte main::c#7 16.833333333333332
|
|
|
|
|
word main::i
|
|
|
|
|
word main::i#2 1501.5
|
|
|
|
|
word main::i#3 1001.0
|
|
|
|
|
word main::i#1 1501.5
|
|
|
|
|
word main::i#2 1001.0
|
|
|
|
|
void prepend(word prepend::x)
|
|
|
|
|
struct node* prepend::new
|
|
|
|
|
struct node* prepend::new#1 6667.333333333333
|
|
|
|
@ -1281,8 +1265,8 @@ word sum::s#2 100001.0
|
|
|
|
|
word sum::s#3 50025.75
|
|
|
|
|
|
|
|
|
|
Initial phi equivalence classes
|
|
|
|
|
[ main::c#8 main::c#2 ]
|
|
|
|
|
[ main::i#3 main::i#2 ]
|
|
|
|
|
[ main::c#7 main::c#1 ]
|
|
|
|
|
[ main::i#2 main::i#1 ]
|
|
|
|
|
[ free_#24 free_#14 ]
|
|
|
|
|
[ root#22 root#12 ]
|
|
|
|
|
[ sum::current#3 sum::current#1 sum::current#2 ]
|
|
|
|
@ -1305,8 +1289,8 @@ Added variable alloc::return#0 to live range equivalence class [ alloc::return#0
|
|
|
|
|
Added variable print_uchar::$0 to live range equivalence class [ print_uchar::$0 ]
|
|
|
|
|
Added variable print_uchar::$2 to live range equivalence class [ print_uchar::$2 ]
|
|
|
|
|
Complete equivalence classes
|
|
|
|
|
[ main::c#8 main::c#2 ]
|
|
|
|
|
[ main::i#3 main::i#2 ]
|
|
|
|
|
[ main::c#7 main::c#1 ]
|
|
|
|
|
[ main::i#2 main::i#1 ]
|
|
|
|
|
[ free_#24 free_#14 ]
|
|
|
|
|
[ root#22 root#12 ]
|
|
|
|
|
[ sum::current#3 sum::current#1 sum::current#2 ]
|
|
|
|
@ -1328,8 +1312,8 @@ Complete equivalence classes
|
|
|
|
|
[ alloc::return#0 ]
|
|
|
|
|
[ print_uchar::$0 ]
|
|
|
|
|
[ print_uchar::$2 ]
|
|
|
|
|
Allocated zp[1]:2 [ main::c#8 main::c#2 ]
|
|
|
|
|
Allocated zp[2]:3 [ main::i#3 main::i#2 ]
|
|
|
|
|
Allocated zp[1]:2 [ main::c#7 main::c#1 ]
|
|
|
|
|
Allocated zp[2]:3 [ main::i#2 main::i#1 ]
|
|
|
|
|
Allocated zp[2]:5 [ free_#24 free_#14 ]
|
|
|
|
|
Allocated zp[2]:7 [ root#22 root#12 ]
|
|
|
|
|
Allocated zp[2]:9 [ sum::current#3 sum::current#1 sum::current#2 ]
|
|
|
|
@ -1353,65 +1337,65 @@ Allocated zp[1]:41 [ print_uchar::$0 ]
|
|
|
|
|
Allocated zp[1]:42 [ print_uchar::$2 ]
|
|
|
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
|
|
|
Statement [1] last_time = 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [9] prepend::x#0 = main::i#3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#24 root#22 prepend::x#0 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#24 root#22 prepend::x#0 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a
|
|
|
|
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#8 main::c#2 ]
|
|
|
|
|
Statement [12] if(main::i#2!=$bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#14 root#12 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#14 root#12 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [15] sum::return#2 = sum::s#3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [16] main::$5 = sum::return#2 [ last_time print_char_cursor#48 main::c#8 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::$5 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [17] print_char::ch#2 = (byte)main::$5 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [9] prepend::x#0 = main::i#2 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#24 root#22 prepend::x#0 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#24 root#22 prepend::x#0 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a
|
|
|
|
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#7 main::c#1 ]
|
|
|
|
|
Statement [12] if(main::i#1!=$bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#7 main::i#1 free_#14 root#12 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 main::i#1 free_#14 root#12 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [15] sum::return#2 = sum::s#3 [ last_time print_char_cursor#48 main::c#7 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [16] main::$5 = sum::return#2 [ last_time print_char_cursor#48 main::c#7 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 main::$5 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [17] print_char::ch#2 = (byte)main::$5 [ last_time print_char_cursor#48 main::c#7 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 print_char::ch#2 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y
|
|
|
|
|
Statement [28] alloc::return#2 = alloc::return#0 [ root#22 free_#14 prepend::x#0 alloc::return#2 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 free_#14 prepend::x#0 alloc::return#2 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [29] prepend::new#1 = alloc::return#2 [ root#22 free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [30] *((struct node**)prepend::new#1) = root#22 [ free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::c#8 main::c#2 ]
|
|
|
|
|
Statement [31] ((word*)prepend::new#1)[OFFSET_STRUCT_NODE_VALUE] = prepend::x#0 [ free_#14 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#14 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [32] root#12 = prepend::new#1 [ free_#14 root#12 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#14 root#12 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [34] sum::current#1 = root#12 [ sum::current#1 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::current#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [36] if((struct node*)0!=sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::s#3 sum::current#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [38] sum::s#2 = sum::s#3 + ((word*)sum::current#3)[OFFSET_STRUCT_NODE_VALUE] [ sum::current#3 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::current#3 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [39] sum::current#2 = *((struct node**)sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::current#2 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [41] *print_char_cursor#27 = print_char::ch#3 [ print_char_cursor#27 ] ( main:3::print_char:18 [ last_time main::c#8 print_char_cursor#27 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:70 [ print_uint::w#0 print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:70 [ print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:73 [ print_uint::w#0 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:73 [ print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte y
|
|
|
|
|
Statement [28] alloc::return#2 = alloc::return#0 [ root#22 free_#14 prepend::x#0 alloc::return#2 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 free_#14 prepend::x#0 alloc::return#2 ] { { prepend::x#0 = main::i#2 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [29] prepend::new#1 = alloc::return#2 [ root#22 free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [30] *((struct node**)prepend::new#1) = root#22 [ free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::c#7 main::c#1 ]
|
|
|
|
|
Statement [31] ((word*)prepend::new#1)[OFFSET_STRUCT_NODE_VALUE] = prepend::x#0 [ free_#14 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#14 prepend::new#1 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [32] root#12 = prepend::new#1 [ free_#14 root#12 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#14 root#12 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [34] sum::current#1 = root#12 [ sum::current#1 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::current#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [36] if((struct node*)0!=sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::s#3 sum::current#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [38] sum::s#2 = sum::s#3 + ((word*)sum::current#3)[OFFSET_STRUCT_NODE_VALUE] [ sum::current#3 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::current#3 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [39] sum::current#2 = *((struct node**)sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::current#2 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [41] *print_char_cursor#27 = print_char::ch#3 [ print_char_cursor#27 ] ( main:3::print_char:18 [ last_time main::c#7 print_char_cursor#27 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:70 [ print_uint::w#0 print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:70 [ print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:73 [ print_uint::w#0 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:73 [ print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte y
|
|
|
|
|
Removing always clobbered register reg byte y as potential for zp[1]:18 [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
|
|
|
Statement [44] Ticks#0 = last_time [ last_time print_char_cursor#28 Ticks#0 ] ( main:3::end:22 [ last_time print_char_cursor#28 Ticks#0 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [46] last_time = last_time - Ticks#0 [ last_time print_char_cursor#28 ] ( main:3::end:22 [ last_time print_char_cursor#28 ] { { Ticks#1 = print_uint::w#0 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [47] Ticks#1 = last_time [ print_char_cursor#28 Ticks#1 ] ( main:3::end:22 [ print_char_cursor#28 Ticks#1 ] { { Ticks#1 = print_uint::w#0 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [48] print_uint::w#0 = Ticks#1 [ print_char_cursor#28 print_uint::w#0 ] ( main:3::end:22 [ print_char_cursor#28 print_uint::w#0 ] { { Ticks#1 = print_uint::w#0 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [53] alloc::$1 = free_#24 << 2 [ free_#24 alloc::$1 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 prepend::x#0 free_#24 alloc::$1 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [54] alloc::return#0 = heap + alloc::$1 [ free_#24 alloc::return#0 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 prepend::x#0 free_#24 alloc::return#0 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [53] alloc::$1 = free_#24 << 2 [ free_#24 alloc::$1 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 prepend::x#0 free_#24 alloc::$1 ] { { prepend::x#0 = main::i#2 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [54] alloc::return#0 = heap + alloc::$1 [ free_#24 alloc::return#0 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 prepend::x#0 free_#24 alloc::return#0 ] { { prepend::x#0 = main::i#2 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [64] print_line_cursor#0 = print_line_cursor#9 + $28 [ print_char_cursor#28 print_line_cursor#0 ] ( main:3::end:22::print_ln:51 [ print_char_cursor#28 print_line_cursor#0 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [65] if(print_line_cursor#0<print_char_cursor#28) goto print_ln::@1 [ print_char_cursor#28 print_line_cursor#0 ] ( main:3::end:22::print_ln:51 [ print_char_cursor#28 print_line_cursor#0 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [68] print_uchar::$0 = print_uchar::b#2 >> 4 [ print_char_cursor#28 print_uchar::b#2 print_uchar::$0 ] ( main:3::end:22::print_uint:49::print_uchar:58 [ print_uint::w#0 print_char_cursor#28 print_uchar::b#2 print_uchar::$0 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60 [ print_char_cursor#28 print_uchar::b#2 print_uchar::$0 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte a
|
|
|
|
|
Removing always clobbered register reg byte a as potential for zp[1]:18 [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
|
|
|
Statement [71] print_uchar::$2 = print_uchar::b#2 & $f [ print_char_cursor#28 print_uchar::$2 ] ( main:3::end:22::print_uint:49::print_uchar:58 [ print_uint::w#0 print_char_cursor#28 print_uchar::$2 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60 [ print_char_cursor#28 print_uchar::$2 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [1] last_time = 0 [ last_time ] ( [ last_time ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [9] prepend::x#0 = main::i#3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#24 root#22 prepend::x#0 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#24 root#22 prepend::x#0 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [12] if(main::i#2!=$bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#14 root#12 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::i#2 free_#14 root#12 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [15] sum::return#2 = sum::s#3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [16] main::$5 = sum::return#2 [ last_time print_char_cursor#48 main::c#8 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 main::$5 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [17] print_char::ch#2 = (byte)main::$5 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#8 print_char::ch#2 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [9] prepend::x#0 = main::i#2 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#24 root#22 prepend::x#0 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#24 root#22 prepend::x#0 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [12] if(main::i#1!=$bb8) goto main::@2 [ last_time print_char_cursor#48 main::c#7 main::i#1 free_#14 root#12 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 main::i#1 free_#14 root#12 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [15] sum::return#2 = sum::s#3 [ last_time print_char_cursor#48 main::c#7 sum::return#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 sum::return#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [16] main::$5 = sum::return#2 [ last_time print_char_cursor#48 main::c#7 main::$5 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 main::$5 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [17] print_char::ch#2 = (byte)main::$5 [ last_time print_char_cursor#48 main::c#7 print_char::ch#2 ] ( main:3 [ last_time print_char_cursor#48 main::c#7 print_char::ch#2 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } ) always clobbers reg byte a
|
|
|
|
|
Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y
|
|
|
|
|
Statement [28] alloc::return#2 = alloc::return#0 [ root#22 free_#14 prepend::x#0 alloc::return#2 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 free_#14 prepend::x#0 alloc::return#2 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [29] prepend::new#1 = alloc::return#2 [ root#22 free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [30] *((struct node**)prepend::new#1) = root#22 [ free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [31] ((word*)prepend::new#1)[OFFSET_STRUCT_NODE_VALUE] = prepend::x#0 [ free_#14 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#14 prepend::new#1 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [32] root#12 = prepend::new#1 [ free_#14 root#12 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#8 main::i#3 free_#14 root#12 ] { { prepend::x#0 = main::i#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [34] sum::current#1 = root#12 [ sum::current#1 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::current#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [36] if((struct node*)0!=sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::s#3 sum::current#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [38] sum::s#2 = sum::s#3 + ((word*)sum::current#3)[OFFSET_STRUCT_NODE_VALUE] [ sum::current#3 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::current#3 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [39] sum::current#2 = *((struct node**)sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#8 sum::current#2 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [41] *print_char_cursor#27 = print_char::ch#3 [ print_char_cursor#27 ] ( main:3::print_char:18 [ last_time main::c#8 print_char_cursor#27 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:70 [ print_uint::w#0 print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:70 [ print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:73 [ print_uint::w#0 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:73 [ print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte y
|
|
|
|
|
Statement [28] alloc::return#2 = alloc::return#0 [ root#22 free_#14 prepend::x#0 alloc::return#2 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 free_#14 prepend::x#0 alloc::return#2 ] { { prepend::x#0 = main::i#2 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [29] prepend::new#1 = alloc::return#2 [ root#22 free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [30] *((struct node**)prepend::new#1) = root#22 [ free_#14 prepend::x#0 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#14 prepend::x#0 prepend::new#1 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [31] ((word*)prepend::new#1)[OFFSET_STRUCT_NODE_VALUE] = prepend::x#0 [ free_#14 prepend::new#1 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#14 prepend::new#1 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [32] root#12 = prepend::new#1 [ free_#14 root#12 ] ( main:3::prepend:10 [ last_time print_char_cursor#48 main::c#7 main::i#2 free_#14 root#12 ] { { prepend::x#0 = main::i#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [34] sum::current#1 = root#12 [ sum::current#1 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::current#1 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [36] if((struct node*)0!=sum::current#3) goto sum::@2 [ sum::s#3 sum::current#3 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::s#3 sum::current#3 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [38] sum::s#2 = sum::s#3 + ((word*)sum::current#3)[OFFSET_STRUCT_NODE_VALUE] [ sum::current#3 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::current#3 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [39] sum::current#2 = *((struct node**)sum::current#3) [ sum::current#2 sum::s#2 ] ( main:3::sum:14 [ last_time print_char_cursor#48 main::c#7 sum::current#2 sum::s#2 ] { { sum::return#2 = sum::s#3 } } ) always clobbers reg byte a reg byte y
|
|
|
|
|
Statement [41] *print_char_cursor#27 = print_char::ch#3 [ print_char_cursor#27 ] ( main:3::print_char:18 [ last_time main::c#7 print_char_cursor#27 ] { { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#48 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:70 [ print_uint::w#0 print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:70 [ print_uchar::b#2 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:58::print_char:73 [ print_uint::w#0 print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60::print_char:73 [ print_char_cursor#27 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte y
|
|
|
|
|
Statement [44] Ticks#0 = last_time [ last_time print_char_cursor#28 Ticks#0 ] ( main:3::end:22 [ last_time print_char_cursor#28 Ticks#0 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [46] last_time = last_time - Ticks#0 [ last_time print_char_cursor#28 ] ( main:3::end:22 [ last_time print_char_cursor#28 ] { { Ticks#1 = print_uint::w#0 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [47] Ticks#1 = last_time [ print_char_cursor#28 Ticks#1 ] ( main:3::end:22 [ print_char_cursor#28 Ticks#1 ] { { Ticks#1 = print_uint::w#0 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [48] print_uint::w#0 = Ticks#1 [ print_char_cursor#28 print_uint::w#0 ] ( main:3::end:22 [ print_char_cursor#28 print_uint::w#0 ] { { Ticks#1 = print_uint::w#0 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [53] alloc::$1 = free_#24 << 2 [ free_#24 alloc::$1 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 prepend::x#0 free_#24 alloc::$1 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [54] alloc::return#0 = heap + alloc::$1 [ free_#24 alloc::return#0 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#8 main::i#3 root#22 prepend::x#0 free_#24 alloc::return#0 ] { { prepend::x#0 = main::i#3 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [53] alloc::$1 = free_#24 << 2 [ free_#24 alloc::$1 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 prepend::x#0 free_#24 alloc::$1 ] { { prepend::x#0 = main::i#2 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [54] alloc::return#0 = heap + alloc::$1 [ free_#24 alloc::return#0 ] ( main:3::prepend:10::alloc:27 [ last_time print_char_cursor#48 main::c#7 main::i#2 root#22 prepend::x#0 free_#24 alloc::return#0 ] { { prepend::x#0 = main::i#2 } { alloc::return#0 = alloc::return#2 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [64] print_line_cursor#0 = print_line_cursor#9 + $28 [ print_char_cursor#28 print_line_cursor#0 ] ( main:3::end:22::print_ln:51 [ print_char_cursor#28 print_line_cursor#0 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [65] if(print_line_cursor#0<print_char_cursor#28) goto print_ln::@1 [ print_char_cursor#28 print_line_cursor#0 ] ( main:3::end:22::print_ln:51 [ print_char_cursor#28 print_line_cursor#0 ] { } ) always clobbers reg byte a
|
|
|
|
|
Statement [68] print_uchar::$0 = print_uchar::b#2 >> 4 [ print_char_cursor#28 print_uchar::b#2 print_uchar::$0 ] ( main:3::end:22::print_uint:49::print_uchar:58 [ print_uint::w#0 print_char_cursor#28 print_uchar::b#2 print_uchar::$0 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60 [ print_char_cursor#28 print_uchar::b#2 print_uchar::$0 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte a
|
|
|
|
|
Statement [71] print_uchar::$2 = print_uchar::b#2 & $f [ print_char_cursor#28 print_uchar::$2 ] ( main:3::end:22::print_uint:49::print_uchar:58 [ print_uint::w#0 print_char_cursor#28 print_uchar::$2 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#0 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } main:3::end:22::print_uint:49::print_uchar:60 [ print_char_cursor#28 print_uchar::$2 ] { { Ticks#1 = print_uint::w#0 } { print_uchar::b#1 = print_uchar::b#2 } { print_char::ch#1 = print_char::ch#3 } { print_char_cursor#27 = print_char_cursor#28 } } ) always clobbers reg byte a
|
|
|
|
|
Potential registers zp[1]:2 [ main::c#8 main::c#2 ] : zp[1]:2 , reg byte x ,
|
|
|
|
|
Potential registers zp[2]:3 [ main::i#3 main::i#2 ] : zp[2]:3 ,
|
|
|
|
|
Potential registers zp[1]:2 [ main::c#7 main::c#1 ] : zp[1]:2 , reg byte x ,
|
|
|
|
|
Potential registers zp[2]:3 [ main::i#2 main::i#1 ] : zp[2]:3 ,
|
|
|
|
|
Potential registers zp[2]:5 [ free_#24 free_#14 ] : zp[2]:5 ,
|
|
|
|
|
Potential registers zp[2]:7 [ root#22 root#12 ] : zp[2]:7 ,
|
|
|
|
|
Potential registers zp[2]:9 [ sum::current#3 sum::current#1 sum::current#2 ] : zp[2]:9 ,
|
|
|
|
@ -1441,7 +1425,7 @@ Uplift Scope [] 114,407.7: zp[2]:14 [ print_char_cursor#27 print_char_cursor#48
|
|
|
|
|
Uplift Scope [print_char] 160,310: zp[1]:13 [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
|
|
|
Uplift Scope [print_uchar] 20,002: zp[1]:41 [ print_uchar::$0 ] 20,002: zp[1]:42 [ print_uchar::$2 ] 9,505: zp[1]:18 [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
|
|
|
Uplift Scope [prepend] 6,667.33: zp[2]:29 [ prepend::new#1 ] 1,833.67: zp[2]:21 [ prepend::x#0 ]
|
|
|
|
|
Uplift Scope [main] 2,502.5: zp[2]:3 [ main::i#3 main::i#2 ] 168.33: zp[1]:2 [ main::c#8 main::c#2 ] 101: zp[2]:25 [ main::$5 ]
|
|
|
|
|
Uplift Scope [main] 2,502.5: zp[2]:3 [ main::i#2 main::i#1 ] 168.33: zp[1]:2 [ main::c#7 main::c#1 ] 101: zp[2]:25 [ main::$5 ]
|
|
|
|
|
Uplift Scope [print_uint] 701: zp[2]:35 [ print_uint::w#0 ]
|
|
|
|
|
Uplift Scope [RADIX]
|
|
|
|
|
Uplift Scope [print_ln]
|
|
|
|
@ -1459,7 +1443,7 @@ Uplifting [] best 18498 combination zp[2]:14 [ print_char_cursor#27 print_char_c
|
|
|
|
|
Uplifting [print_char] best 18459 combination reg byte a [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
|
|
|
Uplifting [print_uchar] best 18441 combination reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte x [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
|
|
|
Uplifting [prepend] best 18441 combination zp[2]:29 [ prepend::new#1 ] zp[2]:21 [ prepend::x#0 ]
|
|
|
|
|
Uplifting [main] best 18351 combination zp[2]:3 [ main::i#3 main::i#2 ] reg byte x [ main::c#8 main::c#2 ] zp[2]:25 [ main::$5 ]
|
|
|
|
|
Uplifting [main] best 18351 combination zp[2]:3 [ main::i#2 main::i#1 ] reg byte x [ main::c#7 main::c#1 ] zp[2]:25 [ main::$5 ]
|
|
|
|
|
Uplifting [print_uint] best 18351 combination zp[2]:35 [ print_uint::w#0 ]
|
|
|
|
|
Uplifting [RADIX] best 18351 combination
|
|
|
|
|
Uplifting [print_ln] best 18351 combination
|
|
|
|
@ -1470,7 +1454,7 @@ Uplifting [start] best 18351 combination
|
|
|
|
|
Uplifting [end] best 18351 combination
|
|
|
|
|
Uplifting [node] best 18351 combination
|
|
|
|
|
Uplifting [__start] best 18351 combination
|
|
|
|
|
Coalescing zero page register [ zp[2]:3 [ main::i#3 main::i#2 ] ] with [ zp[2]:21 [ prepend::x#0 ] ] - score: 1
|
|
|
|
|
Coalescing zero page register [ zp[2]:3 [ main::i#2 main::i#1 ] ] with [ zp[2]:21 [ prepend::x#0 ] ] - score: 1
|
|
|
|
|
Coalescing zero page register [ zp[2]:7 [ root#22 root#12 ] ] with [ zp[2]:9 [ sum::current#3 sum::current#1 sum::current#2 ] ] - score: 1
|
|
|
|
|
Coalescing zero page register [ zp[2]:11 [ sum::s#3 sum::s#2 ] ] with [ zp[2]:23 [ sum::return#2 ] ] - score: 1
|
|
|
|
|
Coalescing zero page register [ zp[2]:27 [ alloc::return#2 ] ] with [ zp[2]:29 [ prepend::new#1 ] ] - score: 1
|
|
|
|
@ -1479,12 +1463,12 @@ Coalescing zero page register [ zp[2]:33 [ Ticks#1 ] ] with [ zp[2]:35 [ print_u
|
|
|
|
|
Coalescing zero page register [ zp[2]:11 [ sum::s#3 sum::s#2 sum::return#2 ] ] with [ zp[2]:25 [ main::$5 ] ] - score: 1
|
|
|
|
|
Coalescing zero page register [ zp[2]:27 [ alloc::return#2 prepend::new#1 alloc::return#0 ] ] with [ zp[2]:37 [ alloc::$1 ] ] - score: 1
|
|
|
|
|
Coalescing zero page register [ zp[2]:11 [ sum::s#3 sum::s#2 sum::return#2 main::$5 ] ] with [ zp[2]:5 [ free_#24 free_#14 ] ]
|
|
|
|
|
Coalescing zero page register [ zp[2]:16 [ print_line_cursor#9 print_line_cursor#0 ] ] with [ zp[2]:3 [ main::i#3 main::i#2 prepend::x#0 ] ]
|
|
|
|
|
Coalescing zero page register [ zp[2]:16 [ print_line_cursor#9 print_line_cursor#0 ] ] with [ zp[2]:3 [ main::i#2 main::i#1 prepend::x#0 ] ]
|
|
|
|
|
Coalescing zero page register [ zp[2]:31 [ Ticks#0 ] ] with [ zp[2]:27 [ alloc::return#2 prepend::new#1 alloc::return#0 alloc::$1 ] ]
|
|
|
|
|
Allocated (was zp[2]:7) zp[2]:2 [ root#22 root#12 sum::current#3 sum::current#1 sum::current#2 ]
|
|
|
|
|
Allocated (was zp[2]:11) zp[2]:4 [ sum::s#3 sum::s#2 sum::return#2 main::$5 free_#24 free_#14 ]
|
|
|
|
|
Allocated (was zp[2]:14) zp[2]:6 [ print_char_cursor#27 print_char_cursor#48 print_char_cursor#28 ]
|
|
|
|
|
Allocated (was zp[2]:16) zp[2]:8 [ print_line_cursor#9 print_line_cursor#0 main::i#3 main::i#2 prepend::x#0 ]
|
|
|
|
|
Allocated (was zp[2]:16) zp[2]:8 [ print_line_cursor#9 print_line_cursor#0 main::i#2 main::i#1 prepend::x#0 ]
|
|
|
|
|
Allocated (was zp[2]:19) zp[2]:10 [ last_time ]
|
|
|
|
|
Allocated (was zp[2]:31) zp[2]:12 [ Ticks#0 alloc::return#2 prepend::new#1 alloc::return#0 alloc::$1 ]
|
|
|
|
|
Allocated (was zp[2]:33) zp[2]:14 [ Ticks#1 print_uint::w#0 ]
|
|
|
|
@ -1546,7 +1530,7 @@ main: {
|
|
|
|
|
jsr start
|
|
|
|
|
// [7] phi from main to main::@1 [phi:main->main::@1]
|
|
|
|
|
__b1_from_main:
|
|
|
|
|
// [7] phi main::c#8 = 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
|
|
|
|
// [7] phi main::c#7 = 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
|
|
|
|
ldx #0
|
|
|
|
|
// [7] phi print_char_cursor#48 = print_screen#0 [phi:main->main::@1#1] -- pbuz1=pbuc1
|
|
|
|
|
lda #<print_screen
|
|
|
|
@ -1556,7 +1540,7 @@ main: {
|
|
|
|
|
jmp __b1
|
|
|
|
|
// [7] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
|
|
|
|
|
__b1_from___b7:
|
|
|
|
|
// [7] phi main::c#8 = main::c#2 [phi:main::@7->main::@1#0] -- register_copy
|
|
|
|
|
// [7] phi main::c#7 = main::c#1 [phi:main::@7->main::@1#0] -- register_copy
|
|
|
|
|
// [7] phi print_char_cursor#48 = print_char_cursor#28 [phi:main::@7->main::@1#1] -- register_copy
|
|
|
|
|
jmp __b1
|
|
|
|
|
// main::@1
|
|
|
|
@ -1573,7 +1557,7 @@ main: {
|
|
|
|
|
sta.z free_
|
|
|
|
|
lda #>0
|
|
|
|
|
sta.z free_+1
|
|
|
|
|
// [8] phi main::i#3 = 0 [phi:main::@1->main::@2#2] -- vwuz1=vbuc1
|
|
|
|
|
// [8] phi main::i#2 = 0 [phi:main::@1->main::@2#2] -- vwuz1=vwuc1
|
|
|
|
|
lda #<0
|
|
|
|
|
sta.z i
|
|
|
|
|
lda #>0
|
|
|
|
@ -1583,11 +1567,11 @@ main: {
|
|
|
|
|
__b2_from___b5:
|
|
|
|
|
// [8] phi root#22 = root#12 [phi:main::@5->main::@2#0] -- register_copy
|
|
|
|
|
// [8] phi free_#24 = free_#14 [phi:main::@5->main::@2#1] -- register_copy
|
|
|
|
|
// [8] phi main::i#3 = main::i#2 [phi:main::@5->main::@2#2] -- register_copy
|
|
|
|
|
// [8] phi main::i#2 = main::i#1 [phi:main::@5->main::@2#2] -- register_copy
|
|
|
|
|
jmp __b2
|
|
|
|
|
// main::@2
|
|
|
|
|
__b2:
|
|
|
|
|
// [9] prepend::x#0 = main::i#3
|
|
|
|
|
// [9] prepend::x#0 = main::i#2
|
|
|
|
|
// [10] call prepend
|
|
|
|
|
// [26] phi from main::@2 to prepend [phi:main::@2->prepend]
|
|
|
|
|
prepend_from___b2:
|
|
|
|
@ -1595,12 +1579,12 @@ main: {
|
|
|
|
|
jmp __b5
|
|
|
|
|
// main::@5
|
|
|
|
|
__b5:
|
|
|
|
|
// [11] main::i#2 = ++ main::i#3 -- vwuz1=_inc_vwuz1
|
|
|
|
|
// [11] main::i#1 = ++ main::i#2 -- vwuz1=_inc_vwuz1
|
|
|
|
|
inc.z i
|
|
|
|
|
bne !+
|
|
|
|
|
inc.z i+1
|
|
|
|
|
!:
|
|
|
|
|
// [12] if(main::i#2!=$bb8) goto main::@2 -- vwuz1_neq_vwuc1_then_la1
|
|
|
|
|
// [12] if(main::i#1!=$bb8) goto main::@2 -- vwuz1_neq_vwuc1_then_la1
|
|
|
|
|
lda.z i+1
|
|
|
|
|
cmp #>$bb8
|
|
|
|
|
bne __b2_from___b5
|
|
|
|
@ -1630,9 +1614,9 @@ main: {
|
|
|
|
|
jmp __b7
|
|
|
|
|
// main::@7
|
|
|
|
|
__b7:
|
|
|
|
|
// [19] main::c#2 = ++ main::c#8 -- vbuxx=_inc_vbuxx
|
|
|
|
|
// [19] main::c#1 = ++ main::c#7 -- vbuxx=_inc_vbuxx
|
|
|
|
|
inx
|
|
|
|
|
// [20] if(main::c#2!=5) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
|
|
|
// [20] if(main::c#1!=5) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
|
|
|
cpx #5
|
|
|
|
|
bne __b1_from___b7
|
|
|
|
|
// [21] phi from main::@7 to main::@4 [phi:main::@7->main::@4]
|
|
|
|
@ -2077,11 +2061,11 @@ volatile word last_time loadstore zp[2]:10 18.454545454545453
|
|
|
|
|
void main()
|
|
|
|
|
word~ main::$5 zp[2]:4 101.0
|
|
|
|
|
byte main::c
|
|
|
|
|
byte main::c#2 reg byte x 151.5
|
|
|
|
|
byte main::c#8 reg byte x 16.833333333333332
|
|
|
|
|
byte main::c#1 reg byte x 151.5
|
|
|
|
|
byte main::c#7 reg byte x 16.833333333333332
|
|
|
|
|
word main::i
|
|
|
|
|
word main::i#2 i zp[2]:8 1501.5
|
|
|
|
|
word main::i#3 i zp[2]:8 1001.0
|
|
|
|
|
word main::i#1 i zp[2]:8 1501.5
|
|
|
|
|
word main::i#2 i zp[2]:8 1001.0
|
|
|
|
|
void prepend(word prepend::x)
|
|
|
|
|
struct node* prepend::new
|
|
|
|
|
struct node* prepend::new#1 new zp[2]:12 6667.333333333333
|
|
|
|
@ -2130,12 +2114,12 @@ word sum::s
|
|
|
|
|
word sum::s#2 s zp[2]:4 100001.0
|
|
|
|
|
word sum::s#3 s zp[2]:4 50025.75
|
|
|
|
|
|
|
|
|
|
reg byte x [ main::c#8 main::c#2 ]
|
|
|
|
|
reg byte x [ main::c#7 main::c#1 ]
|
|
|
|
|
zp[2]:2 [ root#22 root#12 sum::current#3 sum::current#1 sum::current#2 ]
|
|
|
|
|
zp[2]:4 [ sum::s#3 sum::s#2 sum::return#2 main::$5 free_#24 free_#14 ]
|
|
|
|
|
reg byte a [ print_char::ch#3 print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
|
|
|
zp[2]:6 [ print_char_cursor#27 print_char_cursor#48 print_char_cursor#28 ]
|
|
|
|
|
zp[2]:8 [ print_line_cursor#9 print_line_cursor#0 main::i#3 main::i#2 prepend::x#0 ]
|
|
|
|
|
zp[2]:8 [ print_line_cursor#9 print_line_cursor#0 main::i#2 main::i#1 prepend::x#0 ]
|
|
|
|
|
reg byte x [ print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
|
|
|
zp[2]:10 [ last_time ]
|
|
|
|
|
zp[2]:12 [ Ticks#0 alloc::return#2 prepend::new#1 alloc::return#0 alloc::$1 ]
|
|
|
|
@ -2195,7 +2179,7 @@ main: {
|
|
|
|
|
// [6] call start
|
|
|
|
|
jsr start
|
|
|
|
|
// [7] phi from main to main::@1 [phi:main->main::@1]
|
|
|
|
|
// [7] phi main::c#8 = 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
|
|
|
|
// [7] phi main::c#7 = 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
|
|
|
|
ldx #0
|
|
|
|
|
// [7] phi print_char_cursor#48 = print_screen#0 [phi:main->main::@1#1] -- pbuz1=pbuc1
|
|
|
|
|
lda #<print_screen
|
|
|
|
@ -2203,7 +2187,7 @@ main: {
|
|
|
|
|
lda #>print_screen
|
|
|
|
|
sta.z print_char_cursor+1
|
|
|
|
|
// [7] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
|
|
|
|
|
// [7] phi main::c#8 = main::c#2 [phi:main::@7->main::@1#0] -- register_copy
|
|
|
|
|
// [7] phi main::c#7 = main::c#1 [phi:main::@7->main::@1#0] -- register_copy
|
|
|
|
|
// [7] phi print_char_cursor#48 = print_char_cursor#28 [phi:main::@7->main::@1#1] -- register_copy
|
|
|
|
|
// main::@1
|
|
|
|
|
__b1:
|
|
|
|
@ -2215,28 +2199,28 @@ main: {
|
|
|
|
|
// [8] phi free_#24 = 0 [phi:main::@1->main::@2#1] -- vwuz1=vbuc1
|
|
|
|
|
sta.z free_
|
|
|
|
|
sta.z free_+1
|
|
|
|
|
// [8] phi main::i#3 = 0 [phi:main::@1->main::@2#2] -- vwuz1=vbuc1
|
|
|
|
|
// [8] phi main::i#2 = 0 [phi:main::@1->main::@2#2] -- vwuz1=vwuc1
|
|
|
|
|
sta.z i
|
|
|
|
|
sta.z i+1
|
|
|
|
|
// [8] phi from main::@5 to main::@2 [phi:main::@5->main::@2]
|
|
|
|
|
// [8] phi root#22 = root#12 [phi:main::@5->main::@2#0] -- register_copy
|
|
|
|
|
// [8] phi free_#24 = free_#14 [phi:main::@5->main::@2#1] -- register_copy
|
|
|
|
|
// [8] phi main::i#3 = main::i#2 [phi:main::@5->main::@2#2] -- register_copy
|
|
|
|
|
// [8] phi main::i#2 = main::i#1 [phi:main::@5->main::@2#2] -- register_copy
|
|
|
|
|
// main::@2
|
|
|
|
|
__b2:
|
|
|
|
|
// prepend(i)
|
|
|
|
|
// [9] prepend::x#0 = main::i#3
|
|
|
|
|
// [9] prepend::x#0 = main::i#2
|
|
|
|
|
// [10] call prepend
|
|
|
|
|
// [26] phi from main::@2 to prepend [phi:main::@2->prepend]
|
|
|
|
|
jsr prepend
|
|
|
|
|
// main::@5
|
|
|
|
|
// for(i : 0..2999)
|
|
|
|
|
// [11] main::i#2 = ++ main::i#3 -- vwuz1=_inc_vwuz1
|
|
|
|
|
// for(unsigned int i : 0..2999)
|
|
|
|
|
// [11] main::i#1 = ++ main::i#2 -- vwuz1=_inc_vwuz1
|
|
|
|
|
inc.z i
|
|
|
|
|
bne !+
|
|
|
|
|
inc.z i+1
|
|
|
|
|
!:
|
|
|
|
|
// [12] if(main::i#2!=$bb8) goto main::@2 -- vwuz1_neq_vwuc1_then_la1
|
|
|
|
|
// [12] if(main::i#1!=$bb8) goto main::@2 -- vwuz1_neq_vwuc1_then_la1
|
|
|
|
|
lda.z i+1
|
|
|
|
|
cmp #>$bb8
|
|
|
|
|
bne __b2
|
|
|
|
@ -2260,10 +2244,10 @@ main: {
|
|
|
|
|
// [40] phi print_char::ch#3 = print_char::ch#2 [phi:main::@6->print_char#1] -- register_copy
|
|
|
|
|
jsr print_char
|
|
|
|
|
// main::@7
|
|
|
|
|
// for(c : 0..4)
|
|
|
|
|
// [19] main::c#2 = ++ main::c#8 -- vbuxx=_inc_vbuxx
|
|
|
|
|
// for(unsigned char c : 0..4)
|
|
|
|
|
// [19] main::c#1 = ++ main::c#7 -- vbuxx=_inc_vbuxx
|
|
|
|
|
inx
|
|
|
|
|
// [20] if(main::c#2!=5) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
|
|
|
// [20] if(main::c#1!=5) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
|
|
|
cpx #5
|
|
|
|
|
bne __b1
|
|
|
|
|
// [21] phi from main::@7 to main::@4 [phi:main::@7->main::@4]
|
|
|
|
|