1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-08-09 04:25:12 +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; return s;
} }
int main(void) { void main(void) {
unsigned int i; unsigned int i;
unsigned char c; unsigned char c;
start(); start();
@@ -54,5 +54,4 @@ int main(void) {
print_char((byte)sum()); print_char((byte)sum());
} }
end(); end();
return 0;
} }

View File

@@ -14,14 +14,14 @@
@end: scope:[] from @3 @end: scope:[] from @3
[5] phi() [5] phi()
(signed word()) main() (void()) main()
main: scope:[main] from @3 main: scope:[main] from @3
[6] phi() [6] phi()
[7] call start [7] call start
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@7 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) main::c#8 ← phi( main/(byte) 0 main::@7/(byte) main::c#2 )
[8] (byte*) print_char_cursor#49 ← phi( main::@7/(byte*) print_char_cursor#10 main/(byte*) 1024 ) [8] (byte*) print_char_cursor#49 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#10 )
[9] call init [9] call init
to:main::@2 to:main::@2
main::@2: scope:[main] from main::@1 main::@5 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::@6
Culled Empty Block (label) sum::@7 Culled Empty Block (label) sum::@7
Culled Empty Block (label) @50 Culled Empty Block (label) @50
Culled Empty Block (label) main::@5
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
@@ -162,9 +161,9 @@ print_byte::@return: scope:[print_byte] from print_byte::@2
to:@return to:@return
(void()) print_char((byte) print_char::ch) (void()) print_char((byte) print_char::ch)
print_char: scope:[print_char] from main::@9 print_byte print_byte::@1 print_char: scope:[print_char] from main::@8 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_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::@9/(byte) print_char::ch#2 print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) (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#26) ← (byte) print_char::ch#3
(byte*) print_char_cursor#9 ← ++ (byte*) print_char_cursor#26 (byte*) print_char_cursor#9 ← ++ (byte*) print_char_cursor#26
to:print_char::@return to:print_char::@return
@@ -354,7 +353,7 @@ sum::@return: scope:[sum] from sum::@3
return return
to:@return to:@return
(signed word()) main() (void()) main()
main: scope:[main] from @51 main: scope:[main] from @51
(byte*) print_line_cursor#33 ← phi( @51/(byte*) print_line_cursor#19 ) (byte*) print_line_cursor#33 ← phi( @51/(byte*) print_line_cursor#19 )
(word) Ticks#26 ← phi( @51/(word) Ticks#14 ) (word) Ticks#26 ← phi( @51/(word) Ticks#14 )
@@ -366,30 +365,30 @@ main: scope:[main] from @51
(word) main::i#0 ← (word) 0 (word) main::i#0 ← (word) 0
(byte) main::c#0 ← (byte) 0 (byte) main::c#0 ← (byte) 0
call start call start
to:main::@6 to:main::@5
main::@6: scope:[main] from main main::@5: scope:[main] from main
(byte*) print_line_cursor#32 ← phi( main/(byte*) print_line_cursor#33 ) (byte*) print_line_cursor#32 ← phi( main/(byte*) print_line_cursor#33 )
(word) Ticks#25 ← phi( main/(word) Ticks#26 ) (word) Ticks#25 ← phi( main/(word) Ticks#26 )
(word) last_time#25 ← phi( main/(word) last_time#26 ) (word) last_time#25 ← phi( main/(word) last_time#26 )
(byte*) print_char_cursor#51 ← phi( main/(byte*) print_char_cursor#52 ) (byte*) print_char_cursor#51 ← phi( main/(byte*) print_char_cursor#52 )
(struct node*) root#24 ← phi( main/(struct node*) root#26 ) (struct node*) root#23 ← phi( main/(struct node*) root#26 )
(word) free_#26 ← phi( main/(word) free_#28 ) (word) free_#25 ← phi( main/(word) free_#28 )
(word) rand_seed#12 ← phi( main/(word) rand_seed#1 ) (word) rand_seed#12 ← phi( main/(word) rand_seed#1 )
(word) rand_seed#5 ← (word) rand_seed#12 (word) rand_seed#5 ← (word) rand_seed#12
(byte) main::c#1 ← (number) 0 (byte) main::c#1 ← (number) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main::@10 main::@6 main::@1: scope:[main] from main::@5 main::@9
(byte*) print_line_cursor#31 ← phi( main::@10/(byte*) print_line_cursor#21 main::@6/(byte*) print_line_cursor#32 ) (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::@10/(word) rand_seed#22 main::@6/(word) rand_seed#5 ) (word) rand_seed#29 ← phi( main::@5/(word) rand_seed#5 main::@9/(word) rand_seed#22 )
(word) Ticks#24 ← phi( main::@10/(word) Ticks#16 main::@6/(word) Ticks#25 ) (word) Ticks#24 ← phi( main::@5/(word) Ticks#25 main::@9/(word) Ticks#16 )
(word) last_time#24 ← phi( main::@10/(word) last_time#16 main::@6/(word) last_time#25 ) (word) last_time#24 ← phi( main::@5/(word) last_time#25 main::@9/(word) last_time#16 )
(byte) main::c#9 ← phi( main::@10/(byte) main::c#2 main::@6/(byte) main::c#1 ) (byte) main::c#9 ← phi( main::@5/(byte) main::c#1 main::@9/(byte) main::c#2 )
(byte*) print_char_cursor#50 ← phi( main::@10/(byte*) print_char_cursor#14 main::@6/(byte*) print_char_cursor#51 ) (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::@10/(struct node*) root#23 main::@6/(struct node*) root#24 ) (struct node*) root#19 ← phi( main::@5/(struct node*) root#23 main::@9/(struct node*) root#24 )
(word) free_#21 ← phi( main::@10/(word) free_#25 main::@6/(word) free_#26 ) (word) free_#21 ← phi( main::@5/(word) free_#25 main::@9/(word) free_#26 )
call init call init
to:main::@7 to:main::@6
main::@7: scope:[main] from main::@1 main::@6: scope:[main] from main::@1
(byte*) print_line_cursor#30 ← phi( main::@1/(byte*) print_line_cursor#31 ) (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) rand_seed#28 ← phi( main::@1/(word) rand_seed#29 )
(word) Ticks#23 ← phi( main::@1/(word) Ticks#24 ) (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 (struct node*) root#5 ← (struct node*) root#13
(word) main::i#1 ← (number) 0 (word) main::i#1 ← (number) 0
to:main::@2 to:main::@2
main::@2: scope:[main] from main::@7 main::@8 main::@2: scope:[main] from main::@6 main::@7
(byte*) print_line_cursor#29 ← phi( main::@7/(byte*) print_line_cursor#30 main::@8/(byte*) print_line_cursor#28 ) (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::@7/(word) rand_seed#28 main::@8/(word) rand_seed#26 ) (word) rand_seed#27 ← phi( main::@6/(word) rand_seed#28 main::@7/(word) rand_seed#26 )
(word) Ticks#22 ← phi( main::@7/(word) Ticks#23 main::@8/(word) Ticks#21 ) (word) Ticks#22 ← phi( main::@6/(word) Ticks#23 main::@7/(word) Ticks#21 )
(word) last_time#22 ← phi( main::@7/(word) last_time#23 main::@8/(word) last_time#21 ) (word) last_time#22 ← phi( main::@6/(word) last_time#23 main::@7/(word) last_time#21 )
(byte) main::c#7 ← phi( main::@7/(byte) main::c#8 main::@8/(byte) main::c#6 ) (byte) main::c#7 ← phi( main::@6/(byte) main::c#8 main::@7/(byte) main::c#6 )
(byte*) print_char_cursor#48 ← phi( main::@7/(byte*) print_char_cursor#49 main::@8/(byte*) print_char_cursor#46 ) (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::@7/(struct node*) root#5 main::@8/(struct node*) root#6 ) (struct node*) root#20 ← phi( main::@6/(struct node*) root#5 main::@7/(struct node*) root#6 )
(word) free_#22 ← phi( main::@7/(word) free_#7 main::@8/(word) free_#8 ) (word) free_#22 ← phi( main::@6/(word) free_#7 main::@7/(word) free_#8 )
(word) main::i#3 ← phi( main::@7/(word) main::i#1 main::@8/(word) main::i#2 ) (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 (word) prepend::x#0 ← (word) main::i#3
call prepend call prepend
to:main::@8 to:main::@7
main::@8: scope:[main] from main::@2 main::@7: scope:[main] from main::@2
(byte*) print_line_cursor#28 ← phi( main::@2/(byte*) print_line_cursor#29 ) (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) rand_seed#26 ← phi( main::@2/(word) rand_seed#27 )
(word) Ticks#21 ← phi( main::@2/(word) Ticks#22 ) (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) (bool~) main::$4 ← (word) main::i#2 != rangelast(0,$bb7)
if((bool~) main::$4) goto main::@2 if((bool~) main::$4) goto main::@2
to:main::@3 to:main::@3
main::@3: scope:[main] from main::@8 main::@3: scope:[main] from main::@7
(byte*) print_line_cursor#27 ← phi( main::@8/(byte*) print_line_cursor#28 ) (byte*) print_line_cursor#27 ← phi( main::@7/(byte*) print_line_cursor#28 )
(word) rand_seed#25 ← phi( main::@8/(word) rand_seed#26 ) (word) rand_seed#25 ← phi( main::@7/(word) rand_seed#26 )
(word) Ticks#20 ← phi( main::@8/(word) Ticks#21 ) (word) Ticks#20 ← phi( main::@7/(word) Ticks#21 )
(word) last_time#20 ← phi( main::@8/(word) last_time#21 ) (word) last_time#20 ← phi( main::@7/(word) last_time#21 )
(word) free_#30 ← phi( main::@8/(word) free_#8 ) (word) free_#30 ← phi( main::@7/(word) free_#8 )
(byte) main::c#5 ← phi( main::@8/(byte) main::c#6 ) (byte) main::c#5 ← phi( main::@7/(byte) main::c#6 )
(byte*) print_char_cursor#43 ← phi( main::@8/(byte*) print_char_cursor#46 ) (byte*) print_char_cursor#43 ← phi( main::@7/(byte*) print_char_cursor#46 )
(struct node*) root#18 ← phi( main::@8/(struct node*) root#6 ) (struct node*) root#18 ← phi( main::@7/(struct node*) root#6 )
call sum call sum
(word) sum::return#2 ← (word) sum::return#1 (word) sum::return#2 ← (word) sum::return#1
to:main::@9 to:main::@8
main::@9: scope:[main] from main::@3 main::@8: scope:[main] from main::@3
(byte*) print_line_cursor#25 ← phi( main::@3/(byte*) print_line_cursor#27 ) (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) rand_seed#24 ← phi( main::@3/(word) rand_seed#25 )
(word) Ticks#19 ← phi( main::@3/(word) Ticks#20 ) (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~) main::$6 ← ((byte)) (word~) main::$5
(byte) print_char::ch#2 ← (byte~) main::$6 (byte) print_char::ch#2 ← (byte~) main::$6
call print_char call print_char
to:main::@10 to:main::@9
main::@10: scope:[main] from main::@9 main::@9: scope:[main] from main::@8
(byte*) print_line_cursor#21 ← phi( main::@9/(byte*) print_line_cursor#25 ) (byte*) print_line_cursor#21 ← phi( main::@8/(byte*) print_line_cursor#25 )
(word) rand_seed#22 ← phi( main::@9/(word) rand_seed#24 ) (word) rand_seed#22 ← phi( main::@8/(word) rand_seed#24 )
(word) Ticks#16 ← phi( main::@9/(word) Ticks#19 ) (word) Ticks#16 ← phi( main::@8/(word) Ticks#19 )
(word) last_time#16 ← phi( main::@9/(word) last_time#19 ) (word) last_time#16 ← phi( main::@8/(word) last_time#19 )
(struct node*) root#23 ← phi( main::@9/(struct node*) root#27 ) (struct node*) root#24 ← phi( main::@8/(struct node*) root#27 )
(word) free_#25 ← phi( main::@9/(word) free_#29 ) (word) free_#26 ← phi( main::@8/(word) free_#29 )
(byte) main::c#3 ← phi( main::@9/(byte) main::c#4 ) (byte) main::c#3 ← phi( main::@8/(byte) main::c#4 )
(byte*) print_char_cursor#31 ← phi( main::@9/(byte*) print_char_cursor#10 ) (byte*) print_char_cursor#31 ← phi( main::@8/(byte*) print_char_cursor#10 )
(byte*) print_char_cursor#14 ← (byte*) print_char_cursor#31 (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#31
(byte) main::c#2 ← (byte) main::c#3 + rangenext(0,4) (byte) main::c#2 ← (byte) main::c#3 + rangenext(0,4)
(bool~) main::$8 ← (byte) main::c#2 != rangelast(0,4) (bool~) main::$8 ← (byte) main::c#2 != rangelast(0,4)
if((bool~) main::$8) goto main::@1 if((bool~) main::$8) goto main::@1
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@10 main::@4: scope:[main] from main::@9
(struct node*) root#25 ← phi( main::@10/(struct node*) root#23 ) (struct node*) root#25 ← phi( main::@9/(struct node*) root#24 )
(word) free_#27 ← phi( main::@10/(word) free_#25 ) (word) free_#27 ← phi( main::@9/(word) free_#26 )
(byte*) print_line_cursor#18 ← phi( main::@10/(byte*) print_line_cursor#21 ) (byte*) print_line_cursor#18 ← phi( main::@9/(byte*) print_line_cursor#21 )
(byte*) print_char_cursor#40 ← phi( main::@10/(byte*) print_char_cursor#14 ) (byte*) print_char_cursor#40 ← phi( main::@9/(byte*) print_char_cursor#14 )
(word) rand_seed#19 ← phi( main::@10/(word) rand_seed#22 ) (word) rand_seed#19 ← phi( main::@9/(word) rand_seed#22 )
(word) Ticks#13 ← phi( main::@10/(word) Ticks#16 ) (word) Ticks#13 ← phi( main::@9/(word) Ticks#16 )
(word) last_time#12 ← phi( main::@10/(word) last_time#16 ) (word) last_time#12 ← phi( main::@9/(word) last_time#16 )
call end call end
to:main::@11 to:main::@10
main::@11: scope:[main] from main::@4 main::@10: scope:[main] from main::@4
(struct node*) root#21 ← phi( main::@4/(struct node*) root#25 ) (struct node*) root#21 ← phi( main::@4/(struct node*) root#25 )
(word) free_#23 ← phi( main::@4/(word) free_#27 ) (word) free_#23 ← phi( main::@4/(word) free_#27 )
(byte*) print_line_cursor#13 ← phi( main::@4/(byte*) print_line_cursor#4 ) (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 (word) last_time#3 ← (word) last_time#9
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#32 (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#32
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13
(signed word) main::return#0 ← (number) 0
to:main::@return to:main::@return
main::@return: scope:[main] from main::@11 main::@return: scope:[main] from main::@10
(byte*) print_line_cursor#14 ← phi( main::@11/(byte*) print_line_cursor#5 ) (byte*) print_line_cursor#14 ← phi( main::@10/(byte*) print_line_cursor#5 )
(word) last_time#10 ← phi( main::@11/(word) last_time#3 ) (word) last_time#10 ← phi( main::@10/(word) last_time#3 )
(word) Ticks#10 ← phi( main::@11/(word) Ticks#4 ) (word) Ticks#10 ← phi( main::@10/(word) Ticks#4 )
(byte*) print_char_cursor#33 ← phi( main::@11/(byte*) print_char_cursor#15 ) (byte*) print_char_cursor#33 ← phi( main::@10/(byte*) print_char_cursor#15 )
(struct node*) root#15 ← phi( main::@11/(struct node*) root#21 ) (struct node*) root#15 ← phi( main::@10/(struct node*) root#21 )
(word) free_#18 ← phi( main::@11/(word) free_#23 ) (word) free_#18 ← phi( main::@10/(word) free_#23 )
(word) rand_seed#14 ← phi( main::@11/(word) rand_seed#6 ) (word) rand_seed#14 ← phi( main::@10/(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
(word) rand_seed#7 ← (word) rand_seed#14 (word) rand_seed#7 ← (word) rand_seed#14
(word) free_#9 ← (word) free_#18 (word) free_#9 ← (word) free_#18
(struct node*) root#7 ← (struct node*) root#15 (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) free_#24 ← phi( @46/(word) free_#0 )
(word) rand_seed#20 ← phi( @46/(word) rand_seed#23 ) (word) rand_seed#20 ← phi( @46/(word) rand_seed#23 )
call main call main
(signed word) main::return#2 ← (signed word) main::return#1
to:@52 to:@52
@52: scope:[] from @51 @52: scope:[] from @51
(byte*) print_line_cursor#15 ← phi( @51/(byte*) print_line_cursor#6 ) (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#7
(word) last_time#8 (word) last_time#8
(word) last_time#9 (word) last_time#9
(signed word()) main() (void()) main()
(bool~) main::$4 (bool~) main::$4
(word~) main::$5 (word~) main::$5
(byte~) main::$6 (byte~) main::$6
(bool~) main::$8 (bool~) main::$8
(label) main::@1 (label) main::@1
(label) main::@10 (label) main::@10
(label) main::@11
(label) main::@2 (label) main::@2
(label) main::@3 (label) main::@3
(label) main::@4 (label) main::@4
(label) main::@5
(label) main::@6 (label) main::@6
(label) main::@7 (label) main::@7
(label) main::@8 (label) main::@8
@@ -703,11 +698,6 @@ SYMBOL TABLE SSA
(word) main::i#2 (word) main::i#2
(word) main::i#3 (word) main::i#3
(word) main::i#4 (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 (struct node*) node::next
(word) node::value (word) node::value
(void()) prepend((word) prepend::x) (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 (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 (byte) main::c#1 ← (number) 0
Adding number conversion cast (unumber) 0 in (word) main::i#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 Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (word) rand_seed#0 ← (unumber)(number) $194a Inlining cast (word) rand_seed#0 ← (unumber)(number) $194a
Inlining cast (word) free_#1 ← (unumber)(number) 0 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 (byte) main::c#1 ← (unumber)(number) 0
Inlining cast (word) main::i#1 ← (unumber)(number) 0 Inlining cast (word) main::i#1 ← (unumber)(number) 0
Inlining cast (byte~) main::$6 ← (byte)(word~) main::$5 Inlining cast (byte~) main::$6 ← (byte)(word~) main::$5
Inlining cast (signed word) main::return#0 ← (snumber)(number) 0
Successful SSA optimization Pass2InlineCast Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $28 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
Simplifying constant integer cast 0 Simplifying constant integer cast 0
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $28 Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 4 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 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 Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f 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 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*) root#11 = (struct node*) root#3 (struct node*) root#4
Alias (struct node*) sum::current#3 = (struct node*) sum::current#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) 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 (word) free_#25 = (word) free_#28
Alias (struct node*) root#24 = (struct node*) root#26 Alias (struct node*) root#23 = (struct node*) root#26
Alias (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52 Alias (byte*) print_char_cursor#51 = (byte*) print_char_cursor#52
Alias (word) last_time#25 = (word) last_time#26 Alias (word) last_time#25 = (word) last_time#26
Alias (word) Ticks#25 = (word) Ticks#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) 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 (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 (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 (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#23 (struct node*) root#25 (struct node*) root#21 (struct node*) root#15 (struct node*) root#7 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 (word) sum::return#2 = (word) sum::return#4
Alias (byte) print_char::ch#2 = (byte~) main::$6 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 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 (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_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 (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 (word) free_#0 = (word) free_#24
Alias (struct node*) root#0 = (struct node*) root#22 Alias (struct node*) root#0 = (struct node*) root#22
Alias (word) rand_seed#15 = (word) rand_seed#8 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 (word) free_#14 (word) free_#13
Identical Phi Values (struct node*) root#12 (struct node*) root#14 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) rand_seed#18 (word) rand_seed#20
Identical Phi Values (word) free_#26 (word) free_#0 Identical Phi Values (word) free_#25 (word) free_#0
Identical Phi Values (struct node*) root#24 (struct node*) root#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 (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) last_time#25 (word) last_time#0
Identical Phi Values (word) Ticks#25 (word) Ticks#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#0 = 0
Constant (const byte) main::c#1 = 0 Constant (const byte) main::c#1 = 0
Constant (const word) main::i#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 Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value [155] main::i#2 ← ++ main::i#3 to ++ 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 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) sum::s#0
Eliminating unused constant (const word) main::i#0 Eliminating unused constant (const word) main::i#0
Eliminating unused constant (const byte) main::c#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 byte) OFFSET_STRUCT_NODE_NEXT
Eliminating unused constant (const word) Ticks#0 Eliminating unused constant (const word) Ticks#0
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const signed word) main::return#0
Eliminating unused constant (const word) free_#0 Eliminating unused constant (const word) free_#0
Eliminating unused constant (const struct node*) root#0 Eliminating unused constant (const struct node*) root#0
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
@@ -1222,8 +1202,8 @@ Eliminating unused constant (const byte) SIZEOF_STRUCT_NODE
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)(word) last_time#1 = (word) Ticks#2 (word) last_time#2 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 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::@11(between main::@9 and main::@1)
Added new block during phi lifting main::@13(between main::@8 and main::@2) 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 @begin
Adding NOP phi() at start of @13 Adding NOP phi() at start of @13
Adding NOP phi() at start of @46 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 @52
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main 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::@6
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4 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::@2
Adding NOP phi() at start of end::@3 Adding NOP phi() at start of end::@3
Adding NOP phi() at start of print_ln 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) @13
Culled Empty Block (label) @46 Culled Empty Block (label) @46
Culled Empty Block (label) @52 Culled Empty Block (label) @52
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6 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::@11
Culled Empty Block (label) main::@12 Culled Empty Block (label) main::@12
Culled Empty Block (label) main::@13
Culled Empty Block (label) end::@3 Culled Empty Block (label) end::@3
Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_ln::@3
@@ -1290,9 +1270,9 @@ Culled Empty Block (label) sum::@3
Renumbering block @43 to @1 Renumbering block @43 to @1
Renumbering block @45 to @2 Renumbering block @45 to @2
Renumbering block @51 to @3 Renumbering block @51 to @3
Renumbering block main::@8 to main::@5 Renumbering block main::@7 to main::@5
Renumbering block main::@9 to main::@6 Renumbering block main::@8 to main::@6
Renumbering block main::@10 to main::@7 Renumbering block main::@9 to main::@7
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @3 Adding NOP phi() at start of @3
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
@@ -1321,14 +1301,14 @@ FINAL CONTROL FLOW GRAPH
@end: scope:[] from @3 @end: scope:[] from @3
[5] phi() [5] phi()
(signed word()) main() (void()) main()
main: scope:[main] from @3 main: scope:[main] from @3
[6] phi() [6] phi()
[7] call start [7] call start
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@7 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) main::c#8 ← phi( main/(byte) 0 main::@7/(byte) main::c#2 )
[8] (byte*) print_char_cursor#49 ← phi( main::@7/(byte*) print_char_cursor#10 main/(byte*) 1024 ) [8] (byte*) print_char_cursor#49 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#10 )
[9] call init [9] call init
to:main::@2 to:main::@2
main::@2: scope:[main] from main::@1 main::@5 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#0 0.2608695652173913
(word) last_time#1 1.0 (word) last_time#1 1.0
(word) last_time#2 20.0 (word) last_time#2 20.0
(signed word()) main() (void()) main()
(word~) main::$5 11.0 (word~) main::$5 11.0
(byte) main::c (byte) main::c
(byte) main::c#2 16.5 (byte) main::c#2 16.5
@@ -1525,7 +1505,6 @@ VARIABLE REGISTER WEIGHTS
(word) main::i (word) main::i
(word) main::i#2 151.5 (word) main::i#2 151.5
(word) main::i#3 101.0 (word) main::i#3 101.0
(signed word) main::return
(struct node*) node::next (struct node*) node::next
(word) node::value (word) node::value
(void()) prepend((word) prepend::x) (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#0 last_time zp[2]:10 0.2608695652173913
(word) last_time#1 last_time zp[2]:10 1.0 (word) last_time#1 last_time zp[2]:10 1.0
(word) last_time#2 last_time zp[2]:10 20.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 (word~) main::$5 zp[2]:8 11.0
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@@ -2969,7 +2948,6 @@ FINAL SYMBOL TABLE
(word) main::i (word) main::i
(word) main::i#2 i zp[2]:4 151.5 (word) main::i#2 i zp[2]:4 151.5
(word) main::i#3 i zp[2]:4 101.0 (word) main::i#3 i zp[2]:4 101.0
(signed word) main::return
(struct node*) node::next (struct node*) node::next
(word) node::value (word) node::value
(void()) prepend((word) prepend::x) (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#0 last_time zp[2]:10 0.2608695652173913
(word) last_time#1 last_time zp[2]:10 1.0 (word) last_time#1 last_time zp[2]:10 1.0
(word) last_time#2 last_time zp[2]:10 20.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 (word~) main::$5 zp[2]:8 11.0
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@@ -48,7 +48,6 @@
(word) main::i (word) main::i
(word) main::i#2 i zp[2]:4 151.5 (word) main::i#2 i zp[2]:4 151.5
(word) main::i#3 i zp[2]:4 101.0 (word) main::i#3 i zp[2]:4 101.0
(signed word) main::return
(struct node*) node::next (struct node*) node::next
(word) node::value (word) node::value
(void()) prepend((word) prepend::x) (void()) prepend((word) prepend::x)