Kugel Fuhr
c7096ab6d7
Fix an error that was introduced by me in a4a24280f2:
...
Using a pipe causes a subshell to be generated so the "exit" statements will
just leave the subshell. As a consequence, the sortedxxx.sh scripts produced
output but no error exit code. Which in turn caused an error in #2778 to slip
through undetected.
2025-07-13 17:56:31 +02:00
Colin Leroy-Mira
20a9db757d
Optimize multiple incax* and incax*/ldaxi
...
- Group multiple calls to incax* and decax* into a single one
- Replace incaxN/jsr ldaxi with ldy #N+1/jsr ldaxidx
Fixes #2055
2025-07-06 20:37:01 +02:00
Colin Leroy-Mira
fe86149203
Further optimize inc/decsp
...
The optimizer can now merge incsp+decsp together, and merge
jsr incsp/decsp + jmp incsp/decsp together. Drop the code
altogether if both instructions cancel each other out.
Fixes #2748
2025-07-06 13:30:33 +02:00
Bob Andrews
801508aecf
Merge pull request #2735 from kugelfuhr/kugelfuhr/fix-2025
...
Add an optimization that removes compare instructions preceeding RTS or function calls
2025-06-26 00:29:29 +02:00
Kugel Fuhr
55d9b2dbd0
Rewrite the optimization step from c0a1b1b887 to
...
remove compares not only before RTS but also befoire function calls that don't
use the flags but destroy all of them. The latter is currently the case for
all functions called. This way the optimization covers a lot more cases than
just checking for RTS.
2025-06-25 20:07:36 +02:00
Kugel Fuhr
7a6c60ade4
Do also sort variables to satisfy sorted_codeopt.sh.
2025-06-24 20:21:43 +02:00
Kugel Fuhr
c0a1b1b887
Add an optimization step that removes compare instructions preceeding an RTS.
...
Since nothing is passed back in the flags, these instructions have no effect.
Fixes #2025 .
2025-06-24 18:02:24 +02:00
Gorilla Sapiens
a7af49a763
Merge branch 'master' into c_sp
2025-06-22 19:02:24 +00:00
Kugel Fuhr
2ceaa3fabb
Added a few simple optimizations that resolve most of #2527 .
2025-06-18 10:34:13 +02:00
GorillaSapiens
ae54171b8a
Merge branch 'master' into c_sp
2025-06-13 17:43:06 -07:00
Bob Andrews
af2ab29a91
Merge branch 'master' into c_sp
2025-06-12 23:38:48 +02:00
mrdudz
aaa1058d32
use explicit markers (comments) for the bsearch table checking, simplifies the scripts and makes them more robust too :)
2025-06-09 21:48:20 +02:00
mrdudz
ba80de5efc
fix bsearch tables that must be sorted, add comment to all tables that must be sorted
2025-06-09 17:58:58 +02:00
Gorilla Sapiens
b6f42f9ab2
changed "spc" to "c_sp"
2025-06-04 06:37:59 +00:00
Gorilla Sapiens
3d118dc6e5
rename "sp" to "spc", avoid conflict with 4510 opcodes
2025-06-04 02:06:40 +00:00
Kugel Fuhr
6e18e0880a
Added/improved the optimizations:
...
* Added a new pass that optimizes PHA/PLA sequences
* Added a new pass that optimizes AND/EOR/ORA when an operand is known
* Added a run of an existing pass at later stages to remove code that
otherwise goes unchanged.
* Handle binary operations in OptUnusedLoads in addition to real loads.
2024-09-13 19:30:38 +02:00
Colin Leroy-Mira
d8a3938f2b
Optimize a bit static long assignation
2023-12-01 14:20:00 +01:00
Colin Leroy-Mira
076137f41b
Optimize lda/sta/lda and friends
2023-11-13 10:32:09 +01:00
acqn
70549e868e
New optimizer steps to restore some possibly lost optimization with boolean due to the previous fix.
2023-10-21 23:56:13 +08:00
acqn
79c52e742f
Added new opts OptBoolUnary1/OptBoolUnary2 to remove unnecessary cmp + bcastax/bnegax,
...
as well as OptBoolUnary3 to "strength-reduce" certain bcastax/bnegax to boolne/booleq.
2023-10-21 23:56:04 +08:00
acqn
e5bbdfa995
Separated boolean optimizers from bitwise unary operator optimizers.
...
Renamed OptCmp6 to OptBoolCmp.
2023-10-21 23:56:01 +08:00
mrdudz
ddab16007a
run branch fixer again after replacing BRA by JMP. should fix #1936
2022-12-11 12:08:30 +01:00
compyx
2fdb1e6b0d
Fix set but unused variable
2022-05-17 10:05:25 +02:00
mrdudz
43af562ce1
At the end of the optimizer run, remove jump cascades again. fixes the
...
regression reported in #1652
2022-05-08 13:22:10 +02:00
acqn
2aad72af90
Removed trailing whitespaces.
2021-03-03 10:07:24 +01:00
acqn
bb7b69f513
Added OptShiftBack for shifting the C flag into register A and back.
2020-10-20 21:55:39 +02:00
acqn
0354322413
Added OptSignExtened for testing signness right after sign extention.
2020-10-20 21:55:39 +02:00
acqn
4f3a96a535
Added new opt OptPushPop2.
...
Also renamed OptPushPop to OptPushPop1.
2020-10-20 21:55:39 +02:00
acqn
64ef562fa7
Moved all optimization steps from codeopt.c and some optimization steps from coptind.c into new separate files.
2020-09-08 14:18:22 +02:00
acqn
676b14429d
Better opt chance for certain optimization steps e.g. OptPtrStore1 etc.
2020-09-04 12:00:10 +02:00
acqn
29d1999947
Rearranged the OptFunc's in alphabetic order.
2020-09-04 12:00:10 +02:00
acqn
761d00b7dc
Ignore running removed old optimization steps. Neither list them in help info.
2020-09-04 12:00:10 +02:00
Steven Hugg
dca99d59e5
rearranged order of new optimizations to better handle -Oi flag
2019-03-31 22:33:22 -04:00
Steven Hugg
5d274e4bc5
added optimization for indexed 16-bit array load of form (array[i & 0x7f])
2019-03-31 22:33:22 -04:00
Steven Hugg
ffc118cd94
added optimization for indexed pointer load of a constant, e.g.: y = ((unsigned char*)0x100)[i]
2019-03-31 22:33:22 -04:00
Greg King
a6b04f6e97
Changed most "backticks" (grave accents) into apostrophes.
...
Quotations that are embraced by tick marks now look better, in most fonts.
2019-01-05 14:57:12 -05:00
laubzega
5fa79be997
Post-review tweaks.
2018-10-16 09:55:02 +02:00
laubzega
7d9485f6bc
Typo
2018-10-16 09:55:02 +02:00
laubzega
cf7f3abadd
Even more optimization, cleanup, bugfix, comments.
2018-10-16 09:55:02 +02:00
laubzega
d3665b263e
Stack adjustment code optimizations.
2018-10-16 09:55:02 +02:00
Chris Cacciatore
66b30f0c7a
Added 'any' to --list-opt-steps.
2016-12-15 09:06:15 -08:00
Greg King
0390c34e88
Changed multi-line C comments into another style.
...
The left side doesn't look unbalanced.
2014-06-30 16:51:07 -04:00
Oliver Schmidt
4185caf855
Normalized code.
2014-03-04 01:11:19 +01:00
Oliver Schmidt
85885001b1
Removed (pretty inconsistently used) tab chars from source code base.
2013-05-09 13:57:12 +02:00
uz
e8964cde74
Quick fix for a problem in the OptLoad3 function. The fix isn't perfect and
...
may fail for inline assembly code, but at least it's less buggy than before.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5982 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-02-12 19:51:11 +00:00
uz
d6290e0a0f
Do an additional run of duplicate loads at the end of OptGroup4.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@5959 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-01-07 20:17:50 +00:00
uz
49e5d19950
Added an option to output the assembly after each transformation step of the
...
optimizer.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5781 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-07-12 20:30:01 +00:00
uz
40a3084553
Add another form of duplicate load removal.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@5778 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-07-10 20:46:21 +00:00
uz
58530c142a
Rearrange order of opt steps for better efficiency.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@5774 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-07-08 21:56:01 +00:00
uz
3365220827
Added optimization for complax.
...
git-svn-id: svn://svn.cc65.org/cc65/trunk@5771 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-07-07 19:54:24 +00:00