1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-15 14:07:39 +00:00
Commit Graph

349 Commits

Author SHA1 Message Date
jespergravgaard
e7ea5fb4ea Implemented control flow graph loop analysis. 2017-07-27 22:20:50 +02:00
jespergravgaard
709cc57a1a Implemented graph dominator analysis. 2017-07-27 15:23:46 +02:00
jespergravgaard
be212f3b38 Implemented live ranged based register allocation - coalescing on phi statements first, copy-assignments second, other assignments third - and finally the remaining vars are added. 2017-07-27 01:33:10 +02:00
jespergravgaard
13c84a1741 Implemented PhiMemCoalesce. 2017-07-26 19:44:51 +02:00
jespergravgaard
16d4ab93f0 Added another block assertion 2017-07-26 17:01:01 +02:00
jespergravgaard
878059da13 Added more asserts 2017-07-26 16:09:47 +02:00
jespergravgaard
d7e0a638f2 Fixed tests 2017-07-26 15:14:56 +02:00
jespergravgaard
bebf020364 Improved phi lifting by introducing new blocks when lifting back to blocks with conditional jumps. Improved sequence planner to ensure blocks in the same scopes are kept together. 2017-07-26 15:09:00 +02:00
jespergravgaard
c43ab3acef Implemented variable live range identification 2017-07-26 00:26:50 +02:00
jespergravgaard
69cbee294d Made room for new pass 3 interval analysis 2017-07-25 00:56:42 +02:00
jespergravgaard
0aa64b3203 Added pass1 optimization removing empty blocks. 2017-07-25 00:21:40 +02:00
jespergravgaard
2819d3c58a Added pass1 optimization removing empty blocks. 2017-07-25 00:17:56 +02:00
jespergravgaard
524252105a Refactored toString to avoid redundant code. 2017-07-24 08:19:44 +02:00
jespergravgaard
300bb644b9 Refactored phi to use blocks instead of individual statements 2017-07-23 23:29:40 +02:00
jespergravgaard
122cef4e30 Better label naming when creating intermediate labels 2017-07-21 12:18:05 +02:00
jespergravgaard
88c7ed453a Better label naming when creating intermediate labels 2017-07-21 11:32:41 +02:00
jespergravgaard
4c0a9cd241 Removed cast calls to getSymbol() 2017-07-21 10:49:28 +02:00
jespergravgaard
6ef3af4fdf ICL Programs are now JSON serializable 2017-07-21 01:53:38 +02:00
jespergravgaard
d38c26eeb5 added a few toString()s 2017-07-20 10:14:22 +02:00
jespergravgaard
00463cd72f Moved all ref creation to getRef() 2017-07-20 10:02:25 +02:00
Jesper Gravgaard
de88808c5f Replaced all program labels with labelrefs ans procedures with procedurerefs. 2017-07-20 09:26:06 +02:00
Jesper Gravgaard
e6d09187e3 Added typed and untyped print functions everywhere. Now getting the same output as the old compilation! 2017-07-19 13:21:16 +02:00
Jesper Gravgaard
6e087e9a1c Now serializing all symbol types 2017-07-18 23:13:24 +02:00
Jesper Gravgaard
819c904419 Implementing JSON serialization of ICL 2017-07-18 22:49:25 +02:00
Jesper Gravgaard
1b0b81baf2 Restructured code in new packages 2017-07-18 18:12:11 +02:00
Jesper Gravgaard
92747454c7 Restructured code in new packages 2017-07-18 18:10:12 +02:00
Jesper Gravgaard
32a2c9eb2b Optimized registers for fibmem. 2017-07-18 16:46:52 +02:00
Jesper Gravgaard
a7e0e2b1d0 Added main method to flipper. Fixed a few bugs in compiler. 2017-07-16 11:09:32 +02:00
Jesper Gravgaard
f6eeb5ff83 Removed comments from ASM output 2017-07-16 09:41:27 +02:00
Jesper Gravgaard
67b4257ad9 Added a second test 2017-07-15 23:32:25 +02:00
Jesper Gravgaard
0116c9e21d Added full compile log to test 2017-07-15 23:26:45 +02:00
Jesper Gravgaard
8e59603418 made map linked for predictability 2017-07-15 22:21:07 +02:00
Jesper Gravgaard
81ba13c9c3 Implemented test comparing reference output to actual compilation output 2017-07-15 22:00:02 +02:00
Jesper Gravgaard
a908e4f1ca Proper implementation of pre-modifiers (++/--) 2017-07-14 12:13:16 +02:00
Jesper Gravgaard
1743e4f9d0 Proper handling of post modifiers 2017-07-14 01:59:04 +02:00
Jesper Gravgaard
1dfbcd1ca4 Working on predictability in output 2017-07-14 00:25:25 +02:00
Jesper Gravgaard
5c1aa7a2e7 Working on predictability in output 2017-07-14 00:15:33 +02:00
Jesper Gravgaard
20cb48b07d Working on predictability in output 2017-07-14 00:11:57 +02:00
Jesper Gravgaard
e271abb8a0 Using ++/-- post increment/decrement operators. 2017-07-13 23:48:25 +02:00
Jesper Gravgaard
ed7a4dded9 Added ++/-- post increment/decrement operators. 2017-07-13 23:40:17 +02:00
Jesper Gravgaard
de8e5139cc Added a phase 2 block assertion checking that the program always contains all referenced blocks. 2017-07-13 22:03:52 +02:00
Jesper Gravgaard
56cf4c80ef Added a phase 2 symbol assertion checking that the program always matches the symbol table. 2017-07-13 21:35:43 +02:00
Jesper Gravgaard
2e90516f34 Fixed problem with nested do loops being mixed up during empty block culling. Improved flipper implementation. 2017-07-13 20:41:16 +02:00
Jesper Gravgaard
d41f762a8b Completed KickC implementation of flipper 2017-07-13 00:50:53 +02:00
Jesper Gravgaard
8d7dfa8a8d Implemented most of flipper in KickC 2017-07-13 00:13:26 +02:00
Jesper Gravgaard
b25be31ba1 Implemented Control flow Graph Sequence Planner. Implemented working flipper. 2017-07-11 01:06:13 +02:00
jespergravgaard
01a26b4710 Implemented usage counting in sub-constant elimination. Added some more fragments 2017-06-17 11:09:59 +02:00
jespergravgaard
e5f1f7f387 Added support for multiple procs 2017-06-14 21:54:28 +02:00
jespergravgaard
5254d7d3a6 Fixed for callsum 2017-06-13 23:11:56 +02:00
jespergravgaard
790feb1dcc New alias elimination implementation. Optimized register allocation for test. 2017-06-13 22:48:03 +02:00