1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-01-09 05:33:11 +00:00

Removed main return value

This commit is contained in:
jespergravgaard 2020-02-02 10:24:44 +01:00
parent 98ee476b5b
commit 9db24ceb01
4 changed files with 97 additions and 121 deletions

View File

@ -42,7 +42,7 @@ unsigned int sum(void) {
return s;
}
int main(void) {
void main(void) {
unsigned int i;
unsigned char c;
start();
@ -54,5 +54,4 @@ int main(void) {
print_char((byte)sum());
}
end();
return 0;
}

View File

@ -14,14 +14,14 @@
@end: scope:[] from @3
[5] phi()
(signed word()) main()
(void()) main()
main: scope:[main] from @3
[6] phi()
[7] call start
to:main::@1
main::@1: scope:[main] from main main::@7
[8] (byte) main::c#8 ← phi( main::@7/(byte) main::c#2 main/(byte) 0 )
[8] (byte*) print_char_cursor#49 ← phi( main::@7/(byte*) print_char_cursor#10 main/(byte*) 1024 )
[8] (byte) main::c#8 ← phi( main/(byte) 0 main::@7/(byte) main::c#2 )
[8] (byte*) print_char_cursor#49 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#10 )
[9] call init
to:main::@2
main::@2: scope:[main] from main::@1 main::@5

View File

@ -73,7 +73,6 @@ Culled Empty Block (label) sum::@5
Culled Empty Block (label) sum::@6
Culled Empty Block (label) sum::@7
Culled Empty Block (label) @50
Culled Empty Block (label) main::@5
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
@ -162,9 +161,9 @@ print_byte::@return: scope:[print_byte] from print_byte::@2
to:@return
(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char] from main::@9 print_byte print_byte::@1
(byte*) print_char_cursor#26 ← phi( main::@9/(byte*) print_char_cursor#38 print_byte/(byte*) print_char_cursor#37 print_byte::@1/(byte*) print_char_cursor#6 )
(byte) print_char::ch#3 ← phi( main::@9/(byte) print_char::ch#2 print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
print_char: scope:[print_char] from main::@8 print_byte print_byte::@1
(byte*) print_char_cursor#26 ← phi( main::@8/(byte*) print_char_cursor#38 print_byte/(byte*) print_char_cursor#37 print_byte::@1/(byte*) print_char_cursor#6 )
(byte) print_char::ch#3 ← phi( main::@8/(byte) print_char::ch#2 print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
*((byte*) print_char_cursor#26) ← (byte) print_char::ch#3
(byte*) print_char_cursor#9 ← ++ (byte*) print_char_cursor#26
to:print_char::@return
@ -354,7 +353,7 @@ sum::@return: scope:[sum] from sum::@3
return
to:@return
(signed word()) main()
(void()) main()
main: scope:[main] from @51
(byte*) print_line_cursor#33 ← phi( @51/(byte*) print_line_cursor#19 )
(word) Ticks#26 ← phi( @51/(word) Ticks#14 )
@ -366,30 +365,30 @@ main: scope:[main] from @51
(word) main::i#0 ← (word) 0
(byte) main::c#0 ← (byte) 0
call start
to:main::@6
main::@6: scope:[main] from main
to:main::@5
main::@5: scope:[main] from main
(byte*) print_line_cursor#32 ← phi( main/(byte*) print_line_cursor#33 )
(word) Ticks#25 ← phi( main/(word) Ticks#26 )
(word) last_time#25 ← phi( main/(word) last_time#26 )
(byte*) print_char_cursor#51 ← phi( main/(byte*) print_char_cursor#52 )
(struct node*) root#24 ← phi( main/(struct node*) root#26 )
(word) free_#26 ← phi( main/(word) free_#28 )
(struct node*) root#23 ← phi( main/(struct node*) root#26 )
(word) free_#25 ← phi( main/(word) free_#28 )
(word) rand_seed#12 ← phi( main/(word) rand_seed#1 )
(word) rand_seed#5 ← (word) rand_seed#12
(byte) main::c#1 ← (number) 0
to:main::@1
main::@1: scope:[main] from main::@10 main::@6
(byte*) print_line_cursor#31 ← phi( main::@10/(byte*) print_line_cursor#21 main::@6/(byte*) print_line_cursor#32 )
(word) rand_seed#29 ← phi( main::@10/(word) rand_seed#22 main::@6/(word) rand_seed#5 )
(word) Ticks#24 ← phi( main::@10/(word) Ticks#16 main::@6/(word) Ticks#25 )
(word) last_time#24 ← phi( main::@10/(word) last_time#16 main::@6/(word) last_time#25 )
(byte) main::c#9 ← phi( main::@10/(byte) main::c#2 main::@6/(byte) main::c#1 )
(byte*) print_char_cursor#50 ← phi( main::@10/(byte*) print_char_cursor#14 main::@6/(byte*) print_char_cursor#51 )
(struct node*) root#19 ← phi( main::@10/(struct node*) root#23 main::@6/(struct node*) root#24 )
(word) free_#21 ← phi( main::@10/(word) free_#25 main::@6/(word) free_#26 )
main::@1: scope:[main] from main::@5 main::@9
(byte*) print_line_cursor#31 ← phi( main::@5/(byte*) print_line_cursor#32 main::@9/(byte*) print_line_cursor#21 )
(word) rand_seed#29 ← phi( main::@5/(word) rand_seed#5 main::@9/(word) rand_seed#22 )
(word) Ticks#24 ← phi( main::@5/(word) Ticks#25 main::@9/(word) Ticks#16 )
(word) last_time#24 ← phi( main::@5/(word) last_time#25 main::@9/(word) last_time#16 )
(byte) main::c#9 ← phi( main::@5/(byte) main::c#1 main::@9/(byte) main::c#2 )
(byte*) print_char_cursor#50 ← phi( main::@5/(byte*) print_char_cursor#51 main::@9/(byte*) print_char_cursor#14 )
(struct node*) root#19 ← phi( main::@5/(struct node*) root#23 main::@9/(struct node*) root#24 )
(word) free_#21 ← phi( main::@5/(word) free_#25 main::@9/(word) free_#26 )
call init
to:main::@7
main::@7: scope:[main] from main::@1
to:main::@6
main::@6: scope:[main] from main::@1
(byte*) print_line_cursor#30 ← phi( main::@1/(byte*) print_line_cursor#31 )
(word) rand_seed#28 ← phi( main::@1/(word) rand_seed#29 )
(word) Ticks#23 ← phi( main::@1/(word) Ticks#24 )
@ -402,20 +401,20 @@ main::@7: scope:[main] from main::@1
(struct node*) root#5 ← (struct node*) root#13
(word) main::i#1 ← (number) 0
to:main::@2
main::@2: scope:[main] from main::@7 main::@8
(byte*) print_line_cursor#29 ← phi( main::@7/(byte*) print_line_cursor#30 main::@8/(byte*) print_line_cursor#28 )
(word) rand_seed#27 ← phi( main::@7/(word) rand_seed#28 main::@8/(word) rand_seed#26 )
(word) Ticks#22 ← phi( main::@7/(word) Ticks#23 main::@8/(word) Ticks#21 )
(word) last_time#22 ← phi( main::@7/(word) last_time#23 main::@8/(word) last_time#21 )
(byte) main::c#7 ← phi( main::@7/(byte) main::c#8 main::@8/(byte) main::c#6 )
(byte*) print_char_cursor#48 ← phi( main::@7/(byte*) print_char_cursor#49 main::@8/(byte*) print_char_cursor#46 )
(struct node*) root#20 ← phi( main::@7/(struct node*) root#5 main::@8/(struct node*) root#6 )
(word) free_#22 ← phi( main::@7/(word) free_#7 main::@8/(word) free_#8 )
(word) main::i#3 ← phi( main::@7/(word) main::i#1 main::@8/(word) main::i#2 )
main::@2: scope:[main] from main::@6 main::@7
(byte*) print_line_cursor#29 ← phi( main::@6/(byte*) print_line_cursor#30 main::@7/(byte*) print_line_cursor#28 )
(word) rand_seed#27 ← phi( main::@6/(word) rand_seed#28 main::@7/(word) rand_seed#26 )
(word) Ticks#22 ← phi( main::@6/(word) Ticks#23 main::@7/(word) Ticks#21 )
(word) last_time#22 ← phi( main::@6/(word) last_time#23 main::@7/(word) last_time#21 )
(byte) main::c#7 ← phi( main::@6/(byte) main::c#8 main::@7/(byte) main::c#6 )
(byte*) print_char_cursor#48 ← phi( main::@6/(byte*) print_char_cursor#49 main::@7/(byte*) print_char_cursor#46 )
(struct node*) root#20 ← phi( main::@6/(struct node*) root#5 main::@7/(struct node*) root#6 )
(word) free_#22 ← phi( main::@6/(word) free_#7 main::@7/(word) free_#8 )
(word) main::i#3 ← phi( main::@6/(word) main::i#1 main::@7/(word) main::i#2 )
(word) prepend::x#0 ← (word) main::i#3
call prepend
to:main::@8
main::@8: scope:[main] from main::@2
to:main::@7
main::@7: scope:[main] from main::@2
(byte*) print_line_cursor#28 ← phi( main::@2/(byte*) print_line_cursor#29 )
(word) rand_seed#26 ← phi( main::@2/(word) rand_seed#27 )
(word) Ticks#21 ← phi( main::@2/(word) Ticks#22 )
@ -431,19 +430,19 @@ main::@8: scope:[main] from main::@2
(bool~) main::$4 ← (word) main::i#2 != rangelast(0,$bb7)
if((bool~) main::$4) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@8
(byte*) print_line_cursor#27 ← phi( main::@8/(byte*) print_line_cursor#28 )
(word) rand_seed#25 ← phi( main::@8/(word) rand_seed#26 )
(word) Ticks#20 ← phi( main::@8/(word) Ticks#21 )
(word) last_time#20 ← phi( main::@8/(word) last_time#21 )
(word) free_#30 ← phi( main::@8/(word) free_#8 )
(byte) main::c#5 ← phi( main::@8/(byte) main::c#6 )
(byte*) print_char_cursor#43 ← phi( main::@8/(byte*) print_char_cursor#46 )
(struct node*) root#18 ← phi( main::@8/(struct node*) root#6 )
main::@3: scope:[main] from main::@7
(byte*) print_line_cursor#27 ← phi( main::@7/(byte*) print_line_cursor#28 )
(word) rand_seed#25 ← phi( main::@7/(word) rand_seed#26 )
(word) Ticks#20 ← phi( main::@7/(word) Ticks#21 )
(word) last_time#20 ← phi( main::@7/(word) last_time#21 )
(word) free_#30 ← phi( main::@7/(word) free_#8 )
(byte) main::c#5 ← phi( main::@7/(byte) main::c#6 )
(byte*) print_char_cursor#43 ← phi( main::@7/(byte*) print_char_cursor#46 )
(struct node*) root#18 ← phi( main::@7/(struct node*) root#6 )
call sum
(word) sum::return#2 ← (word) sum::return#1
to:main::@9
main::@9: scope:[main] from main::@3
to:main::@8
main::@8: scope:[main] from main::@3
(byte*) print_line_cursor#25 ← phi( main::@3/(byte*) print_line_cursor#27 )
(word) rand_seed#24 ← phi( main::@3/(word) rand_seed#25 )
(word) Ticks#19 ← phi( main::@3/(word) Ticks#20 )
@ -457,32 +456,32 @@ main::@9: scope:[main] from main::@3
(byte~) main::$6 ← ((byte)) (word~) main::$5
(byte) print_char::ch#2 ← (byte~) main::$6
call print_char
to:main::@10
main::@10: scope:[main] from main::@9
(byte*) print_line_cursor#21 ← phi( main::@9/(byte*) print_line_cursor#25 )
(word) rand_seed#22 ← phi( main::@9/(word) rand_seed#24 )
(word) Ticks#16 ← phi( main::@9/(word) Ticks#19 )
(word) last_time#16 ← phi( main::@9/(word) last_time#19 )
(struct node*) root#23 ← phi( main::@9/(struct node*) root#27 )
(word) free_#25 ← phi( main::@9/(word) free_#29 )
(byte) main::c#3 ← phi( main::@9/(byte) main::c#4 )
(byte*) print_char_cursor#31 ← phi( main::@9/(byte*) print_char_cursor#10 )
to:main::@9
main::@9: scope:[main] from main::@8
(byte*) print_line_cursor#21 ← phi( main::@8/(byte*) print_line_cursor#25 )
(word) rand_seed#22 ← phi( main::@8/(word) rand_seed#24 )
(word) Ticks#16 ← phi( main::@8/(word) Ticks#19 )
(word) last_time#16 ← phi( main::@8/(word) last_time#19 )
(struct node*) root#24 ← phi( main::@8/(struct node*) root#27 )
(word) free_#26 ← phi( main::@8/(word) free_#29 )
(byte) main::c#3 ← phi( main::@8/(byte) main::c#4 )
(byte*) print_char_cursor#31 ← phi( main::@8/(byte*) print_char_cursor#10 )
(byte*) print_char_cursor#14 ← (byte*) print_char_cursor#31
(byte) main::c#2 ← (byte) main::c#3 + rangenext(0,4)
(bool~) main::$8 ← (byte) main::c#2 != rangelast(0,4)
if((bool~) main::$8) goto main::@1
to:main::@4
main::@4: scope:[main] from main::@10
(struct node*) root#25 ← phi( main::@10/(struct node*) root#23 )
(word) free_#27 ← phi( main::@10/(word) free_#25 )
(byte*) print_line_cursor#18 ← phi( main::@10/(byte*) print_line_cursor#21 )
(byte*) print_char_cursor#40 ← phi( main::@10/(byte*) print_char_cursor#14 )
(word) rand_seed#19 ← phi( main::@10/(word) rand_seed#22 )
(word) Ticks#13 ← phi( main::@10/(word) Ticks#16 )
(word) last_time#12 ← phi( main::@10/(word) last_time#16 )
main::@4: scope:[main] from main::@9
(struct node*) root#25 ← phi( main::@9/(struct node*) root#24 )
(word) free_#27 ← phi( main::@9/(word) free_#26 )
(byte*) print_line_cursor#18 ← phi( main::@9/(byte*) print_line_cursor#21 )
(byte*) print_char_cursor#40 ← phi( main::@9/(byte*) print_char_cursor#14 )
(word) rand_seed#19 ← phi( main::@9/(word) rand_seed#22 )
(word) Ticks#13 ← phi( main::@9/(word) Ticks#16 )
(word) last_time#12 ← phi( main::@9/(word) last_time#16 )
call end
to:main::@11
main::@11: scope:[main] from main::@4
to:main::@10
main::@10: scope:[main] from main::@4
(struct node*) root#21 ← phi( main::@4/(struct node*) root#25 )
(word) free_#23 ← phi( main::@4/(word) free_#27 )
(byte*) print_line_cursor#13 ← phi( main::@4/(byte*) print_line_cursor#4 )
@ -495,18 +494,15 @@ main::@11: scope:[main] from main::@4
(word) last_time#3 ← (word) last_time#9
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#32
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13
(signed word) main::return#0 ← (number) 0
to:main::@return
main::@return: scope:[main] from main::@11
(byte*) print_line_cursor#14 ← phi( main::@11/(byte*) print_line_cursor#5 )
(word) last_time#10 ← phi( main::@11/(word) last_time#3 )
(word) Ticks#10 ← phi( main::@11/(word) Ticks#4 )
(byte*) print_char_cursor#33 ← phi( main::@11/(byte*) print_char_cursor#15 )
(struct node*) root#15 ← phi( main::@11/(struct node*) root#21 )
(word) free_#18 ← phi( main::@11/(word) free_#23 )
(word) rand_seed#14 ← phi( main::@11/(word) rand_seed#6 )
(signed word) main::return#3 ← phi( main::@11/(signed word) main::return#0 )
(signed word) main::return#1 ← (signed word) main::return#3
main::@return: scope:[main] from main::@10
(byte*) print_line_cursor#14 ← phi( main::@10/(byte*) print_line_cursor#5 )
(word) last_time#10 ← phi( main::@10/(word) last_time#3 )
(word) Ticks#10 ← phi( main::@10/(word) Ticks#4 )
(byte*) print_char_cursor#33 ← phi( main::@10/(byte*) print_char_cursor#15 )
(struct node*) root#15 ← phi( main::@10/(struct node*) root#21 )
(word) free_#18 ← phi( main::@10/(word) free_#23 )
(word) rand_seed#14 ← phi( main::@10/(word) rand_seed#6 )
(word) rand_seed#7 ← (word) rand_seed#14
(word) free_#9 ← (word) free_#18
(struct node*) root#7 ← (struct node*) root#15
@ -525,7 +521,6 @@ main::@return: scope:[main] from main::@11
(word) free_#24 ← phi( @46/(word) free_#0 )
(word) rand_seed#20 ← phi( @46/(word) rand_seed#23 )
call main
(signed word) main::return#2 ← (signed word) main::return#1
to:@52
@52: scope:[] from @51
(byte*) print_line_cursor#15 ← phi( @51/(byte*) print_line_cursor#6 )
@ -670,17 +665,17 @@ SYMBOL TABLE SSA
(word) last_time#7
(word) last_time#8
(word) last_time#9
(signed word()) main()
(void()) main()
(bool~) main::$4
(word~) main::$5
(byte~) main::$6
(bool~) main::$8
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@8
@ -703,11 +698,6 @@ SYMBOL TABLE SSA
(word) main::i#2
(word) main::i#3
(word) main::i#4
(signed word) main::return
(signed word) main::return#0
(signed word) main::return#1
(signed word) main::return#2
(signed word) main::return#3
(struct node*) node::next
(word) node::value
(void()) prepend((word) prepend::x)
@ -949,7 +939,6 @@ Adding number conversion cast (unumber) 0 in (word) free_#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (word) sum::s#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::c#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (word) main::i#1 ← (number) 0
Adding number conversion cast (snumber) 0 in (signed word) main::return#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (word) rand_seed#0 ← (unumber)(number) $194a
Inlining cast (word) free_#1 ← (unumber)(number) 0
@ -958,7 +947,6 @@ Inlining cast (word) sum::s#1 ← (unumber)(number) 0
Inlining cast (byte) main::c#1 ← (unumber)(number) 0
Inlining cast (word) main::i#1 ← (unumber)(number) 0
Inlining cast (byte~) main::$6 ← (byte)(word~) main::$5
Inlining cast (signed word) main::return#0 ← (snumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $28
@ -970,7 +958,6 @@ Simplifying constant pointer cast (struct node*) 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 4
@ -980,7 +967,6 @@ Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized signed number type (signed byte) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f
Alias candidate removed (volatile)(word) last_time#6 = (word) Ticks#1 (word) last_time#7 (word) Ticks#7
@ -1018,8 +1004,8 @@ Alias (struct node*) prepend::new#1 = (struct node*~) prepend::$0
Alias (struct node*) root#11 = (struct node*) root#3 (struct node*) root#4
Alias (struct node*) sum::current#3 = (struct node*) sum::current#4
Alias (word) sum::s#3 = (word) sum::s#5 (word) sum::s#4 (word) sum::return#0 (word) sum::return#3 (word) sum::return#1
Alias (word) free_#26 = (word) free_#28
Alias (struct node*) root#24 = (struct node*) root#26
Alias (word) free_#25 = (word) free_#28
Alias (struct node*) root#23 = (struct node*) root#26
Alias (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52
Alias (word) last_time#25 = (word) last_time#26
Alias (word) Ticks#25 = (word) Ticks#26
@ -1040,8 +1026,8 @@ Alias (word) last_time#12 = (word) last_time#21 (word) last_time#22 (word) last_
Alias (word) Ticks#13 = (word) Ticks#21 (word) Ticks#22 (word) Ticks#20 (word) Ticks#19 (word) Ticks#16
Alias (word) rand_seed#19 = (word) rand_seed#26 (word) rand_seed#27 (word) rand_seed#25 (word) rand_seed#24 (word) rand_seed#22
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 (byte*) print_line_cursor#27 (byte*) print_line_cursor#25 (byte*) print_line_cursor#21
Alias (word) free_#17 = (word) free_#8 (word) free_#30 (word) free_#29 (word) free_#25 (word) free_#27 (word) free_#23 (word) free_#18 (word) free_#9
Alias (struct node*) root#14 = (struct node*) root#6 (struct node*) root#18 (struct node*) root#27 (struct node*) root#23 (struct node*) root#25 (struct node*) root#21 (struct node*) root#15 (struct node*) root#7
Alias (word) free_#17 = (word) free_#8 (word) free_#30 (word) free_#29 (word) free_#26 (word) free_#27 (word) free_#23 (word) free_#18 (word) free_#9
Alias (struct node*) root#14 = (struct node*) root#6 (struct node*) root#18 (struct node*) root#27 (struct node*) root#24 (struct node*) root#25 (struct node*) root#21 (struct node*) root#15 (struct node*) root#7
Alias (word) sum::return#2 = (word) sum::return#4
Alias (byte) print_char::ch#2 = (byte~) main::$6
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#31 (byte*) print_char_cursor#40
@ -1050,7 +1036,6 @@ Alias (word) rand_seed#13 = (word) rand_seed#6 (word) rand_seed#14 (word) rand_s
Alias (word) last_time#10 = (word) last_time#3 (word) last_time#9 (word) last_time#4
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#32 (byte*) print_char_cursor#33 (byte*) print_char_cursor#16
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#14 (byte*) print_line_cursor#6
Alias (signed word) main::return#0 = (signed word) main::return#3 (signed word) main::return#1
Alias (word) free_#0 = (word) free_#24
Alias (struct node*) root#0 = (struct node*) root#22
Alias (word) rand_seed#15 = (word) rand_seed#8
@ -1095,8 +1080,8 @@ Identical Phi Values (word) prepend::x#1 (word) prepend::x#0
Identical Phi Values (word) free_#14 (word) free_#13
Identical Phi Values (struct node*) root#12 (struct node*) root#14
Identical Phi Values (word) rand_seed#18 (word) rand_seed#20
Identical Phi Values (word) free_#26 (word) free_#0
Identical Phi Values (struct node*) root#24 (struct node*) root#0
Identical Phi Values (word) free_#25 (word) free_#0
Identical Phi Values (struct node*) root#23 (struct node*) root#0
Identical Phi Values (byte*) print_char_cursor#51 (byte*) print_char_cursor#0
Identical Phi Values (word) last_time#25 (word) last_time#0
Identical Phi Values (word) Ticks#25 (word) Ticks#0
@ -1152,9 +1137,6 @@ Constant (const word) main::i#0 = 0
Constant (const byte) main::c#0 = 0
Constant (const byte) main::c#1 = 0
Constant (const word) main::i#1 = 0
Constant (const signed word) main::return#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant (const signed word) main::return#2 = main::return#0
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value [155] main::i#2 ← ++ main::i#3 to ++
Resolved ranged comparison value [157] if(main::i#2!=rangelast(0,$bb7)) goto main::@2 to (number) $bb8
@ -1183,11 +1165,9 @@ Eliminating unused constant (const struct node*) sum::current#0
Eliminating unused constant (const word) sum::s#0
Eliminating unused constant (const word) main::i#0
Eliminating unused constant (const byte) main::c#0
Eliminating unused constant (const signed word) main::return#2
Eliminating unused constant (const byte) OFFSET_STRUCT_NODE_NEXT
Eliminating unused constant (const word) Ticks#0
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const signed word) main::return#0
Eliminating unused constant (const word) free_#0
Eliminating unused constant (const struct node*) root#0
Successful SSA optimization PassNEliminateUnusedVars
@ -1222,8 +1202,8 @@ Eliminating unused constant (const byte) SIZEOF_STRUCT_NODE
Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)(word) last_time#1 = (word) Ticks#2 (word) last_time#2
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting main::@12(between main::@10 and main::@1)
Added new block during phi lifting main::@13(between main::@8 and main::@2)
Added new block during phi lifting main::@11(between main::@9 and main::@1)
Added new block during phi lifting main::@12(between main::@7 and main::@2)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @46
@ -1231,11 +1211,11 @@ Adding NOP phi() at start of @51
Adding NOP phi() at start of @52
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of main::@6
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::@11
Adding NOP phi() at start of main::@10
Adding NOP phi() at start of end::@2
Adding NOP phi() at start of end::@3
Adding NOP phi() at start of print_ln
@ -1276,11 +1256,11 @@ Coalesced down to 11 phi equivalence classes
Culled Empty Block (label) @13
Culled Empty Block (label) @46
Culled Empty Block (label) @52
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@10
Culled Empty Block (label) main::@11
Culled Empty Block (label) main::@12
Culled Empty Block (label) main::@13
Culled Empty Block (label) end::@3
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_ln::@3
@ -1290,9 +1270,9 @@ Culled Empty Block (label) sum::@3
Renumbering block @43 to @1
Renumbering block @45 to @2
Renumbering block @51 to @3
Renumbering block main::@8 to main::@5
Renumbering block main::@9 to main::@6
Renumbering block main::@10 to main::@7
Renumbering block main::@7 to main::@5
Renumbering block main::@8 to main::@6
Renumbering block main::@9 to main::@7
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3
Adding NOP phi() at start of @end
@ -1321,14 +1301,14 @@ FINAL CONTROL FLOW GRAPH
@end: scope:[] from @3
[5] phi()
(signed word()) main()
(void()) main()
main: scope:[main] from @3
[6] phi()
[7] call start
to:main::@1
main::@1: scope:[main] from main main::@7
[8] (byte) main::c#8 ← phi( main::@7/(byte) main::c#2 main/(byte) 0 )
[8] (byte*) print_char_cursor#49 ← phi( main::@7/(byte*) print_char_cursor#10 main/(byte*) 1024 )
[8] (byte) main::c#8 ← phi( main/(byte) 0 main::@7/(byte) main::c#2 )
[8] (byte*) print_char_cursor#49 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#10 )
[9] call init
to:main::@2
main::@2: scope:[main] from main::@1 main::@5
@ -1517,7 +1497,7 @@ VARIABLE REGISTER WEIGHTS
(word) last_time#0 0.2608695652173913
(word) last_time#1 1.0
(word) last_time#2 20.0
(signed word()) main()
(void()) main()
(word~) main::$5 11.0
(byte) main::c
(byte) main::c#2 16.5
@ -1525,7 +1505,6 @@ VARIABLE REGISTER WEIGHTS
(word) main::i
(word) main::i#2 151.5
(word) main::i#3 101.0
(signed word) main::return
(struct node*) node::next
(word) node::value
(void()) prepend((word) prepend::x)
@ -2953,7 +2932,7 @@ FINAL SYMBOL TABLE
(word) last_time#0 last_time zp[2]:10 0.2608695652173913
(word) last_time#1 last_time zp[2]:10 1.0
(word) last_time#2 last_time zp[2]:10 20.0
(signed word()) main()
(void()) main()
(word~) main::$5 zp[2]:8 11.0
(label) main::@1
(label) main::@2
@ -2969,7 +2948,6 @@ FINAL SYMBOL TABLE
(word) main::i
(word) main::i#2 i zp[2]:4 151.5
(word) main::i#3 i zp[2]:4 101.0
(signed word) main::return
(struct node*) node::next
(word) node::value
(void()) prepend((word) prepend::x)

View File

@ -32,7 +32,7 @@
(word) last_time#0 last_time zp[2]:10 0.2608695652173913
(word) last_time#1 last_time zp[2]:10 1.0
(word) last_time#2 last_time zp[2]:10 20.0
(signed word()) main()
(void()) main()
(word~) main::$5 zp[2]:8 11.0
(label) main::@1
(label) main::@2
@ -48,7 +48,6 @@
(word) main::i
(word) main::i#2 i zp[2]:4 151.5
(word) main::i#3 i zp[2]:4 101.0
(signed word) main::return
(struct node*) node::next
(word) node::value
(void()) prepend((word) prepend::x)