Karol Stasiak
53245eb1e2
Single threaded mode
2018-03-06 01:01:22 +01:00
Karol Stasiak
1909fd7154
Initialize constant registers outside loops
2018-03-06 00:22:39 +01:00
Karol Stasiak
addfde48ec
Better addition of words on stack on 65816
2018-03-06 00:21:43 +01:00
Karol Stasiak
9634ea9516
Don't emit warnings if an unused variable was assigned a simple expression
2018-03-06 00:20:50 +01:00
Karol Stasiak
92dd5d6913
Flow analysis improvements
2018-03-05 19:14:42 +01:00
Karol Stasiak
0f6bf6e63e
HuC6280's SAX and SAY depend on A
2018-03-05 19:13:44 +01:00
Karol Stasiak
3cd6540f13
Slightly faster variable to register optimization
2018-03-05 19:13:20 +01:00
Karol Stasiak
56e4b1fb70
Fixed miscompiled loops
2018-03-05 18:21:20 +01:00
Karol Stasiak
05e147b880
Removal of detailed flow analysis; it was slow and not worth it
2018-03-05 12:41:43 +01:00
Karol Stasiak
15dbaad6d1
Use zero page locations as as pseudo-registers; 8-bit multiplication and 16-bit shifts
2018-03-05 12:05:37 +01:00
Karol Stasiak
656dbef184
Optimize pulling a known constant from the stack in more cases
2018-03-05 11:32:31 +01:00
Karol Stasiak
38efdcc979
Allow inlinging variables to registers if there is a non-conflicting SEP/REP instruction
2018-03-05 11:31:02 +01:00
Karol Stasiak
606011ea38
New target: C64 with SuperCPU in native mode
2018-03-03 21:41:49 +01:00
Karol Stasiak
839c52204f
65816 native mode optimization improvements
2018-03-03 21:36:26 +01:00
Karol Stasiak
50ddd52786
Added break and continue statements
2018-03-03 21:34:12 +01:00
Karol Stasiak
ccb6e35a29
Fixed PHD/PHB-related optimizations
2018-03-03 15:06:49 +01:00
Karol Stasiak
2024c33ef2
Fixed suboptimal selection of variables for register inlining
2018-03-03 15:04:39 +01:00
Karol Stasiak
77797af564
65816 and 65CE02 optimization improvements
2018-03-03 14:33:07 +01:00
Karol Stasiak
33ee5115e0
Better stack- and interrupt handling for 65816 and 65CE02
2018-03-03 14:32:11 +01:00
Karol Stasiak
35f06d5486
Optimizer shouldn't remove LDA's before TSR and TRB
2018-03-03 14:31:06 +01:00
Karol Stasiak
6ed5d51260
Preliminary support for 65816, 65CE02 and HuC6280
2018-03-03 01:21:57 +01:00
Karol Stasiak
b3e96a0c6e
Using (zp,X) addressing mode when appropriate
2018-03-01 15:58:28 +01:00
Karol Stasiak
50b93db337
Constant pointer optimization
2018-03-01 15:57:54 +01:00
Karol Stasiak
f8bd496b6b
Important bugfixes; removing empty stores to larger variables
2018-03-01 15:57:18 +01:00
Karol Stasiak
3dc526bcb7
hi()/lo() builtins; identity table for using index registers as operands
2018-02-28 01:13:05 +01:00
Karol Stasiak
f31086e686
Inlining improvements and bugfixes
2018-02-28 01:11:14 +01:00
Karol Stasiak
828cef58dd
Small optimization fix
2018-02-28 01:09:22 +01:00
Karol Stasiak
3d056a7eee
Optimization improvements
2018-02-27 12:02:15 +01:00
Karol Stasiak
f9835ebf7e
Removed invalid optimization, added bit shifting optimization
2018-02-27 12:01:53 +01:00
Karol Stasiak
ee18fecedf
Optimize variables only written once
2018-02-27 01:20:42 +01:00
Karol Stasiak
747925f8fd
Added new -O1 optimization preset
2018-02-26 17:57:16 +01:00
Karol Stasiak
a2b6a392a5
Lazy flow analysis
2018-02-26 17:12:12 +01:00
Karol Stasiak
b9eb59ad51
Replace pointless LAX and ANC with their legal equivalents
2018-02-26 16:45:01 +01:00
Karol Stasiak
0f354d2f14
Fix for a bug in the variable-to-register optimization
2018-02-26 16:44:28 +01:00
Karol Stasiak
3c3ac9d70e
Simple loop unrolling; --blast-processing command line option
2018-02-26 12:22:10 +01:00
Karol Stasiak
6f9ee33514
Added -Of and -Os command line options
2018-02-26 02:41:18 +01:00
Karol Stasiak
7b480ea876
Even more optimizations
2018-02-26 01:07:23 +01:00
Karol Stasiak
03c400a356
More diagnostic messages after compilation
2018-02-26 01:06:09 +01:00
Karol Stasiak
7cd13332a3
More optimizations using illegal opcodes
2018-02-25 00:46:21 +01:00
Karol Stasiak
6dd4a0c5ce
Smarter reverse flow analyser
2018-02-25 00:45:46 +01:00
Karol Stasiak
fa56d31cb4
Fixes for pointee incrementing and decimal addition
2018-02-25 00:45:25 +01:00
Karol Stasiak
8d482ca8bf
.ini parsing fix
2018-02-25 00:43:31 +01:00
Karol Stasiak
ca6534c3a7
Fix for common index subexpression elimination optimization
2018-02-22 13:36:56 +01:00
Karol Stasiak
9f54a4d111
Macros should also accept indexed expressions as actual params
2018-02-22 13:36:19 +01:00
Karol Stasiak
d6f38ba87b
More optimizations
2018-02-14 22:50:34 +01:00
Karol Stasiak
54e7139e84
Refactoring
2018-02-11 18:55:21 +01:00
Karol Stasiak
2665f18c77
Macro expansion fix, improved constant folding
2018-02-03 17:49:29 +01:00
Karol Stasiak
0ca1be0c00
Tons of things:
...
– changed `inline` to `macro`
– added support for parameters for macros written in Millfork
– added `inline`, `noinline`, `register` hints
– added <<<< operator
– pointer dereference expressions are now supported more widely
– C64 library fixes
– added `-O1` command line option as an alias for `-O`
2018-02-01 22:39:38 +01:00
Karol Stasiak
c599db0068
Inline assembly improvements
2018-02-01 00:22:53 +01:00
Karol Stasiak
9410b8f9e3
Interrupt handler optimization
2018-01-31 22:27:11 +01:00