Commit Graph

201 Commits

Author SHA1 Message Date
drmortalwombat 7f6cf654f6 Implemented new and delete operators 2023-07-02 16:34:17 +02:00
drmortalwombat 7858c2135b Add malloc/free as intrinsic 2023-07-02 12:00:53 +02:00
drmortalwombat c8fbc15c37 Copy propagation on struct return of functionr result 2023-07-01 09:27:03 +02:00
drmortalwombat 3d6b60c9f4 Implement base class constructors 2023-06-28 22:14:29 +02:00
drmortalwombat 478f93922d Error on pointer/integer compare 2023-06-27 18:16:13 +02:00
drmortalwombat 8f39d736d5 Fixing member functions with includes 2023-06-27 08:12:20 +02:00
drmortalwombat 0b1b4a7d9b Array constructors 2023-06-25 22:24:13 +02:00
drmortalwombat 6b753c1418 Destructor tracking of temporary variables 2023-06-25 14:25:29 +02:00
drmortalwombat a854133f8e Fix over eager global address progpagation 2023-06-22 14:04:18 +02:00
drmortalwombat 04eeedb0b9 Object destruction on break, continue and return 2023-06-21 22:30:28 +02:00
drmortalwombat 9bcec5bf17 Destructors when leaving scopes the normal way 2023-06-21 22:07:00 +02:00
drmortalwombat 37416a61cb Add struct inheritance in cpp mode 2023-06-18 10:20:50 +02:00
drmortalwombat 7b40aa59a1 Add references for cpp mode 2023-06-17 21:07:31 +02:00
drmortalwombat fd391690b9 Add .cpp mode and namespace/using 2023-06-17 15:08:03 +02:00
drmortalwombat 0f182d2d6d Fix over eager function parameter optimiztion 2023-06-16 15:21:30 +02:00
drmortalwombat c83804a76c Cross function constant propagation 2023-06-14 14:40:59 +02:00
drmortalwombat 373811f2bb Report error if void result used in condition 2023-06-03 18:23:35 +02:00
drmortalwombat 9175257bbc Fix function return source position with implicit return 2023-05-28 16:12:12 +02:00
drmortalwombat d6faefb5fc Propagate static stack usage through recursions 2023-05-28 14:30:46 +02:00
polluks 1616b9335f Fixed typos 2023-05-13 15:57:46 +02:00
drmortalwombat 0639fdc008 Unify instruction dependency check in optimizer 2023-05-06 18:28:59 +02:00
drmortalwombat b1fc2e3736 Add __bankof operator 2023-04-30 18:35:04 +02:00
drmortalwombat 6308f22f25 Fix warnings 2023-04-12 19:02:27 +02:00
drmortalwombat 373ef6ca85 Add local variables to .dbj files 2023-04-09 10:05:01 +02:00
drmortalwombat 85df217c50 Add warning for const integer truncation 2023-04-09 09:45:13 +02:00
drmortalwombat 97bb7981a3 Improve struct copy alias analysis 2023-04-06 17:14:53 +02:00
drmortalwombat 32ea493c17 Prepare per function optimization config using pragmas 2023-04-02 19:04:10 +02:00
drmortalwombat 2f1172076a Add source level debug information 2023-03-28 21:01:17 +02:00
drmortalwombat 2479ec5dd8 Fix const void pointer assignment check 2023-03-15 22:53:19 +01:00
drmortalwombat efff725745 Improve labels in disassembler listing, add mlb file for nes 2023-03-09 19:29:46 +01:00
drmortalwombat 0f4f0ed297 Improve compiler speed 2023-03-08 08:37:43 +01:00
drmortalwombat df89082846 Track state of fast call parameters across function calls to avoid duplicate push 2023-03-01 08:49:51 +01:00
drmortalwombat 797e235056 Small loop accu optimizations 2023-02-26 15:11:37 +01:00
drmortalwombat 4117c9a553 More functions for reu library 2023-02-25 21:02:06 +01:00
drmortalwombat 0fae7abd72 Optimize simple inline assembler code 2023-01-21 22:41:13 +01:00
drmortalwombat 29611ec3db Fix striped constant pointer initializer 2023-01-19 19:03:02 +01:00
drmortalwombat 0b30258f80 Dataflow optimizations 2023-01-17 22:42:02 +01:00
drmortalwombat 02db5b5eb1 Static call graph analysis for function arguments 2023-01-15 18:38:18 +01:00
drmortalwombat 9a64bcc8b6 Fix select operator for string constants 2023-01-08 22:29:13 +01:00
drmortalwombat 425aae8f72 Fix pointer register loss while forwarding index 2022-12-30 15:55:03 +01:00
drmortalwombat 8b631d564e Add autotest for striped arrays 2022-12-03 13:28:03 +01:00
drmortalwombat ec31b845b8 Fix type check of pointers derived by address of operator 2022-11-30 15:07:06 +01:00
drmortalwombat bfe6311ca4 Add assignment of structs from and to striped arrays 2022-11-29 18:11:42 +01:00
drmortalwombat c6d0f44364 Fix unsigend int to/from float conversion 2022-11-19 10:58:44 +01:00
drmortalwombat 42b4f46356 Add striped array memory layout 2022-11-16 08:59:02 +01:00
drmortalwombat 6283f5f9e6 Improve accu train movement 2022-11-09 18:06:33 +01:00
drmortalwombat 93943f8f87 Fix pre decrement operator l value return type 2022-10-25 17:12:36 +02:00
drmortalwombat 0aee1ad452 Code size reduction for jmp to rts 2022-10-22 18:21:45 +02:00
drmortalwombat e52e554fec Add warning for missing return statement 2022-10-16 14:06:27 +02:00
drmortalwombat 4ff762b711 Add warning/error for unassigned variable access 2022-10-16 13:33:20 +02:00
drmortalwombat 4daecdc51a Optimize select statement 2022-10-03 18:56:17 +02:00
drmortalwombat bcc59a9afb Add intermediat code select operator 2022-07-02 14:53:00 +02:00
drmortalwombat 350403121d Move load temporary register moves out of loops 2022-06-26 15:15:59 +02:00
drmortalwombat 002c10ad13 Optimize array access and value propagation across simple loops 2022-06-21 20:57:58 +02:00
drmortalwombat beb8d8e6d7 Fix crash on error messages with unnamed objects 2022-06-06 22:06:57 +02:00
drmortalwombat 3351ee81cc Extend static stack allocation to zero page spilling 2022-05-22 13:22:36 +02:00
drmortalwombat 29bd0c8d2d Optimizations for global variables 2022-05-07 14:03:56 +02:00
drmortalwombat 7aec7f5c50 Fix crash compiling indexed memcpy size 2022-04-25 21:22:25 +02:00
drmortalwombat f619c5e0ab More verbose debug output 2022-04-25 07:57:31 +02:00
drmortalwombat 8f32b87b18 Fix call of function pointers in array 2022-04-13 16:29:36 +02:00
drmortalwombat 72264109e9 Add experimental zero page allocation for global variables 2022-04-06 19:16:44 +02:00
drmortalwombat 5a1ff68926 Fix binary and/or with boolean values, now raising a warning 2022-03-30 14:58:41 +02:00
drmortalwombat d2503aaf1f Constant folding address of global and static variables 2022-03-27 17:18:44 +02:00
drmortalwombat fc5c9f137a Add indexed const array initializer 2022-03-26 10:29:48 +01:00
drmortalwombat 4538f0295d Fix byte to long conversion 2022-03-20 21:33:58 +01:00
drmortalwombat 13f3ea57a3 Fix signed unsigned shift with mixed signed arguments 2022-03-19 19:46:40 +01:00
drmortalwombat a65c802485 Address promotion into struct copy inter instructions 2022-03-14 08:35:59 +01:00
drmortalwombat 6fe9a4f167 Fastcall optimization for 2nd and 3rd level calls 2022-03-10 16:35:35 +01:00
drmortalwombat b43edb2b4c Avoid inlining of native functions into byte code 2022-03-09 20:27:11 +01:00
drmortalwombat 6bd3ecb689 Fix over eager const expression inliner 2022-02-19 12:16:33 +01:00
drmortalwombat 1221649a3d Add check for __interrupt attribute on function pointers call from interrupt code 2022-02-15 09:49:46 +01:00
drmortalwombat fdb112a037 Add constant address calculation for struct members 2022-02-14 20:13:30 +01:00
drmortalwombat d4352ef043 Add __hwinterrupt function decoration 2022-02-06 10:28:09 +01:00
drmortalwombat 5147ec6bc9 Fix function pointers in struct consts 2022-02-05 16:52:54 +01:00
drmortalwombat 60165a7fc3 Add "*" symbol for current address in inline assembler 2022-01-29 13:33:57 +01:00
drmortalwombat dfe3d71f85 Make shore memcpy calls intrinsic 2022-01-27 23:08:57 +01:00
drmortalwombat 79a841a422 Mark vic registers as volatile 2022-01-27 16:38:47 +01:00
drmortalwombat 5c8b1c6daf Add __export, __native and __interrupt storage class specifiers 2022-01-26 21:48:19 +01:00
drmortalwombat cc927d778f Improve C const declaration compatibility 2022-01-21 14:42:49 +01:00
drmortalwombat 55affa4de9 Add auto inline of functions that trivially compute to a constat with constant arguments 2022-01-10 20:05:51 +01:00
drmortalwombat 68f8628409 Optimize size of generated byte code 2022-01-09 19:00:02 +01:00
drmortalwombat 640007546f Add __assume builtin function 2022-01-08 15:51:17 +01:00
drmortalwombat 71c574478c More integer value range optimizations 2021-12-23 14:31:58 +01:00
drmortalwombat 6d716b9478 Optimize 32bit shifts 2021-12-18 22:21:39 +01:00
drmortalwombat a1fda2b957 Fix float parameter and return values 2021-12-09 21:38:36 +01:00
drmortalwombat cf9f38d4dc Fix stacked fastcall invokation 2021-12-09 12:11:36 +01:00
drmortalwombat 75ea2ee439 Add PETSCII string literals 2021-12-06 20:54:11 +01:00
drmortalwombat 5549096cf7 Limit binary and, or and xor of byte operands to byte operations 2021-11-29 22:07:35 +01:00
drmortalwombat 5cce611659 Fix native code inner loop detection 2021-11-08 08:45:43 +01:00
drmortalwombat 180da3de4a Fix array[] parameters in functions 2021-11-04 08:29:54 +01:00
drmortalwombat 099f3b8a26 Fixe unsigned byte signed const comparison 2021-11-02 17:18:24 +01:00
drmortalwombat 2cd7956736 Remove stores to global variables that are never read 2021-11-01 16:08:37 +01:00
drmortalwombat d3cba85efe Optimize global variable alias analysis 2021-11-01 12:42:03 +01:00
drmortalwombat 135d357dbc Strcpy as intrinsic 2021-10-31 19:14:07 +01:00
drmortalwombat b9cbf525e9 Optimize native code XY index register usage 2021-10-30 22:29:32 +02:00
drmortalwombat b64079bf28 Optimize some constant shifts 2021-10-27 21:01:39 +02:00
drmortalwombat 480270f4c9 Fix array to pointer cast 2021-10-24 14:58:06 +02:00
drmortalwombat 42e4f483c1 Reduce register spilling on function entry/exit 2021-10-23 22:22:49 +02:00
drmortalwombat 7927df6d41 Fix call/return 2021-10-20 23:03:37 +02:00
drmortalwombat 6481e119e4 Fix various errors triggered by fuzzing 2021-10-17 18:20:44 +02:00