1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-29 09:29:31 +00:00
kickc/src/test/ref/typeid-plus-bytes.log

1807 lines
76 KiB
Plaintext

Resolving typeid() testUnsigned::$1 = typeid testUnsigned::ubc1
Resolving typeid() testUnsigned::$2 = typeid testUnsigned::ubv1
Resolving typeid() testUnsigned::$13 = typeid testUnsigned::$12
Resolving typeid() testUnsigned::$15 = typeid testUnsigned::$14
Resolving typeid() testUnsigned::$17 = typeid testUnsigned::$16
Resolving typeid() testSigned::$1 = typeid testSigned::sbc1
Resolving typeid() testSigned::$2 = typeid testSigned::sbv1
Resolving typeid() testSigned::$13 = typeid testSigned::$12
Resolving typeid() testSigned::$15 = typeid testSigned::$14
Resolving typeid() testSigned::$17 = typeid testSigned::$16
Inlined call call __init
CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start::@1
idx#0 = 0
call testUnsigned
to:main::@1
main::@1: scope:[main] from main
idx#60 = phi( main/idx#20 )
idx#1 = idx#60
idx#2 = $28
call testUnsignedVals
to:main::@2
main::@2: scope:[main] from main::@1
idx#61 = phi( main::@1/idx#32 )
idx#3 = idx#61
idx#4 = $28*2
call testSigned
to:main::@3
main::@3: scope:[main] from main::@2
idx#62 = phi( main::@2/idx#44 )
idx#5 = idx#62
idx#6 = $28*3
call testSignedVals
to:main::@4
main::@4: scope:[main] from main::@3
idx#63 = phi( main::@3/idx#56 )
idx#7 = idx#63
to:main::@return
main::@return: scope:[main] from main::@4
idx#64 = phi( main::@4/idx#7 )
idx#8 = idx#64
return
to:@return
void testUnsigned()
testUnsigned: scope:[testUnsigned] from main
idx#65 = phi( main/idx#0 )
testUnsigned::ubv1 = $fa
testUnsigned::$0 = typeid $fa
SCREEN[idx#65] = testUnsigned::$0
idx#9 = ++ idx#65
testUnsigned::$1 = TYPEID_BYTE
SCREEN[idx#9] = testUnsigned::$1
idx#10 = ++ idx#9
testUnsigned::$2 = TYPEID_BYTE
SCREEN[idx#10] = testUnsigned::$2
idx#11 = ++ idx#10
testUnsigned::$3 = typeid $78+$82
SCREEN[idx#11] = testUnsigned::$3
idx#12 = ++ idx#11
testUnsigned::$4 = testUnsigned::ubc1 + $fa
testUnsigned::$5 = typeid testUnsigned::$4
SCREEN[idx#12] = testUnsigned::$5
idx#13 = ++ idx#12
testUnsigned::$6 = $fa + testUnsigned::ubc1
testUnsigned::$7 = typeid testUnsigned::$6
SCREEN[idx#13] = testUnsigned::$7
idx#14 = ++ idx#13
testUnsigned::$8 = testUnsigned::ubv1 + $fa
testUnsigned::$9 = typeid testUnsigned::$8
SCREEN[idx#14] = testUnsigned::$9
idx#15 = ++ idx#14
testUnsigned::$10 = $fa + testUnsigned::ubv1
testUnsigned::$11 = typeid testUnsigned::$10
SCREEN[idx#15] = testUnsigned::$11
idx#16 = ++ idx#15
testUnsigned::$13 = TYPEID_BYTE
SCREEN[idx#16] = testUnsigned::$13
idx#17 = ++ idx#16
testUnsigned::$15 = TYPEID_BYTE
SCREEN[idx#17] = testUnsigned::$15
idx#18 = ++ idx#17
testUnsigned::$17 = TYPEID_BYTE
SCREEN[idx#18] = testUnsigned::$17
idx#19 = ++ idx#18
to:testUnsigned::@return
testUnsigned::@return: scope:[testUnsigned] from testUnsigned
idx#66 = phi( testUnsigned/idx#19 )
idx#20 = idx#66
return
to:@return
void testUnsignedVals()
testUnsignedVals: scope:[testUnsignedVals] from main::@1
idx#67 = phi( main::@1/idx#2 )
testUnsignedVals::ubv1 = $fa
SCREEN[idx#67] = $fa
idx#21 = ++ idx#67
SCREEN[idx#21] = testUnsignedVals::ubc1
idx#22 = ++ idx#21
SCREEN[idx#22] = testUnsignedVals::ubv1
idx#23 = ++ idx#22
SCREEN[idx#23] = $78+$82
idx#24 = ++ idx#23
testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
SCREEN[idx#24] = testUnsignedVals::$0
idx#25 = ++ idx#24
testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
SCREEN[idx#25] = testUnsignedVals::$1
idx#26 = ++ idx#25
testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
SCREEN[idx#26] = testUnsignedVals::$2
idx#27 = ++ idx#26
testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
SCREEN[idx#27] = testUnsignedVals::$3
idx#28 = ++ idx#27
testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1
SCREEN[idx#28] = testUnsignedVals::$4
idx#29 = ++ idx#28
testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1
SCREEN[idx#29] = testUnsignedVals::$5
idx#30 = ++ idx#29
testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1
SCREEN[idx#30] = testUnsignedVals::$6
idx#31 = ++ idx#30
to:testUnsignedVals::@return
testUnsignedVals::@return: scope:[testUnsignedVals] from testUnsignedVals
idx#68 = phi( testUnsignedVals/idx#31 )
idx#32 = idx#68
return
to:@return
void testSigned()
testSigned: scope:[testSigned] from main::@2
idx#69 = phi( main::@2/idx#4 )
testSigned::sbv1 = -$78
testSigned::$0 = typeid -$78
SCREEN[idx#69] = testSigned::$0
idx#33 = ++ idx#69
testSigned::$1 = TYPEID_SIGNED_BYTE
SCREEN[idx#33] = testSigned::$1
idx#34 = ++ idx#33
testSigned::$2 = TYPEID_SIGNED_BYTE
SCREEN[idx#34] = testSigned::$2
idx#35 = ++ idx#34
testSigned::$3 = typeid -$78+-$82
SCREEN[idx#35] = testSigned::$3
idx#36 = ++ idx#35
testSigned::$4 = testSigned::sbc1 + -$78
testSigned::$5 = typeid testSigned::$4
SCREEN[idx#36] = testSigned::$5
idx#37 = ++ idx#36
testSigned::$6 = -$78 + testSigned::sbc1
testSigned::$7 = typeid testSigned::$6
SCREEN[idx#37] = testSigned::$7
idx#38 = ++ idx#37
testSigned::$8 = testSigned::sbv1 + -$78
testSigned::$9 = typeid testSigned::$8
SCREEN[idx#38] = testSigned::$9
idx#39 = ++ idx#38
testSigned::$10 = -$78 + testSigned::sbv1
testSigned::$11 = typeid testSigned::$10
SCREEN[idx#39] = testSigned::$11
idx#40 = ++ idx#39
testSigned::$13 = TYPEID_SIGNED_BYTE
SCREEN[idx#40] = testSigned::$13
idx#41 = ++ idx#40
testSigned::$15 = TYPEID_SIGNED_BYTE
SCREEN[idx#41] = testSigned::$15
idx#42 = ++ idx#41
testSigned::$17 = TYPEID_SIGNED_BYTE
SCREEN[idx#42] = testSigned::$17
idx#43 = ++ idx#42
to:testSigned::@return
testSigned::@return: scope:[testSigned] from testSigned
idx#70 = phi( testSigned/idx#43 )
idx#44 = idx#70
return
to:@return
void testSignedVals()
testSignedVals: scope:[testSignedVals] from main::@3
idx#71 = phi( main::@3/idx#6 )
testSignedVals::sbv1 = -$78
SSCREEN[idx#71] = -$78
idx#45 = ++ idx#71
SSCREEN[idx#45] = testSignedVals::sbc1
idx#46 = ++ idx#45
SSCREEN[idx#46] = testSignedVals::sbv1
idx#47 = ++ idx#46
SSCREEN[idx#47] = -$46+-$32
idx#48 = ++ idx#47
testSignedVals::$0 = testSignedVals::sbc1 + -$78
SSCREEN[idx#48] = testSignedVals::$0
idx#49 = ++ idx#48
testSignedVals::$1 = -$78 + testSignedVals::sbc1
SSCREEN[idx#49] = testSignedVals::$1
idx#50 = ++ idx#49
testSignedVals::$2 = testSignedVals::sbv1 + -$78
SSCREEN[idx#50] = testSignedVals::$2
idx#51 = ++ idx#50
testSignedVals::$3 = -$78 + testSignedVals::sbv1
SSCREEN[idx#51] = testSignedVals::$3
idx#52 = ++ idx#51
testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1
SSCREEN[idx#52] = testSignedVals::$4
idx#53 = ++ idx#52
testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1
SSCREEN[idx#53] = testSignedVals::$5
idx#54 = ++ idx#53
testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1
SSCREEN[idx#54] = testSignedVals::$6
idx#55 = ++ idx#54
to:testSignedVals::@return
testSignedVals::@return: scope:[testSignedVals] from testSignedVals
idx#72 = phi( testSignedVals/idx#55 )
idx#56 = idx#72
return
to:@return
void __start()
__start: scope:[__start] from
to:__start::__init1
__start::__init1: scope:[__start] from __start
idx#57 = 0
to:__start::@1
__start::@1: scope:[__start] from __start::__init1
idx#75 = phi( __start::__init1/idx#57 )
call main
to:__start::@2
__start::@2: scope:[__start] from __start::@1
idx#73 = phi( __start::@1/idx#8 )
idx#58 = idx#73
to:__start::@return
__start::@return: scope:[__start] from __start::@2
idx#74 = phi( __start::@2/idx#58 )
idx#59 = idx#74
return
to:@return
SYMBOL TABLE SSA
constant byte* const SCREEN = (byte*)$400
constant signed byte* const SSCREEN = (signed byte*)$400
constant byte TYPEID_BYTE = 1
constant byte TYPEID_SIGNED_BYTE = 2
void __start()
byte idx
byte idx#0
byte idx#1
byte idx#10
byte idx#11
byte idx#12
byte idx#13
byte idx#14
byte idx#15
byte idx#16
byte idx#17
byte idx#18
byte idx#19
byte idx#2
byte idx#20
byte idx#21
byte idx#22
byte idx#23
byte idx#24
byte idx#25
byte idx#26
byte idx#27
byte idx#28
byte idx#29
byte idx#3
byte idx#30
byte idx#31
byte idx#32
byte idx#33
byte idx#34
byte idx#35
byte idx#36
byte idx#37
byte idx#38
byte idx#39
byte idx#4
byte idx#40
byte idx#41
byte idx#42
byte idx#43
byte idx#44
byte idx#45
byte idx#46
byte idx#47
byte idx#48
byte idx#49
byte idx#5
byte idx#50
byte idx#51
byte idx#52
byte idx#53
byte idx#54
byte idx#55
byte idx#56
byte idx#57
byte idx#58
byte idx#59
byte idx#6
byte idx#60
byte idx#61
byte idx#62
byte idx#63
byte idx#64
byte idx#65
byte idx#66
byte idx#67
byte idx#68
byte idx#69
byte idx#7
byte idx#70
byte idx#71
byte idx#72
byte idx#73
byte idx#74
byte idx#75
byte idx#8
byte idx#9
void main()
void testSigned()
byte~ testSigned::$0
byte~ testSigned::$1
number~ testSigned::$10
byte~ testSigned::$11
byte~ testSigned::$13
byte~ testSigned::$15
byte~ testSigned::$17
byte~ testSigned::$2
byte~ testSigned::$3
number~ testSigned::$4
byte~ testSigned::$5
number~ testSigned::$6
byte~ testSigned::$7
number~ testSigned::$8
byte~ testSigned::$9
constant signed byte testSigned::sbc1 = -$78
volatile signed byte testSigned::sbv1 loadstore
void testSignedVals()
number~ testSignedVals::$0
number~ testSignedVals::$1
number~ testSignedVals::$2
number~ testSignedVals::$3
signed byte~ testSignedVals::$4
signed byte~ testSignedVals::$5
signed byte~ testSignedVals::$6
constant signed byte testSignedVals::sbc1 = -$78
volatile signed byte testSignedVals::sbv1 loadstore
void testUnsigned()
byte~ testUnsigned::$0
byte~ testUnsigned::$1
number~ testUnsigned::$10
byte~ testUnsigned::$11
byte~ testUnsigned::$13
byte~ testUnsigned::$15
byte~ testUnsigned::$17
byte~ testUnsigned::$2
byte~ testUnsigned::$3
number~ testUnsigned::$4
byte~ testUnsigned::$5
number~ testUnsigned::$6
byte~ testUnsigned::$7
number~ testUnsigned::$8
byte~ testUnsigned::$9
constant byte testUnsigned::ubc1 = $fa
volatile byte testUnsigned::ubv1 loadstore
void testUnsignedVals()
number~ testUnsignedVals::$0
number~ testUnsignedVals::$1
number~ testUnsignedVals::$2
number~ testUnsignedVals::$3
byte~ testUnsignedVals::$4
byte~ testUnsignedVals::$5
byte~ testUnsignedVals::$6
constant byte testUnsignedVals::ubc1 = $fa
volatile byte testUnsignedVals::ubv1 loadstore
Adding number conversion cast (unumber) 0 in idx#0 = 0
Adding number conversion cast (unumber) $28 in idx#2 = $28
Adding number conversion cast (unumber) $28*2 in idx#4 = $28*2
Adding number conversion cast (unumber) $28*3 in idx#6 = $28*3
Adding number conversion cast (unumber) $fa in testUnsigned::$4 = testUnsigned::ubc1 + $fa
Adding number conversion cast (unumber) testUnsigned::$4 in testUnsigned::$4 = testUnsigned::ubc1 + (unumber)$fa
Adding number conversion cast (unumber) $fa in testUnsigned::$6 = $fa + testUnsigned::ubc1
Adding number conversion cast (unumber) testUnsigned::$6 in testUnsigned::$6 = (unumber)$fa + testUnsigned::ubc1
Adding number conversion cast (unumber) $fa in testUnsigned::$8 = testUnsigned::ubv1 + $fa
Adding number conversion cast (unumber) testUnsigned::$8 in testUnsigned::$8 = testUnsigned::ubv1 + (unumber)$fa
Adding number conversion cast (unumber) $fa in testUnsigned::$10 = $fa + testUnsigned::ubv1
Adding number conversion cast (unumber) testUnsigned::$10 in testUnsigned::$10 = (unumber)$fa + testUnsigned::ubv1
Adding number conversion cast (unumber) $fa in SCREEN[idx#67] = $fa
Adding number conversion cast (unumber) $78+$82 in SCREEN[idx#23] = $78+$82
Adding number conversion cast (unumber) $fa in testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
Adding number conversion cast (unumber) testUnsignedVals::$0 in testUnsignedVals::$0 = testUnsignedVals::ubc1 + (unumber)$fa
Adding number conversion cast (unumber) $fa in testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
Adding number conversion cast (unumber) testUnsignedVals::$1 in testUnsignedVals::$1 = (unumber)$fa + testUnsignedVals::ubc1
Adding number conversion cast (unumber) $fa in testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
Adding number conversion cast (unumber) testUnsignedVals::$2 in testUnsignedVals::$2 = testUnsignedVals::ubv1 + (unumber)$fa
Adding number conversion cast (unumber) $fa in testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
Adding number conversion cast (unumber) testUnsignedVals::$3 in testUnsignedVals::$3 = (unumber)$fa + testUnsignedVals::ubv1
Adding number conversion cast (snumber) -$78 in testSigned::$4 = testSigned::sbc1 + -$78
Adding number conversion cast (snumber) testSigned::$4 in testSigned::$4 = testSigned::sbc1 + (snumber)-$78
Adding number conversion cast (snumber) -$78 in testSigned::$6 = -$78 + testSigned::sbc1
Adding number conversion cast (snumber) testSigned::$6 in testSigned::$6 = (snumber)-$78 + testSigned::sbc1
Adding number conversion cast (snumber) -$78 in testSigned::$8 = testSigned::sbv1 + -$78
Adding number conversion cast (snumber) testSigned::$8 in testSigned::$8 = testSigned::sbv1 + (snumber)-$78
Adding number conversion cast (snumber) -$78 in testSigned::$10 = -$78 + testSigned::sbv1
Adding number conversion cast (snumber) testSigned::$10 in testSigned::$10 = (snumber)-$78 + testSigned::sbv1
Adding number conversion cast (snumber) -$78 in SSCREEN[idx#71] = -$78
Adding number conversion cast (snumber) -$46+-$32 in SSCREEN[idx#47] = -$46+-$32
Adding number conversion cast (snumber) -$78 in testSignedVals::$0 = testSignedVals::sbc1 + -$78
Adding number conversion cast (snumber) testSignedVals::$0 in testSignedVals::$0 = testSignedVals::sbc1 + (snumber)-$78
Adding number conversion cast (snumber) -$78 in testSignedVals::$1 = -$78 + testSignedVals::sbc1
Adding number conversion cast (snumber) testSignedVals::$1 in testSignedVals::$1 = (snumber)-$78 + testSignedVals::sbc1
Adding number conversion cast (snumber) -$78 in testSignedVals::$2 = testSignedVals::sbv1 + -$78
Adding number conversion cast (snumber) testSignedVals::$2 in testSignedVals::$2 = testSignedVals::sbv1 + (snumber)-$78
Adding number conversion cast (snumber) -$78 in testSignedVals::$3 = -$78 + testSignedVals::sbv1
Adding number conversion cast (snumber) testSignedVals::$3 in testSignedVals::$3 = (snumber)-$78 + testSignedVals::sbv1
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast idx#0 = (unumber)0
Inlining cast idx#2 = (unumber)$28
Inlining cast idx#4 = (unumber)$28*2
Inlining cast idx#6 = (unumber)$28*3
Inlining cast SCREEN[idx#67] = (unumber)$fa
Inlining cast SCREEN[idx#23] = (unumber)$78+$82
Inlining cast SSCREEN[idx#71] = (snumber)-$78
Inlining cast SSCREEN[idx#47] = (snumber)-$46+-$32
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (signed byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast $fa
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Simplifying constant integer cast -$78
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized unsigned number type (byte) $fa
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Finalized signed number type (signed byte) -$78
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in testUnsigned::$4 = testUnsigned::ubc1 + $fa
Inferred type updated to byte in testUnsigned::$6 = $fa + testUnsigned::ubc1
Inferred type updated to byte in testUnsigned::$8 = testUnsigned::ubv1 + $fa
Inferred type updated to byte in testUnsigned::$10 = $fa + testUnsigned::ubv1
Inferred type updated to byte in testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
Inferred type updated to byte in testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
Inferred type updated to byte in testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
Inferred type updated to byte in testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
Inferred type updated to signed byte in testSigned::$4 = testSigned::sbc1 + -$78
Inferred type updated to signed byte in testSigned::$6 = -$78 + testSigned::sbc1
Inferred type updated to signed byte in testSigned::$8 = testSigned::sbv1 + -$78
Inferred type updated to signed byte in testSigned::$10 = -$78 + testSigned::sbv1
Inferred type updated to signed byte in testSignedVals::$0 = testSignedVals::sbc1 + -$78
Inferred type updated to signed byte in testSignedVals::$1 = -$78 + testSignedVals::sbc1
Inferred type updated to signed byte in testSignedVals::$2 = testSignedVals::sbv1 + -$78
Inferred type updated to signed byte in testSignedVals::$3 = -$78 + testSignedVals::sbv1
Resolving typeid() testUnsigned::$5 = typeid testUnsigned::$4
Resolving typeid() testUnsigned::$7 = typeid testUnsigned::$6
Resolving typeid() testUnsigned::$9 = typeid testUnsigned::$8
Resolving typeid() testUnsigned::$11 = typeid testUnsigned::$10
Resolving typeid() testSigned::$5 = typeid testSigned::$4
Resolving typeid() testSigned::$7 = typeid testSigned::$6
Resolving typeid() testSigned::$9 = typeid testSigned::$8
Resolving typeid() testSigned::$11 = typeid testSigned::$10
Successful SSA optimization PassNTypeIdSimplification
Alias idx#1 = idx#60
Alias idx#3 = idx#61
Alias idx#5 = idx#62
Alias idx#63 = idx#7 idx#64 idx#8
Alias idx#19 = idx#66 idx#20
Alias idx#31 = idx#68 idx#32
Alias idx#43 = idx#70 idx#44
Alias idx#55 = idx#72 idx#56
Alias idx#57 = idx#75
Alias idx#58 = idx#73 idx#74 idx#59
Successful SSA optimization Pass2AliasElimination
Identical Phi Values idx#1 idx#19
Identical Phi Values idx#3 idx#31
Identical Phi Values idx#5 idx#43
Identical Phi Values idx#63 idx#55
Identical Phi Values idx#65 idx#0
Identical Phi Values idx#67 idx#2
Identical Phi Values idx#69 idx#4
Identical Phi Values idx#71 idx#6
Identical Phi Values idx#58 idx#63
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [6] idx#4 = (unumber)$28*2
Constant right-side identified [9] idx#6 = (unumber)$28*3
Constant right-side identified [15] testUnsigned::$0 = typeid $fa
Constant right-side identified [24] testUnsigned::$3 = typeid $78+$82
Constant right-side identified [27] testUnsigned::$4 = testUnsigned::ubc1 + $fa
Constant right-side identified [31] testUnsigned::$6 = $fa + testUnsigned::ubc1
Constant right-side identified [61] SCREEN[idx#23] = (unumber)$78+$82
Constant right-side identified [63] testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
Constant right-side identified [66] testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
Constant right-side identified [87] testSigned::$0 = typeid -$78
Constant right-side identified [96] testSigned::$3 = typeid -$78+-$82
Constant right-side identified [99] testSigned::$4 = testSigned::sbc1 + -$78
Constant right-side identified [103] testSigned::$6 = -$78 + testSigned::sbc1
Constant right-side identified [133] SSCREEN[idx#47] = (snumber)-$46+-$32
Constant right-side identified [135] testSignedVals::$0 = testSignedVals::sbc1 + -$78
Constant right-side identified [138] testSignedVals::$1 = -$78 + testSignedVals::sbc1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#0 = 0
Constant idx#2 = $28
Constant idx#4 = (unumber)$28*2
Constant idx#6 = (unumber)$28*3
Constant testUnsigned::$0 = typeid $fa
Constant testUnsigned::$1 = TYPEID_BYTE
Constant testUnsigned::$2 = TYPEID_BYTE
Constant testUnsigned::$3 = typeid $78+$82
Constant testUnsigned::$4 = testUnsigned::ubc1+$fa
Constant testUnsigned::$5 = TYPEID_BYTE
Constant testUnsigned::$6 = $fa+testUnsigned::ubc1
Constant testUnsigned::$7 = TYPEID_BYTE
Constant testUnsigned::$9 = TYPEID_BYTE
Constant testUnsigned::$11 = TYPEID_BYTE
Constant testUnsigned::$13 = TYPEID_BYTE
Constant testUnsigned::$15 = TYPEID_BYTE
Constant testUnsigned::$17 = TYPEID_BYTE
Constant testUnsignedVals::$0 = testUnsignedVals::ubc1+$fa
Constant testUnsignedVals::$1 = $fa+testUnsignedVals::ubc1
Constant testSigned::$0 = typeid -$78
Constant testSigned::$1 = TYPEID_SIGNED_BYTE
Constant testSigned::$2 = TYPEID_SIGNED_BYTE
Constant testSigned::$3 = typeid -$78+-$82
Constant testSigned::$4 = testSigned::sbc1+-$78
Constant testSigned::$5 = TYPEID_SIGNED_BYTE
Constant testSigned::$6 = -$78+testSigned::sbc1
Constant testSigned::$7 = TYPEID_SIGNED_BYTE
Constant testSigned::$9 = TYPEID_SIGNED_BYTE
Constant testSigned::$11 = TYPEID_SIGNED_BYTE
Constant testSigned::$13 = TYPEID_SIGNED_BYTE
Constant testSigned::$15 = TYPEID_SIGNED_BYTE
Constant testSigned::$17 = TYPEID_SIGNED_BYTE
Constant testSignedVals::$0 = testSignedVals::sbc1+-$78
Constant testSignedVals::$1 = -$78+testSignedVals::sbc1
Constant idx#57 = 0
Successful SSA optimization Pass2ConstantIdentification
Simplifying constant evaluating to zero typeid $fa in
Simplifying constant evaluating to zero typeid $78+$82 in
Simplifying constant evaluating to zero typeid -$78 in
Simplifying constant evaluating to zero typeid -$78+-$82 in
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero SCREEN in [16] SCREEN[idx#0] = testUnsigned::$0
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused variable testUnsigned::$8 and assignment [18] testUnsigned::$8 = testUnsigned::ubv1 + $fa
Eliminating unused variable testUnsigned::$10 and assignment [21] testUnsigned::$10 = $fa + testUnsigned::ubv1
Eliminating unused variable idx#19 and assignment [29] idx#19 = ++ idx#18
Eliminating unused variable idx#31 and assignment [58] idx#31 = ++ idx#30
Eliminating unused variable testSigned::$8 and assignment [73] testSigned::$8 = testSigned::sbv1 + -$78
Eliminating unused variable testSigned::$10 and assignment [76] testSigned::$10 = -$78 + testSigned::sbv1
Eliminating unused variable idx#43 and assignment [84] idx#43 = ++ idx#42
Eliminating unused variable idx#55 and assignment [113] idx#55 = ++ idx#54
Eliminating unused constant testUnsigned::$4
Eliminating unused constant testUnsigned::$6
Eliminating unused constant testSigned::$4
Eliminating unused constant testSigned::$6
Eliminating unused constant idx#57
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable testUnsigned::ubv1 and assignment [5] testUnsigned::ubv1 = $fa
Eliminating unused variable testSigned::sbv1 and assignment [56] testSigned::sbv1 = -$78
Eliminating unused constant testUnsigned::ubc1
Eliminating unused constant testSigned::sbc1
Successful SSA optimization PassNEliminateUnusedVars
Removing unused procedure __start
Removing unused procedure block __start
Removing unused procedure block __start::__init1
Removing unused procedure block __start::@1
Removing unused procedure block __start::@2
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Constant right-side identified [6] idx#9 = ++ idx#0
Constant right-side identified [29] idx#21 = ++ idx#2
Constant right-side identified [56] idx#33 = ++ idx#4
Constant right-side identified [79] idx#45 = ++ idx#6
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#9 = ++idx#0
Constant idx#21 = ++idx#2
Constant idx#33 = ++idx#4
Constant idx#45 = ++idx#6
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [7] idx#10 = ++ idx#9
Constant right-side identified [29] idx#22 = ++ idx#21
Constant right-side identified [55] idx#34 = ++ idx#33
Constant right-side identified [77] idx#46 = ++ idx#45
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#10 = ++idx#9
Constant idx#22 = ++idx#21
Constant idx#34 = ++idx#33
Constant idx#46 = ++idx#45
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [8] idx#11 = ++ idx#10
Constant right-side identified [29] idx#23 = ++ idx#22
Constant right-side identified [54] idx#35 = ++ idx#34
Constant right-side identified [75] idx#47 = ++ idx#46
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#11 = ++idx#10
Constant idx#23 = ++idx#22
Constant idx#35 = ++idx#34
Constant idx#47 = ++idx#46
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [9] idx#12 = ++ idx#11
Constant right-side identified [29] idx#24 = ++ idx#23
Constant right-side identified [53] idx#36 = ++ idx#35
Constant right-side identified [73] idx#48 = ++ idx#47
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#12 = ++idx#11
Constant idx#24 = ++idx#23
Constant idx#36 = ++idx#35
Constant idx#48 = ++idx#47
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [10] idx#13 = ++ idx#12
Constant right-side identified [29] idx#25 = ++ idx#24
Constant right-side identified [52] idx#37 = ++ idx#36
Constant right-side identified [71] idx#49 = ++ idx#48
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#13 = ++idx#12
Constant idx#25 = ++idx#24
Constant idx#37 = ++idx#36
Constant idx#49 = ++idx#48
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [11] idx#14 = ++ idx#13
Constant right-side identified [29] idx#26 = ++ idx#25
Constant right-side identified [51] idx#38 = ++ idx#37
Constant right-side identified [69] idx#50 = ++ idx#49
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#14 = ++idx#13
Constant idx#26 = ++idx#25
Constant idx#38 = ++idx#37
Constant idx#50 = ++idx#49
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [12] idx#15 = ++ idx#14
Constant right-side identified [30] idx#27 = ++ idx#26
Constant right-side identified [50] idx#39 = ++ idx#38
Constant right-side identified [68] idx#51 = ++ idx#50
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#15 = ++idx#14
Constant idx#27 = ++idx#26
Constant idx#39 = ++idx#38
Constant idx#51 = ++idx#50
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [13] idx#16 = ++ idx#15
Constant right-side identified [31] idx#28 = ++ idx#27
Constant right-side identified [49] idx#40 = ++ idx#39
Constant right-side identified [67] idx#52 = ++ idx#51
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#16 = ++idx#15
Constant idx#28 = ++idx#27
Constant idx#40 = ++idx#39
Constant idx#52 = ++idx#51
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [14] idx#17 = ++ idx#16
Constant right-side identified [32] idx#29 = ++ idx#28
Constant right-side identified [48] idx#41 = ++ idx#40
Constant right-side identified [66] idx#53 = ++ idx#52
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#17 = ++idx#16
Constant idx#29 = ++idx#28
Constant idx#41 = ++idx#40
Constant idx#53 = ++idx#52
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [15] idx#18 = ++ idx#17
Constant right-side identified [33] idx#30 = ++ idx#29
Constant right-side identified [47] idx#42 = ++ idx#41
Constant right-side identified [65] idx#54 = ++ idx#53
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant idx#18 = ++idx#17
Constant idx#30 = ++idx#29
Constant idx#42 = ++idx#41
Constant idx#54 = ++idx#53
Successful SSA optimization Pass2ConstantIdentification
Inlining constant with different constant siblings idx#0
Inlining constant with different constant siblings idx#2
Inlining constant with different constant siblings idx#4
Inlining constant with different constant siblings idx#6
Inlining constant with different constant siblings idx#9
Inlining constant with different constant siblings idx#21
Inlining constant with different constant siblings idx#33
Inlining constant with different constant siblings idx#45
Inlining constant with different constant siblings idx#10
Inlining constant with different constant siblings idx#22
Inlining constant with different constant siblings idx#34
Inlining constant with different constant siblings idx#46
Inlining constant with different constant siblings idx#11
Inlining constant with different constant siblings idx#23
Inlining constant with different constant siblings idx#35
Inlining constant with different constant siblings idx#47
Inlining constant with different constant siblings idx#12
Inlining constant with different constant siblings idx#24
Inlining constant with different constant siblings idx#36
Inlining constant with different constant siblings idx#48
Inlining constant with different constant siblings idx#13
Inlining constant with different constant siblings idx#25
Inlining constant with different constant siblings idx#37
Inlining constant with different constant siblings idx#49
Inlining constant with different constant siblings idx#14
Inlining constant with different constant siblings idx#26
Inlining constant with different constant siblings idx#38
Inlining constant with different constant siblings idx#50
Inlining constant with different constant siblings idx#15
Inlining constant with different constant siblings idx#27
Inlining constant with different constant siblings idx#39
Inlining constant with different constant siblings idx#51
Inlining constant with different constant siblings idx#16
Inlining constant with different constant siblings idx#28
Inlining constant with different constant siblings idx#40
Inlining constant with different constant siblings idx#52
Inlining constant with different constant siblings idx#17
Inlining constant with different constant siblings idx#29
Inlining constant with different constant siblings idx#41
Inlining constant with different constant siblings idx#53
Inlining constant with different constant siblings idx#18
Inlining constant with different constant siblings idx#30
Inlining constant with different constant siblings idx#42
Inlining constant with different constant siblings idx#54
Constant inlined testUnsigned::$3 = 0
Constant inlined testUnsigned::$1 = TYPEID_BYTE
Constant inlined idx#34 = ++++(byte)$28*2
Constant inlined testUnsigned::$2 = TYPEID_BYTE
Constant inlined idx#33 = ++(byte)$28*2
Constant inlined testUnsigned::$0 = 0
Constant inlined idx#9 = ++0
Constant inlined idx#6 = (byte)$28*3
Constant inlined idx#30 = ++++++++++++++++++++$28
Constant inlined idx#39 = ++++++++++++++(byte)$28*2
Constant inlined testUnsigned::$9 = TYPEID_BYTE
Constant inlined testUnsigned::$7 = TYPEID_BYTE
Constant inlined idx#36 = ++++++++(byte)$28*2
Constant inlined idx#35 = ++++++(byte)$28*2
Constant inlined testUnsigned::$5 = TYPEID_BYTE
Constant inlined idx#38 = ++++++++++++(byte)$28*2
Constant inlined idx#37 = ++++++++++(byte)$28*2
Constant inlined testUnsigned::$17 = TYPEID_BYTE
Constant inlined testUnsigned::$15 = TYPEID_BYTE
Constant inlined idx#4 = (byte)$28*2
Constant inlined idx#2 = $28
Constant inlined idx#0 = 0
Constant inlined idx#21 = ++$28
Constant inlined idx#23 = ++++++$28
Constant inlined idx#22 = ++++$28
Constant inlined idx#29 = ++++++++++++++++++$28
Constant inlined idx#28 = ++++++++++++++++$28
Constant inlined idx#25 = ++++++++++$28
Constant inlined idx#24 = ++++++++$28
Constant inlined idx#27 = ++++++++++++++$28
Constant inlined idx#26 = ++++++++++++$28
Constant inlined testUnsignedVals::$0 = testUnsignedVals::ubc1+$fa
Constant inlined testUnsignedVals::$1 = $fa+testUnsignedVals::ubc1
Constant inlined idx#10 = ++++0
Constant inlined idx#54 = ++++++++++++++++++++(byte)$28*3
Constant inlined idx#53 = ++++++++++++++++++(byte)$28*3
Constant inlined idx#12 = ++++++++0
Constant inlined idx#11 = ++++++0
Constant inlined idx#50 = ++++++++++++(byte)$28*3
Constant inlined idx#52 = ++++++++++++++++(byte)$28*3
Constant inlined idx#51 = ++++++++++++++(byte)$28*3
Constant inlined idx#18 = ++++++++++++++++++++0
Constant inlined idx#17 = ++++++++++++++++++0
Constant inlined idx#14 = ++++++++++++0
Constant inlined idx#13 = ++++++++++0
Constant inlined idx#16 = ++++++++++++++++0
Constant inlined idx#15 = ++++++++++++++0
Constant inlined testSigned::$7 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$9 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$2 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$17 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$3 = 0
Constant inlined idx#42 = ++++++++++++++++++++(byte)$28*2
Constant inlined idx#45 = ++(byte)$28*3
Constant inlined testSigned::$5 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$13 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$0 = 0
Constant inlined idx#41 = ++++++++++++++++++(byte)$28*2
Constant inlined testSigned::$1 = TYPEID_SIGNED_BYTE
Constant inlined testSigned::$15 = TYPEID_SIGNED_BYTE
Constant inlined idx#40 = ++++++++++++++++(byte)$28*2
Constant inlined testUnsigned::$13 = TYPEID_BYTE
Constant inlined testUnsigned::$11 = TYPEID_BYTE
Constant inlined testSignedVals::$1 = -$78+testSignedVals::sbc1
Constant inlined testSigned::$11 = TYPEID_SIGNED_BYTE
Constant inlined testSignedVals::$0 = testSignedVals::sbc1+-$78
Constant inlined idx#47 = ++++++(byte)$28*3
Constant inlined idx#46 = ++++(byte)$28*3
Constant inlined idx#49 = ++++++++++(byte)$28*3
Constant inlined idx#48 = ++++++++(byte)$28*3
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *(SCREEN+++0)
Consolidated array index constant in *(SCREEN+++++0)
Consolidated array index constant in *(SCREEN+++++++0)
Consolidated array index constant in *(SCREEN+++++++++0)
Consolidated array index constant in *(SCREEN+++++++++++0)
Consolidated array index constant in *(SCREEN+++++++++++++0)
Consolidated array index constant in *(SCREEN+++++++++++++++0)
Consolidated array index constant in *(SCREEN+++++++++++++++++0)
Consolidated array index constant in *(SCREEN+++++++++++++++++++0)
Consolidated array index constant in *(SCREEN+++++++++++++++++++++0)
Consolidated array index constant in *(SCREEN+$28)
Consolidated array index constant in *(SCREEN+++$28)
Consolidated array index constant in *(SCREEN+++++$28)
Consolidated array index constant in *(SCREEN+++++++$28)
Consolidated array index constant in *(SCREEN+++++++++$28)
Consolidated array index constant in *(SCREEN+++++++++++$28)
Consolidated array index constant in *(SCREEN+++++++++++++$28)
Consolidated array index constant in *(SCREEN+++++++++++++++$28)
Consolidated array index constant in *(SCREEN+++++++++++++++++$28)
Consolidated array index constant in *(SCREEN+++++++++++++++++++$28)
Consolidated array index constant in *(SCREEN+++++++++++++++++++++$28)
Consolidated array index constant in *(SCREEN+(byte)$28*2)
Consolidated array index constant in *(SCREEN+++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++++++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++++++++++++(byte)$28*2)
Consolidated array index constant in *(SCREEN+++++++++++++++++++++(byte)$28*2)
Consolidated array index constant in *(SSCREEN+(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++++++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++++++++++++(byte)$28*3)
Consolidated array index constant in *(SSCREEN+++++++++++++++++++++(byte)$28*3)
Successful SSA optimization Pass2ConstantAdditionElimination
Simplifying constant integer increment ++0
Simplifying constant integer increment ++0
Simplifying constant integer increment ++1
Simplifying constant integer increment ++2
Simplifying constant integer increment ++3
Simplifying constant integer increment ++4
Simplifying constant integer increment ++5
Simplifying constant integer increment ++6
Simplifying constant integer increment ++7
Simplifying constant integer increment ++8
Simplifying constant integer increment ++$28
Simplifying constant integer increment ++$28
Simplifying constant integer increment ++$29
Simplifying constant integer increment ++$2a
Simplifying constant integer increment ++$2b
Simplifying constant integer increment ++$2c
Simplifying constant integer increment ++$2d
Simplifying constant integer increment ++$2e
Simplifying constant integer increment ++$2f
Simplifying constant integer increment ++$30
Successful SSA optimization Pass2ConstantSimplification
Simplifying constant integer increment ++1
Simplifying constant integer increment ++2
Simplifying constant integer increment ++3
Simplifying constant integer increment ++4
Simplifying constant integer increment ++5
Simplifying constant integer increment ++6
Simplifying constant integer increment ++7
Simplifying constant integer increment ++8
Simplifying constant integer increment ++9
Simplifying constant integer increment ++$29
Simplifying constant integer increment ++$2a
Simplifying constant integer increment ++$2b
Simplifying constant integer increment ++$2c
Simplifying constant integer increment ++$2d
Simplifying constant integer increment ++$2e
Simplifying constant integer increment ++$2f
Simplifying constant integer increment ++$30
Simplifying constant integer increment ++$31
Successful SSA optimization Pass2ConstantSimplification
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $78
Finalized unsigned number type (byte) $82
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 3
Finalized signed number type (signed byte) -$46
Finalized signed number type (signed byte) -$32
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying constant integer cast $78+$82
Simplifying constant integer cast $28*2
Simplifying constant integer cast $28*2
Simplifying constant integer cast $28*3
Simplifying constant integer cast $28*3
Simplifying constant integer cast -$46+-$32
Successful SSA optimization PassNCastSimplification
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
CALL GRAPH
Calls in [main] to testUnsigned:1 testUnsignedVals:3 testSigned:5 testSignedVals:7
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Culled Empty Block label main::@4
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@3
FINAL CONTROL FLOW GRAPH
void main()
main: scope:[main] from
[0] phi()
[1] call testUnsigned
to:main::@1
main::@1: scope:[main] from main
[2] phi()
[3] call testUnsignedVals
to:main::@2
main::@2: scope:[main] from main::@1
[4] phi()
[5] call testSigned
to:main::@3
main::@3: scope:[main] from main::@2
[6] phi()
[7] call testSignedVals
to:main::@return
main::@return: scope:[main] from main::@3
[8] return
to:@return
void testUnsigned()
testUnsigned: scope:[testUnsigned] from main
[9] *SCREEN = 0
[10] *(SCREEN+1) = TYPEID_BYTE
[11] *(SCREEN+2) = TYPEID_BYTE
[12] *(SCREEN+3) = 0
[13] *(SCREEN+4) = TYPEID_BYTE
[14] *(SCREEN+5) = TYPEID_BYTE
[15] *(SCREEN+6) = TYPEID_BYTE
[16] *(SCREEN+7) = TYPEID_BYTE
[17] *(SCREEN+8) = TYPEID_BYTE
[18] *(SCREEN+9) = TYPEID_BYTE
[19] *(SCREEN+$a) = TYPEID_BYTE
to:testUnsigned::@return
testUnsigned::@return: scope:[testUnsigned] from testUnsigned
[20] return
to:@return
void testUnsignedVals()
testUnsignedVals: scope:[testUnsignedVals] from main::@1
[21] testUnsignedVals::ubv1 = $fa
[22] *(SCREEN+$28) = $fa
[23] *(SCREEN+$29) = testUnsignedVals::ubc1
[24] *(SCREEN+$2a) = testUnsignedVals::ubv1
[25] *(SCREEN+$2b) = $78+$82
[26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa
[27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1
[28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
[29] *(SCREEN+$2e) = testUnsignedVals::$2
[30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
[31] *(SCREEN+$2f) = testUnsignedVals::$3
[32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1
[33] *(SCREEN+$30) = testUnsignedVals::$4
[34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1
[35] *(SCREEN+$31) = testUnsignedVals::$5
[36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1
[37] *(SCREEN+$32) = testUnsignedVals::$6
to:testUnsignedVals::@return
testUnsignedVals::@return: scope:[testUnsignedVals] from testUnsignedVals
[38] return
to:@return
void testSigned()
testSigned: scope:[testSigned] from main::@2
[39] *(SCREEN+$28*2) = 0
[40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE
[41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE
[42] *(SCREEN+++++++$28*2) = 0
[43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE
[44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE
[45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE
[46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
[47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
[48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
[49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
to:testSigned::@return
testSigned::@return: scope:[testSigned] from testSigned
[50] return
to:@return
void testSignedVals()
testSignedVals: scope:[testSignedVals] from main::@3
[51] testSignedVals::sbv1 = -$78
[52] *(SSCREEN+$28*3) = -$78
[53] *(SSCREEN+++$28*3) = testSignedVals::sbc1
[54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1
[55] *(SSCREEN+++++++$28*3) = -$46+-$32
[56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78
[57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1
[58] testSignedVals::$2 = testSignedVals::sbv1 + -$78
[59] *(SSCREEN+++++++++++++$28*3) = testSignedVals::$2
[60] testSignedVals::$3 = -$78 + testSignedVals::sbv1
[61] *(SSCREEN+++++++++++++++$28*3) = testSignedVals::$3
[62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1
[63] *(SSCREEN+++++++++++++++++$28*3) = testSignedVals::$4
[64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1
[65] *(SSCREEN+++++++++++++++++++$28*3) = testSignedVals::$5
[66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1
[67] *(SSCREEN+++++++++++++++++++++$28*3) = testSignedVals::$6
to:testSignedVals::@return
testSignedVals::@return: scope:[testSignedVals] from testSignedVals
[68] return
to:@return
VARIABLE REGISTER WEIGHTS
byte idx
void main()
void testSigned()
void testSignedVals()
signed byte~ testSignedVals::$2 22.0
signed byte~ testSignedVals::$3 22.0
signed byte~ testSignedVals::$4 22.0
signed byte~ testSignedVals::$5 22.0
signed byte~ testSignedVals::$6 22.0
volatile signed byte testSignedVals::sbv1 loadstore 5.866666666666666
void testUnsigned()
void testUnsignedVals()
byte~ testUnsignedVals::$2 22.0
byte~ testUnsignedVals::$3 22.0
byte~ testUnsignedVals::$4 22.0
byte~ testUnsignedVals::$5 22.0
byte~ testUnsignedVals::$6 22.0
volatile byte testUnsignedVals::ubv1 loadstore 5.866666666666666
Initial phi equivalence classes
Added variable testUnsignedVals::ubv1 to live range equivalence class [ testUnsignedVals::ubv1 ]
Added variable testUnsignedVals::$2 to live range equivalence class [ testUnsignedVals::$2 ]
Added variable testUnsignedVals::$3 to live range equivalence class [ testUnsignedVals::$3 ]
Added variable testUnsignedVals::$4 to live range equivalence class [ testUnsignedVals::$4 ]
Added variable testUnsignedVals::$5 to live range equivalence class [ testUnsignedVals::$5 ]
Added variable testUnsignedVals::$6 to live range equivalence class [ testUnsignedVals::$6 ]
Added variable testSignedVals::sbv1 to live range equivalence class [ testSignedVals::sbv1 ]
Added variable testSignedVals::$2 to live range equivalence class [ testSignedVals::$2 ]
Added variable testSignedVals::$3 to live range equivalence class [ testSignedVals::$3 ]
Added variable testSignedVals::$4 to live range equivalence class [ testSignedVals::$4 ]
Added variable testSignedVals::$5 to live range equivalence class [ testSignedVals::$5 ]
Added variable testSignedVals::$6 to live range equivalence class [ testSignedVals::$6 ]
Complete equivalence classes
[ testUnsignedVals::ubv1 ]
[ testUnsignedVals::$2 ]
[ testUnsignedVals::$3 ]
[ testUnsignedVals::$4 ]
[ testUnsignedVals::$5 ]
[ testUnsignedVals::$6 ]
[ testSignedVals::sbv1 ]
[ testSignedVals::$2 ]
[ testSignedVals::$3 ]
[ testSignedVals::$4 ]
[ testSignedVals::$5 ]
[ testSignedVals::$6 ]
Allocated zp[1]:2 [ testUnsignedVals::ubv1 ]
Allocated zp[1]:3 [ testUnsignedVals::$2 ]
Allocated zp[1]:4 [ testUnsignedVals::$3 ]
Allocated zp[1]:5 [ testUnsignedVals::$4 ]
Allocated zp[1]:6 [ testUnsignedVals::$5 ]
Allocated zp[1]:7 [ testUnsignedVals::$6 ]
Allocated zp[1]:8 [ testSignedVals::sbv1 ]
Allocated zp[1]:9 [ testSignedVals::$2 ]
Allocated zp[1]:10 [ testSignedVals::$3 ]
Allocated zp[1]:11 [ testSignedVals::$4 ]
Allocated zp[1]:12 [ testSignedVals::$5 ]
Allocated zp[1]:13 [ testSignedVals::$6 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [9] *SCREEN = 0 [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [10] *(SCREEN+1) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [11] *(SCREEN+2) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [12] *(SCREEN+3) = 0 [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [13] *(SCREEN+4) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [14] *(SCREEN+5) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [15] *(SCREEN+6) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [16] *(SCREEN+7) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [17] *(SCREEN+8) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [18] *(SCREEN+9) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [19] *(SCREEN+$a) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
Statement [21] testUnsignedVals::ubv1 = $fa [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [22] *(SCREEN+$28) = $fa [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [23] *(SCREEN+$29) = testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [24] *(SCREEN+$2a) = testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [25] *(SCREEN+$2b) = $78+$82 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
Statement [28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] { } ) always clobbers reg byte a
Statement [30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] { } ) always clobbers reg byte a
Statement [32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] { } ) always clobbers reg byte a
Statement [34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] { } ) always clobbers reg byte a
Statement [36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1 [ testUnsignedVals::$6 ] ( testUnsignedVals:3 [ testUnsignedVals::$6 ] { } ) always clobbers reg byte a
Statement [39] *(SCREEN+$28*2) = 0 [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [42] *(SCREEN+++++++$28*2) = 0 [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
Statement [51] testSignedVals::sbv1 = -$78 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [52] *(SSCREEN+$28*3) = -$78 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [53] *(SSCREEN+++$28*3) = testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [55] *(SSCREEN+++++++$28*3) = -$46+-$32 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
Statement [58] testSignedVals::$2 = testSignedVals::sbv1 + -$78 [ testSignedVals::sbv1 testSignedVals::$2 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$2 ] { } ) always clobbers reg byte a
Statement [60] testSignedVals::$3 = -$78 + testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$3 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$3 ] { } ) always clobbers reg byte a
Statement [62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1 [ testSignedVals::sbv1 testSignedVals::$4 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$4 ] { } ) always clobbers reg byte a
Statement [64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$5 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$5 ] { } ) always clobbers reg byte a
Statement [66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1 [ testSignedVals::$6 ] ( testSignedVals:7 [ testSignedVals::$6 ] { } ) always clobbers reg byte a
Potential registers zp[1]:2 [ testUnsignedVals::ubv1 ] : zp[1]:2 ,
Potential registers zp[1]:3 [ testUnsignedVals::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:4 [ testUnsignedVals::$3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:5 [ testUnsignedVals::$4 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:6 [ testUnsignedVals::$5 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:7 [ testUnsignedVals::$6 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:8 [ testSignedVals::sbv1 ] : zp[1]:8 ,
Potential registers zp[1]:9 [ testSignedVals::$2 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:10 [ testSignedVals::$3 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:11 [ testSignedVals::$4 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:12 [ testSignedVals::$5 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
Potential registers zp[1]:13 [ testSignedVals::$6 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [testUnsignedVals] 22: zp[1]:3 [ testUnsignedVals::$2 ] 22: zp[1]:4 [ testUnsignedVals::$3 ] 22: zp[1]:5 [ testUnsignedVals::$4 ] 22: zp[1]:6 [ testUnsignedVals::$5 ] 22: zp[1]:7 [ testUnsignedVals::$6 ] 5.87: zp[1]:2 [ testUnsignedVals::ubv1 ]
Uplift Scope [testSignedVals] 22: zp[1]:9 [ testSignedVals::$2 ] 22: zp[1]:10 [ testSignedVals::$3 ] 22: zp[1]:11 [ testSignedVals::$4 ] 22: zp[1]:12 [ testSignedVals::$5 ] 22: zp[1]:13 [ testSignedVals::$6 ] 5.87: zp[1]:8 [ testSignedVals::sbv1 ]
Uplift Scope [main]
Uplift Scope [testUnsigned]
Uplift Scope [testSigned]
Uplift Scope []
Uplifting [testUnsignedVals] best 424 combination reg byte x [ testUnsignedVals::$2 ] reg byte x [ testUnsignedVals::$3 ] reg byte a [ testUnsignedVals::$4 ] reg byte a [ testUnsignedVals::$5 ] zp[1]:7 [ testUnsignedVals::$6 ] zp[1]:2 [ testUnsignedVals::ubv1 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [testSignedVals] best 404 combination reg byte x [ testSignedVals::$2 ] reg byte x [ testSignedVals::$3 ] reg byte a [ testSignedVals::$4 ] reg byte a [ testSignedVals::$5 ] zp[1]:13 [ testSignedVals::$6 ] zp[1]:8 [ testSignedVals::sbv1 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [main] best 404 combination
Uplifting [testUnsigned] best 404 combination
Uplifting [testSigned] best 404 combination
Uplifting [] best 404 combination
Attempting to uplift remaining variables inzp[1]:7 [ testUnsignedVals::$6 ]
Uplifting [testUnsignedVals] best 398 combination reg byte a [ testUnsignedVals::$6 ]
Attempting to uplift remaining variables inzp[1]:13 [ testSignedVals::$6 ]
Uplifting [testSignedVals] best 392 combination reg byte a [ testSignedVals::$6 ]
Attempting to uplift remaining variables inzp[1]:2 [ testUnsignedVals::ubv1 ]
Uplifting [testUnsignedVals] best 392 combination zp[1]:2 [ testUnsignedVals::ubv1 ]
Attempting to uplift remaining variables inzp[1]:8 [ testSignedVals::sbv1 ]
Uplifting [testSignedVals] best 392 combination zp[1]:8 [ testSignedVals::sbv1 ]
Allocated (was zp[1]:8) zp[1]:3 [ testSignedVals::sbv1 ]
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
// Test that plus creates the expected type for all legal combinations of bytes (signed/unsigned - constant/variable)
// Upstart
// Commodore 64 PRG executable file
.file [name="typeid-plus-bytes.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const TYPEID_BYTE = 1
.const TYPEID_SIGNED_BYTE = 2
.label SCREEN = $400
.label SSCREEN = $400
.segment Code
// main
main: {
// [1] call testUnsigned
jsr testUnsigned
// [2] phi from main to main::@1 [phi:main->main::@1]
__b1_from_main:
jmp __b1
// main::@1
__b1:
// [3] call testUnsignedVals
jsr testUnsignedVals
// [4] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
__b2_from___b1:
jmp __b2
// main::@2
__b2:
// [5] call testSigned
jsr testSigned
// [6] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
__b3_from___b2:
jmp __b3
// main::@3
__b3:
// [7] call testSignedVals
jsr testSignedVals
jmp __breturn
// main::@return
__breturn:
// [8] return
rts
}
// testUnsigned
testUnsigned: {
// [9] *SCREEN = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN
// [10] *(SCREEN+1) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+1
// [11] *(SCREEN+2) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+2
// [12] *(SCREEN+3) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN+3
// [13] *(SCREEN+4) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+4
// [14] *(SCREEN+5) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+5
// [15] *(SCREEN+6) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+6
// [16] *(SCREEN+7) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+7
// [17] *(SCREEN+8) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+8
// [18] *(SCREEN+9) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+9
// [19] *(SCREEN+$a) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+$a
jmp __breturn
// testUnsigned::@return
__breturn:
// [20] return
rts
}
// testUnsignedVals
testUnsignedVals: {
.const ubc1 = $fa
.label ubv1 = 2
// [21] testUnsignedVals::ubv1 = $fa -- vbuz1=vbuc1
lda #$fa
sta.z ubv1
// [22] *(SCREEN+$28) = $fa -- _deref_pbuc1=vbuc2
lda #$fa
sta SCREEN+$28
// [23] *(SCREEN+$29) = testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
lda #ubc1
sta SCREEN+$29
// [24] *(SCREEN+$2a) = testUnsignedVals::ubv1 -- _deref_pbuc1=vbuz1
lda.z ubv1
sta SCREEN+$2a
// [25] *(SCREEN+$2b) = $78+$82 -- _deref_pbuc1=vbuc2
lda #$78+$82
sta SCREEN+$2b
// [26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa -- _deref_pbuc1=vbuc2
lda #ubc1+$fa
sta SCREEN+$2c
// [27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
lda #$fa+ubc1
sta SCREEN+$2d
// [28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa -- vbuxx=vbuz1_plus_vbuc1
lax.z ubv1
axs #-[$fa]
// [29] *(SCREEN+$2e) = testUnsignedVals::$2 -- _deref_pbuc1=vbuxx
stx SCREEN+$2e
// [30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1 -- vbuxx=vbuc1_plus_vbuz1
lax.z ubv1
axs #-[$fa]
// [31] *(SCREEN+$2f) = testUnsignedVals::$3 -- _deref_pbuc1=vbuxx
stx SCREEN+$2f
// [32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1 -- vbuaa=vbuz1_plus_vbuc1
lda #ubc1
clc
adc.z ubv1
// [33] *(SCREEN+$30) = testUnsignedVals::$4 -- _deref_pbuc1=vbuaa
sta SCREEN+$30
// [34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1 -- vbuaa=vbuc1_plus_vbuz1
lda #ubc1
clc
adc.z ubv1
// [35] *(SCREEN+$31) = testUnsignedVals::$5 -- _deref_pbuc1=vbuaa
sta SCREEN+$31
// [36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1 -- vbuaa=vbuz1_plus_vbuz1
lda.z ubv1
asl
// [37] *(SCREEN+$32) = testUnsignedVals::$6 -- _deref_pbuc1=vbuaa
sta SCREEN+$32
jmp __breturn
// testUnsignedVals::@return
__breturn:
// [38] return
rts
}
// testSigned
testSigned: {
// [39] *(SCREEN+$28*2) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN+$28*2
// [40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1
// [41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1
// [42] *(SCREEN+++++++$28*2) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN+$28*2+1+1+1
// [43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1
// [44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1+1
// [45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1+1+1
// [46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1+1+1+1
// [47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1+1+1+1+1
// [48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1
// [49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1+1
jmp __breturn
// testSigned::@return
__breturn:
// [50] return
rts
}
// testSignedVals
testSignedVals: {
.const sbc1 = -$78
.label sbv1 = 3
// [51] testSignedVals::sbv1 = -$78 -- vbsz1=vbsc1
lda #-$78
sta.z sbv1
// [52] *(SSCREEN+$28*3) = -$78 -- _deref_pbsc1=vbsc2
lda #-$78
sta SSCREEN+$28*3
// [53] *(SSCREEN+++$28*3) = testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
lda #sbc1
sta SSCREEN+$28*3+1
// [54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1 -- _deref_pbsc1=vbsz1
lda.z sbv1
sta SSCREEN+$28*3+1+1
// [55] *(SSCREEN+++++++$28*3) = -$46+-$32 -- _deref_pbsc1=vbsc2
lda #-$46+-$32
sta SSCREEN+$28*3+1+1+1
// [56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78 -- _deref_pbsc1=vbsc2
lda #sbc1+-$78
sta SSCREEN+$28*3+1+1+1+1
// [57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
lda #-$78+sbc1
sta SSCREEN+$28*3+1+1+1+1+1
// [58] testSignedVals::$2 = testSignedVals::sbv1 + -$78 -- vbsxx=vbsz1_plus_vbsc1
lax.z sbv1
axs #-[-$78]
// [59] *(SSCREEN+++++++++++++$28*3) = testSignedVals::$2 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1
// [60] testSignedVals::$3 = -$78 + testSignedVals::sbv1 -- vbsxx=vbsc1_plus_vbsz1
lax.z sbv1
axs #-[-$78]
// [61] *(SSCREEN+++++++++++++++$28*3) = testSignedVals::$3 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1+1
// [62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1 -- vbsaa=vbsz1_plus_vbsc1
lda #sbc1
clc
adc.z sbv1
// [63] *(SSCREEN+++++++++++++++++$28*3) = testSignedVals::$4 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1
// [64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1 -- vbsaa=vbsc1_plus_vbsz1
lda #sbc1
clc
adc.z sbv1
// [65] *(SSCREEN+++++++++++++++++++$28*3) = testSignedVals::$5 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1
// [66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1 -- vbsaa=vbsz1_plus_vbsz1
lda.z sbv1
asl
// [67] *(SSCREEN+++++++++++++++++++++$28*3) = testSignedVals::$6 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1+1
jmp __breturn
// testSignedVals::@return
__breturn:
// [68] return
rts
}
// File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #TYPEID_BYTE
Removing instruction lda #$fa
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #TYPEID_SIGNED_BYTE
Removing instruction lda #-$78
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __b1_from_main:
Removing instruction __b2_from___b1:
Removing instruction __b3_from___b2:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
constant byte* const SCREEN = (byte*) 1024
constant signed byte* const SSCREEN = (signed byte*) 1024
constant byte TYPEID_BYTE = 1
constant byte TYPEID_SIGNED_BYTE = 2
byte idx
void main()
void testSigned()
void testSignedVals()
signed byte~ testSignedVals::$2 reg byte x 22.0
signed byte~ testSignedVals::$3 reg byte x 22.0
signed byte~ testSignedVals::$4 reg byte a 22.0
signed byte~ testSignedVals::$5 reg byte a 22.0
signed byte~ testSignedVals::$6 reg byte a 22.0
constant signed byte testSignedVals::sbc1 = -$78
volatile signed byte testSignedVals::sbv1 loadstore zp[1]:3 5.866666666666666
void testUnsigned()
void testUnsignedVals()
byte~ testUnsignedVals::$2 reg byte x 22.0
byte~ testUnsignedVals::$3 reg byte x 22.0
byte~ testUnsignedVals::$4 reg byte a 22.0
byte~ testUnsignedVals::$5 reg byte a 22.0
byte~ testUnsignedVals::$6 reg byte a 22.0
constant byte testUnsignedVals::ubc1 = $fa
volatile byte testUnsignedVals::ubv1 loadstore zp[1]:2 5.866666666666666
zp[1]:2 [ testUnsignedVals::ubv1 ]
reg byte x [ testUnsignedVals::$2 ]
reg byte x [ testUnsignedVals::$3 ]
reg byte a [ testUnsignedVals::$4 ]
reg byte a [ testUnsignedVals::$5 ]
reg byte a [ testUnsignedVals::$6 ]
zp[1]:3 [ testSignedVals::sbv1 ]
reg byte x [ testSignedVals::$2 ]
reg byte x [ testSignedVals::$3 ]
reg byte a [ testSignedVals::$4 ]
reg byte a [ testSignedVals::$5 ]
reg byte a [ testSignedVals::$6 ]
FINAL ASSEMBLER
Score: 336
// File Comments
// Test that plus creates the expected type for all legal combinations of bytes (signed/unsigned - constant/variable)
// Upstart
// Commodore 64 PRG executable file
.file [name="typeid-plus-bytes.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const TYPEID_BYTE = 1
.const TYPEID_SIGNED_BYTE = 2
.label SCREEN = $400
.label SSCREEN = $400
.segment Code
// main
main: {
// testUnsigned()
// [1] call testUnsigned
jsr testUnsigned
// [2] phi from main to main::@1 [phi:main->main::@1]
// main::@1
// testUnsignedVals()
// [3] call testUnsignedVals
jsr testUnsignedVals
// [4] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
// main::@2
// testSigned()
// [5] call testSigned
jsr testSigned
// [6] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
// main::@3
// testSignedVals()
// [7] call testSignedVals
jsr testSignedVals
// main::@return
// }
// [8] return
rts
}
// testUnsigned
testUnsigned: {
// SCREEN[idx++] = typeid(250)
// [9] *SCREEN = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN
// SCREEN[idx++] = typeid(ubc1)
// [10] *(SCREEN+1) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+1
// SCREEN[idx++] = typeid(ubv1)
// [11] *(SCREEN+2) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+2
// SCREEN[idx++] = typeid(120+130)
// [12] *(SCREEN+3) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN+3
// SCREEN[idx++] = typeid(ubc1+250)
// [13] *(SCREEN+4) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_BYTE
sta SCREEN+4
// SCREEN[idx++] = typeid(250+ubc1)
// [14] *(SCREEN+5) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+5
// SCREEN[idx++] = typeid(ubv1+250)
// [15] *(SCREEN+6) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+6
// SCREEN[idx++] = typeid(250+ubv1)
// [16] *(SCREEN+7) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+7
// SCREEN[idx++] = typeid(ubv1+ubc1)
// [17] *(SCREEN+8) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+8
// SCREEN[idx++] = typeid(ubc1+ubv1)
// [18] *(SCREEN+9) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+9
// SCREEN[idx++] = typeid(ubv1+ubv1)
// [19] *(SCREEN+$a) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$a
// testUnsigned::@return
// }
// [20] return
rts
}
// testUnsignedVals
testUnsignedVals: {
.const ubc1 = $fa
.label ubv1 = 2
// volatile unsigned byte ubv1 = 250
// [21] testUnsignedVals::ubv1 = $fa -- vbuz1=vbuc1
lda #$fa
sta.z ubv1
// SCREEN[idx++] = 250
// [22] *(SCREEN+$28) = $fa -- _deref_pbuc1=vbuc2
sta SCREEN+$28
// SCREEN[idx++] = ubc1
// [23] *(SCREEN+$29) = testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
lda #ubc1
sta SCREEN+$29
// SCREEN[idx++] = ubv1
// [24] *(SCREEN+$2a) = testUnsignedVals::ubv1 -- _deref_pbuc1=vbuz1
lda.z ubv1
sta SCREEN+$2a
// SCREEN[idx++] = 120+130
// [25] *(SCREEN+$2b) = $78+$82 -- _deref_pbuc1=vbuc2
lda #$78+$82
sta SCREEN+$2b
// SCREEN[idx++] = ubc1+250
// [26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa -- _deref_pbuc1=vbuc2
lda #ubc1+$fa
sta SCREEN+$2c
// SCREEN[idx++] = 250+ubc1
// [27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
lda #$fa+ubc1
sta SCREEN+$2d
// ubv1+250
// [28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa -- vbuxx=vbuz1_plus_vbuc1
lax.z ubv1
axs #-[$fa]
// SCREEN[idx++] = ubv1+250
// [29] *(SCREEN+$2e) = testUnsignedVals::$2 -- _deref_pbuc1=vbuxx
stx SCREEN+$2e
// 250+ubv1
// [30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1 -- vbuxx=vbuc1_plus_vbuz1
lax.z ubv1
axs #-[$fa]
// SCREEN[idx++] = 250+ubv1
// [31] *(SCREEN+$2f) = testUnsignedVals::$3 -- _deref_pbuc1=vbuxx
stx SCREEN+$2f
// ubv1+ubc1
// [32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1 -- vbuaa=vbuz1_plus_vbuc1
lda #ubc1
clc
adc.z ubv1
// SCREEN[idx++] = ubv1+ubc1
// [33] *(SCREEN+$30) = testUnsignedVals::$4 -- _deref_pbuc1=vbuaa
sta SCREEN+$30
// ubc1+ubv1
// [34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1 -- vbuaa=vbuc1_plus_vbuz1
lda #ubc1
clc
adc.z ubv1
// SCREEN[idx++] = ubc1+ubv1
// [35] *(SCREEN+$31) = testUnsignedVals::$5 -- _deref_pbuc1=vbuaa
sta SCREEN+$31
// ubv1+ubv1
// [36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1 -- vbuaa=vbuz1_plus_vbuz1
lda.z ubv1
asl
// SCREEN[idx++] = ubv1+ubv1
// [37] *(SCREEN+$32) = testUnsignedVals::$6 -- _deref_pbuc1=vbuaa
sta SCREEN+$32
// testUnsignedVals::@return
// }
// [38] return
rts
}
// testSigned
testSigned: {
// SCREEN[idx++] = typeid(-120)
// [39] *(SCREEN+$28*2) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN+$28*2
// SCREEN[idx++] = typeid(sbc1)
// [40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1
// SCREEN[idx++] = typeid(sbv1)
// [41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1
// SCREEN[idx++] = typeid(-120+-130)
// [42] *(SCREEN+++++++$28*2) = 0 -- _deref_pbuc1=vbuc2
lda #0
sta SCREEN+$28*2+1+1+1
// SCREEN[idx++] = typeid(sbc1+-120)
// [43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
lda #TYPEID_SIGNED_BYTE
sta SCREEN+$28*2+1+1+1+1
// SCREEN[idx++] = typeid(-120+sbc1)
// [44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1+1+1+1
// SCREEN[idx++] = typeid(sbv1+-120)
// [45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1+1+1+1+1
// SCREEN[idx++] = typeid(-120+sbv1)
// [46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1+1+1+1+1+1
// SCREEN[idx++] = typeid(sbv1+sbc1)
// [47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1+1+1+1+1+1+1
// SCREEN[idx++] = typeid(sbc1+sbv1)
// [48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1
// SCREEN[idx++] = typeid(sbv1+sbv1)
// [49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1+1
// testSigned::@return
// }
// [50] return
rts
}
// testSignedVals
testSignedVals: {
.const sbc1 = -$78
.label sbv1 = 3
// volatile signed byte sbv1 = -120
// [51] testSignedVals::sbv1 = -$78 -- vbsz1=vbsc1
lda #-$78
sta.z sbv1
// SSCREEN[idx++] = (-120)
// [52] *(SSCREEN+$28*3) = -$78 -- _deref_pbsc1=vbsc2
sta SSCREEN+$28*3
// SSCREEN[idx++] = (sbc1)
// [53] *(SSCREEN+++$28*3) = testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
lda #sbc1
sta SSCREEN+$28*3+1
// SSCREEN[idx++] = (sbv1)
// [54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1 -- _deref_pbsc1=vbsz1
lda.z sbv1
sta SSCREEN+$28*3+1+1
// SSCREEN[idx++] = (-70+-50)
// [55] *(SSCREEN+++++++$28*3) = -$46+-$32 -- _deref_pbsc1=vbsc2
lda #-$46+-$32
sta SSCREEN+$28*3+1+1+1
// SSCREEN[idx++] = (sbc1+-120)
// [56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78 -- _deref_pbsc1=vbsc2
lda #sbc1+-$78
sta SSCREEN+$28*3+1+1+1+1
// SSCREEN[idx++] = (-120+sbc1)
// [57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
lda #-$78+sbc1
sta SSCREEN+$28*3+1+1+1+1+1
// sbv1+-120
// [58] testSignedVals::$2 = testSignedVals::sbv1 + -$78 -- vbsxx=vbsz1_plus_vbsc1
lax.z sbv1
axs #-[-$78]
// SSCREEN[idx++] = (sbv1+-120)
// [59] *(SSCREEN+++++++++++++$28*3) = testSignedVals::$2 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1
// -120+sbv1
// [60] testSignedVals::$3 = -$78 + testSignedVals::sbv1 -- vbsxx=vbsc1_plus_vbsz1
lax.z sbv1
axs #-[-$78]
// SSCREEN[idx++] = (-120+sbv1)
// [61] *(SSCREEN+++++++++++++++$28*3) = testSignedVals::$3 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1+1
// sbv1+sbc1
// [62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1 -- vbsaa=vbsz1_plus_vbsc1
lda #sbc1
clc
adc.z sbv1
// SSCREEN[idx++] = (sbv1+sbc1)
// [63] *(SSCREEN+++++++++++++++++$28*3) = testSignedVals::$4 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1
// sbc1+sbv1
// [64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1 -- vbsaa=vbsc1_plus_vbsz1
lda #sbc1
clc
adc.z sbv1
// SSCREEN[idx++] = (sbc1+sbv1)
// [65] *(SSCREEN+++++++++++++++++++$28*3) = testSignedVals::$5 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1
// sbv1+sbv1
// [66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1 -- vbsaa=vbsz1_plus_vbsz1
lda.z sbv1
asl
// SSCREEN[idx++] = (sbv1+sbv1)
// [67] *(SSCREEN+++++++++++++++++++++$28*3) = testSignedVals::$6 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1+1
// testSignedVals::@return
// }
// [68] return
rts
}
// File Data