1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-28 11:51:09 +00:00
Commit Graph

1154 Commits

Author SHA1 Message Date
jespergravgaard
f29648ca26 Added test with 3-level nested struct value. 2019-06-09 10:55:18 +02:00
jespergravgaard
1540e14067 Implemented support for nested struct values. 2019-06-09 10:47:33 +02:00
jespergravgaard
26698851ca Added support for struct value list constructor. 2019-06-08 22:06:22 +02:00
jespergravgaard
a180a4c0b4 Implemented call parameter type checking in pass 1. 2019-06-08 15:01:44 +02:00
Jesper Gravgaard
d58c46e46f Added two struct value error tests. 2019-06-07 13:46:36 +02:00
jespergravgaard
0dcd739507 Implemented struct value call parameter passing by unwinding. 2019-06-07 09:31:14 +02:00
jespergravgaard
c995a1bca1 Implemented struct value member-centric optimization (converting simple struct variables to each member.) 2019-06-07 00:14:42 +02:00
jespergravgaard
0bebae430d Merged masters 2019-06-03 22:28:02 +02:00
jespergravgaard
d52fbcb6b6 Added two tests for statement sequence locality. 2019-06-03 22:26:21 +02:00
Jesper Gravgaard
2f900a9102 Tests exploring sub-expression optimization. 2019-06-03 12:19:47 +02:00
Jesper Gravgaard
8289676723 Fixed test output 2019-06-03 11:01:27 +02:00
Jesper Gravgaard
0ff52448f1 Added test for void-parameter lists. 2019-06-03 10:36:20 +02:00
jespergravgaard
9ad3879e52 New type system fixes pointer to pointer casts. Closes #166 2019-06-03 08:58:23 +02:00
jespergravgaard
7a4d3fff47 New type system fixed loHhi-operator on constant values. Closes #95 2019-06-03 01:51:25 +02:00
jespergravgaard
7535f4d4c1 New type system fixed addition sequence. Closes #132 2019-06-03 01:44:16 +02:00
jespergravgaard
8e1add7d04 New type system fixed constant casting. Closes #164 2019-06-03 01:40:55 +02:00
jespergravgaard
526bfbb60c Added support for converting non-boolean conditions to boolean. Fixed problem with ranged for iterating signed bytes. Closes #135 2019-06-03 00:44:46 +02:00
Jesper Gravgaard
45471f6848 Implemented syntax supporting string character encodings. Closes #59 2019-06-02 17:25:04 +02:00
jespergravgaard
8947882e20 Moved zero-page coalesce to an optimization option. 2019-05-31 23:17:57 +02:00
jespergravgaard
67a198c48f Updated number type test. Closes #181 2019-05-31 20:19:23 +02:00
jespergravgaard
487c06fbbc Removed -O0 switch 2019-05-31 18:51:39 +02:00
jespergravgaard
8925a57955 Cached phi transition calculations yilding significantly faster compilation of complex programs. 2019-05-31 18:20:03 +02:00
jespergravgaard
b6ee63ea9f Caching effective alive for each call path. 2019-05-31 15:48:20 +02:00
jespergravgaard
97f6051b12 Fixed static optimization problem not detecting modified memory. Fixed thread problem not handling global variables properly. Added compiler switch -O0 doing less optimization for faster compiles. 2019-05-31 12:46:50 +02:00
jespergravgaard
29aa5322b2 Fixed issue with const/label. 2019-05-31 01:56:59 +02:00
jespergravgaard
ecf4181ce1 Fixed tests (added missing toString(). Changed global reserve directiveu to #reserve(zp,zp,zp,...). Added global directive specifying code address #zp(addr). Closes #190 2019-05-30 23:50:26 +02:00
jespergravgaard
b755cd448f Readded cfg/log/sym-files to tests 2019-05-30 22:29:07 +02:00
jespergravgaard
036724c92d Readded nop cast inlining - and fixed some recursion problems. 2019-05-30 21:38:12 +02:00
jespergravgaard
33b75c3db6 Merged 181-type-system 2019-05-30 17:55:53 +02:00
Jesper Gravgaard
ef953a12b4 Added some pointer-based struct tests (simulating the ASM we want for array indexing). 2019-05-29 17:45:17 +02:00
jespergravgaard
007985111a Temporary implementation for arrays of structs 2019-05-29 08:05:34 +02:00
jespergravgaard
837104f4fd Working on structs 2019-05-28 22:56:52 +02:00
jespergravgaard
9c682e37fe Testing structs 2019-05-28 22:28:17 +02:00
Jesper Gravgaard
30d6878ade Minimalistic struct example working with several shortcuts in the code. 2019-05-27 08:39:59 +02:00
Jesper Gravgaard
75af42ad3f Added struct syntax 2019-05-24 23:00:13 +02:00
Jesper Gravgaard
e46fd03ec5 Added support for string concatenation C style (using simple space separation).
Fixed tests.
2019-05-24 20:57:43 +02:00
jespergravgaard
3376a462fc Fixed number range test 2019-05-24 18:02:42 +02:00
jespergravgaard
999afdcbc7 Fixed 2/3. One remaining! 2019-05-24 09:02:31 +02:00
jespergravgaard
c42156c4e9 Working in unumber/snumber. Updated test files. 2019-05-24 00:52:30 +02:00
jespergravgaard
f574bb676c Working in unumber/snumber. Only few failing tests. 2019-05-24 00:50:48 +02:00
jespergravgaard
9ef7c69c3e Improved comparisons to avoid branch/jmp sequences by negating comparisons. 2019-05-23 17:50:44 +02:00
jespergravgaard
06147e2634 Moved malloc/free trivial implementations to stdlib 2019-05-23 15:48:34 +02:00
jespergravgaard
430c128cc3 Simplified constant inlining pass2 2019-05-23 12:33:15 +02:00
jespergravgaard
682d007ba8 Replaced Pass1EliminiateEmptyBlocks with PassNCullEmptyBlocks (which was removed from pass 2). 2019-05-23 12:19:20 +02:00
jespergravgaard
01e833681a Improved planned sequence for A->B->C sequences where B is conditional successor of A. 2019-05-23 12:02:52 +02:00
jespergravgaard
d5ebe81c21 Eliminated two redundant pass2 steps 2019-05-23 07:41:18 +02:00
jespergravgaard
1df77d5ded Collected all type inference in pass2 together. 2019-05-23 07:39:10 +02:00
jespergravgaard
fdbfa68c1c Eliminated Pass2EliminateRedundantCasts. 2019-05-23 07:12:52 +02:00
jespergravgaard
009b141ef1 Eliminated PassNDowngradeConstantTypeConversion. Simplified PassNAddTypeConversionAssignment. 2019-05-23 01:07:59 +02:00
jespergravgaard
2a14671496 Renamed for clarity 2019-05-23 00:46:43 +02:00
jespergravgaard
65c92716f0 Cleaning up type inference. 2019-05-23 00:38:35 +02:00
jespergravgaard
49a61ecbdd Cleaning up type inference. 2019-05-23 00:28:34 +02:00
jespergravgaard
669064bd37 Eliminated SymbolTypeNumberInference. 2019-05-22 23:59:43 +02:00
jespergravgaard
864b993f14 Eliminated SymbolTypeSimple. Eliminated SymbolTypeInference.infer(type, ...). Eliminiated most of SymbolTypeNumberInference. 2019-05-22 23:50:50 +02:00
jespergravgaard
2fb9a5baf3 Moved symbol table update functions to PassNTypeInference (cleaning up SymbolTypeInference). 2019-05-22 23:38:34 +02:00
Jesper Gravgaard
9636e26191 Changed all type comparisons to use SymbolType.XXX.equals() 2019-05-22 15:53:48 +02:00
Jesper Gravgaard
aaf556abe1 Improved utoa16 implementation using pointer to pointer. 2019-05-22 15:42:00 +02:00
Jesper Gravgaard
ff7e4bff2a Removed duplicate compiler step. 2019-05-22 15:32:42 +02:00
Jesper Gravgaard
39c4f0d6b4 Fixed identification of identical Phi RValues that are constant pointers to symbols. 2019-05-22 15:29:47 +02:00
jespergravgaard
67db0f0f6f Improved duplicate assignment right side optimization slightly. 2019-05-22 08:19:43 +02:00
jespergravgaard
2c808e59d6 Added tests for duplicate assignment right side optimization. 2019-05-22 08:06:54 +02:00
Jesper Gravgaard
c1213f4d55 Added right side duplicate identification. 2019-05-21 23:06:13 +02:00
jespergravgaard
5f2b798a8a Added test for pointer-to-pointer optimization. 2019-05-21 10:23:39 +02:00
jespergravgaard
fd259fe47e Added pointer to pointer test. 2019-05-21 01:45:32 +02:00
jespergravgaard
3132790ab5 Added very naive heap implementation. 2019-05-21 00:33:36 +02:00
jespergravgaard
b3041e326d Optimizing compiler passes 2019-05-21 00:05:17 +02:00
jespergravgaard
bc699a9e27 Added utoa16(). Fixed early constant identification not taking procedure parameters into account. 2019-05-20 23:41:58 +02:00
Jesper Gravgaard
2b26c813d9 Rafactoring pass 2 2019-05-20 11:01:58 +02:00
Jesper Gravgaard
27c6c3fb86 Rafactoring pass 2 2019-05-20 10:54:06 +02:00
Jesper Gravgaard
77d24eddc6 Rafactoring pass 2 2019-05-20 10:47:53 +02:00
Jesper Gravgaard
5d988dd859 Rafactoring pass 2 2019-05-20 10:36:58 +02:00
Jesper Gravgaard
9864995afb Created utoa10 with smaller memory footprint. 2019-05-19 21:17:39 +02:00
jespergravgaard
2ec68d6fd5 added hex2dec test 2019-05-19 09:31:12 +02:00
jespergravgaard
6246871538 Fixed tests 2019-05-19 01:16:12 +02:00
jespergravgaard
f31dc244b5 fixed tests 2019-05-19 00:07:52 +02:00
jespergravgaard
fa6e54fb87 Added test ref 2019-05-18 23:58:24 +02:00
jespergravgaard
b5a9d47472 Improved code by avoiding unnecesary casts 2019-05-18 23:58:04 +02:00
jespergravgaard
abfa6f875f Added a few tests 2019-05-18 22:40:46 +02:00
jespergravgaard
eed4018450 Added a blitter box 2019-05-18 22:07:16 +02:00
jespergravgaard
9cec38d075 Fixed negative numbers, zero-addition, zero inlining. 2019-05-18 21:37:34 +02:00
jespergravgaard
fe41c2ba42 Fixed array indexing using word-size indices 2019-05-18 13:58:26 +02:00
jespergravgaard
06aed186e2 Fixed type inference for rangenext 2019-05-18 12:43:13 +02:00
jespergravgaard
13cc9e453c Fixed a few tests. +0 in derefidx and rangenext() on signed words. 2019-05-18 12:23:13 +02:00
jespergravgaard
855434afa9 Added missing fragment and ternary type inference test 2019-05-18 08:51:22 +02:00
jespergravgaard
9f27006540 Working on casts 2019-05-18 08:14:34 +02:00
Jesper Gravgaard
c200eaa535 Working on casts 2019-05-18 00:37:09 +02:00
jespergravgaard
0876603ca7 Working on casts 2019-05-17 08:55:04 +02:00
jespergravgaard
71cedd4d29 Working on fixing casts. 2019-05-17 01:07:47 +02:00
Jesper Gravgaard
17a0db4472 Minor fixes 2019-05-16 08:51:14 +02:00
jespergravgaard
6cfa5c750c Implemented cast constant identification. 282/359 2019-05-14 00:16:17 +02:00
jespergravgaard
6e0b665423 Added an array initializer with negative values. 2019-05-13 09:24:23 +02:00
jespergravgaard
3d56f3705a Array initializer with number handling - 278/358 2019-05-13 09:17:30 +02:00
jespergravgaard
fe60b31f73 New literal word constructor handling - 277/354 2019-05-12 21:18:55 +02:00
jespergravgaard
07b67efb7c Eliminating SymbolTypeMulti - 274/351 2019-05-12 14:42:41 +02:00
jespergravgaard
7767c1216b Added missing fragment - 274/351 2019-05-12 14:32:16 +02:00
jespergravgaard
ef05cc8c3b Eliminating SymbolTypeMulti - 273/351 2019-05-12 13:56:04 +02:00
jespergravgaard
8db7736830 Improved no-cast detection. 273/351 2019-05-12 13:51:36 +02:00
jespergravgaard
e09d81cd13 Improved no-cast detection. 271/351 2019-05-12 12:59:47 +02:00
jespergravgaard
6e566852ba Fixed assignment type conversions and unnecesary byte/word casts. 269/351 2019-05-12 12:27:48 +02:00
Jesper Gravgaard
e56e66acd8 Working on multiply/divide. 2019-05-11 23:16:03 +02:00
Jesper Gravgaard
bd6ece561b Fixed multiply to shift. 260/351. 2019-05-11 20:14:14 +02:00
Jesper Gravgaard
3c8845d6a6 Added alias elimination to constant optimization phase. 255/351. 2019-05-11 19:55:03 +02:00
Jesper Gravgaard
51c10d29c3 Working on fixing type conversion casting. Still a work in progress! 2019-05-10 11:20:37 +02:00
jespergravgaard
f6f25e728b Working on special word+byte downgrade. - down to 190/351. 2019-05-09 07:43:47 +02:00
jespergravgaard
ea990b5e87 Working on fixing test errors - fixed pointer-dereference-indexed - 228/350 working. 2019-05-08 23:24:48 +02:00
jespergravgaard
64a8389e6e Working on fixing test errors - 228/350 working. 2019-05-08 00:11:33 +02:00
jespergravgaard
21b3114b58 Working on fixing test errors - 202/350 working. 2019-05-07 23:39:57 +02:00
jespergravgaard
cab95b6ba5 Working on fixing test errors - 198/350 working. 2019-05-07 22:08:59 +02:00
jespergravgaard
44e9cff722 Working on fixing test errors - 198/350 working. 2019-05-07 21:53:08 +02:00
jespergravgaard
82729cb4d9 Working on fixing test errors - 196/350 working. 2019-05-07 21:03:26 +02:00
jespergravgaard
47aa623f25 Working on fixing test errors. 2019-05-07 18:52:01 +02:00
jespergravgaard
87e6fecb8f Working on fixing test errors. 2019-05-07 09:19:50 +02:00
jespergravgaard
b097b5c2c5 Working on fixing test errors. 2019-05-07 01:46:23 +02:00
jespergravgaard
7e174898b8 Number conversion working. Added program expression iterator. 2019-05-07 00:59:54 +02:00
jespergravgaard
49ae6a0e66 Working on number conversion... not compiling atm. 2019-05-06 08:06:18 +02:00
jespergravgaard
d0d5b5715b Implemented framework for number type conversion - the BinaryExpressionIterator. Added first case (type match) in new PassNAddNumberTybeConversions. 2019-05-06 01:08:41 +02:00
jespergravgaard
35ec65ce94 Implemented much of integer type conversion and the number type. Still a lot left to do. 2019-05-05 01:26:40 +02:00
jespergravgaard
facd8c6c5b Expanded testing of types to include operators 2019-05-03 08:45:33 +02:00
jespergravgaard
eb895fffef Added parser for typed integer literal postfix (ub/sb/uc/sc/uw/sw/ui/si/us/ss/ud/sd/ul/sl and l) 2019-05-02 01:23:49 +02:00
jespergravgaard
fd72ecc0c7 Added syntax for typed integer literal postfix (ub/sb/uc/sc/uw/sw/ui/si/us/ss/ud/sd/ul/sl and l) 2019-04-27 12:12:44 +02:00
jespergravgaard
93937b60d0 Merge remote-tracking branch 'origin/master' into 180-type-system 2019-04-27 08:13:57 +02:00
jespergravgaard
4735c8940b Added fixed comments to sandbox 2019-04-27 08:13:44 +02:00
jespergravgaard
e43a2e2c61 Added assert securing that phi predecessors are direct predecessors. 2019-04-27 08:04:44 +02:00
Jesper Gravgaard
c64713c913 Fixed char - number. Closes #184.
Also fixed problem with nested ternary. Closes #185.
2019-04-25 07:58:17 +02:00
jespergravgaard
58502ecf79 Added issue links to most coments. Added separate test demonstrating nested ternary problem. 2019-04-24 00:46:45 +02:00
jespergravgaard
7edc154133 Added Paul Nelsen sandbox test of sivision - with sprintf skeleton implementation. 2019-04-23 23:26:47 +02:00
jespergravgaard
1fa41859b0 Starting work on type system. 2019-04-23 20:42:18 +02:00
jespergravgaard
21d7c6849c Added tests failing due to constant type interference problems. Working on #181 2019-04-22 13:47:22 +02:00
jespergravgaard
88e3ad66b7 Fixed test. 2019-04-22 13:35:52 +02:00
jespergravgaard
7427c8bbcf Added typeid(expr) that returns byte representing the type of the expression. Closes #180 2019-04-22 11:50:48 +02:00
jespergravgaard
94bd8cef0a Added support for special types signed/unsigned (that are implicitly int). Closes #158 2019-04-22 09:20:14 +02:00
jespergravgaard
e9ece1a8f0 REmoved wrong dependency. 2019-04-21 21:13:08 +02:00
jespergravgaard
7db4308b94 Implemented de-inlining of ptr[w] with word-size indexes. 2019-04-21 01:22:14 +02:00
jespergravgaard
957fe13e4e Improved word array test. 2019-04-21 00:26:18 +02:00
jespergravgaard
6b287741b5 Removed unused fragments. 2019-04-20 23:52:29 +02:00
jespergravgaard
c44fe2138a Changed syntax a bit 2019-04-20 23:02:39 +02:00
jespergravgaard
fc75878f9d Now optimizing *(ptr+n) into ptr[n] when possible. 2019-04-20 22:12:56 +02:00
jespergravgaard
d6427d58df Eliminating redundant casts. 2019-04-20 13:08:12 +02:00
jespergravgaard
27444f7c7d Implemented test simulating a struct. 2019-04-20 11:13:49 +02:00
jespergravgaard
5da972b5b2 Improved test. 2019-04-20 01:48:11 +02:00
jespergravgaard
1ea5a3af76 Added directive reserve($02, $03, $04) for reserving zero page variables to avoid the compiler using them. Directive can be added to functions or globally. Closes #133 2019-04-20 01:44:54 +02:00
jespergravgaard
fc79ac187e Updated version number 2019-04-19 13:52:09 +02:00
jespergravgaard
85b904b46f Updated manual. 2019-04-19 13:50:48 +02:00
jespergravgaard
dda11749e2 Tests now working with proper word/dword-array indexing! Closes #139 2019-04-19 13:36:08 +02:00
jespergravgaard
5a54b45ed9 Fixing more tests with word arrays/pointers. Preparing for #139 2019-04-19 11:56:21 +02:00
jespergravgaard
4e93f0b056 Fixing more tests with word arrays/pointers. Preparing for #139 2019-04-19 11:25:29 +02:00
jespergravgaard
898dc3e833 Fixing more tests with word arrays/pointers. Preparing for #139 2019-04-19 11:16:40 +02:00
jespergravgaard
4f04aa47b7 Fixing tests with word arrays/pointers. Preparing for #139 2019-04-19 10:50:15 +02:00
Jesper Gravgaard
eb26618295 Fixed issue where compound addignments multiplied the index by sizeof() squared. 2019-04-19 08:42:42 +02:00
jespergravgaard
46e2f3ced4 Implemented pointer array indexing sizeof() fixing 2019-04-18 01:26:51 +02:00