drmortalwombat
efd688320f
Improve peephole optimizer for shifts
2024-07-18 14:18:06 +02:00
drmortalwombat
d0fb062006
Make log and exp intrinsics for const evaluation
2024-07-17 12:42:15 +02:00
drmortalwombat
c229a27992
Improve cross loop value propagation
2024-07-16 08:36:52 +02:00
drmortalwombat
d3536a718e
Merge partially common register loads across basic blocks
2024-07-13 20:44:49 +02:00
drmortalwombat
5909db71d5
Fix loss of dependency when propagating (zp),y single use load across basic blocks
2024-07-12 21:02:46 +02:00
drmortalwombat
96ada6e22a
Optimize int->long conversion for known positive values
2024-07-11 16:32:11 +02:00
drmortalwombat
85f01b833c
Fix invalid index propagation
2024-07-10 18:49:10 +02:00
drmortalwombat
68a648440a
Fix crash on short lea optimization due to lost temp dependencies
2024-07-10 18:31:32 +02:00
drmortalwombat
a3bf7296bb
Reduce index register usage, where ORA Imm would suffice
2024-07-09 11:24:02 +02:00
drmortalwombat
dd1f5b9043
Fix literal string concatenation in parser
2024-07-07 21:18:17 +02:00
drmortalwombat
fcc2cbbebe
Remove superfluous CPX/CPY with #0
2024-07-06 15:08:03 +02:00
drmortalwombat
470462fe8b
Optimize consecutive increments
2024-07-05 22:59:16 +02:00
drmortalwombat
301431f12a
Eliminate duplicate loop counting variables
2024-07-05 10:12:55 +02:00
drmortalwombat
c0e524cd82
Bump version number
2024-07-04 11:01:58 +02:00
drmortalwombat
4068957442
Fix register dependency update in multi block loop optimization
2024-07-04 10:42:22 +02:00
drmortalwombat
bf89d7af33
Improve loop register allocation
2024-07-03 22:23:27 +02:00
drmortalwombat
d070e32b4d
Loop unrolling for pointer limited short loops
2024-06-30 21:54:56 +02:00
drmortalwombat
ad310f8484
Fix sign flag propagationa after immediate ora
2024-06-30 21:28:35 +02:00
drmortalwombat
7eb149a71b
Optimize value range of right shifts
2024-06-30 15:45:34 +02:00
drmortalwombat
1c0db235a8
Fix emulator cycle count
2024-06-30 12:29:41 +02:00
drmortalwombat
94181326ca
Add uppercase -D for define without separate argument
2024-06-28 16:00:48 +02:00
drmortalwombat
cd7567452a
Fix return of reference of simple type from inlined function into non ref argument
2024-06-27 19:34:57 +02:00
drmortalwombat
2fec9f066f
Refactor large peephole optimizer loop
2024-06-27 15:28:21 +02:00
drmortalwombat
fe736289e6
Fix goto to label connection in inlined functions
2024-06-25 21:56:36 +02:00
drmortalwombat
715f295f5e
Add goto and labels in C code
2024-06-25 20:45:44 +02:00
drmortalwombat
a71c433fc4
Add -D for gcc compliant defines
2024-06-24 18:14:07 +02:00
drmortalwombat
9678814654
Fix crash with extern object pointer arithmetic
2024-06-23 17:05:46 +02:00
drmortalwombat
1598360b65
Fix relational bool ops constant folding
2024-06-22 15:41:02 +02:00
Kopromaster
3851a4c2db
Merge branch 'drmortalwombat:main' into main
2024-06-21 21:08:24 +00:00
drmortalwombat
1a6a98e57e
Reduce stack usage when compiled with MSVC due to optimizer function size limit
2024-06-21 12:04:39 +02:00
Test User
5ddfc628dc
Bugfix: __try and __except are MSVC specific
2024-06-20 23:01:46 +02:00
drmortalwombat
bf5099f57b
Improve auto inline heuristics
2024-06-20 21:02:55 +02:00
drmortalwombat
d4a381f71c
Fix size heuristic of loop condition slicing
2024-06-20 09:42:22 +02:00
drmortalwombat
17002e4c78
More native code load/store forwarding
2024-06-19 21:40:38 +02:00
drmortalwombat
cf9a006005
Retain Z flag when restoring Y after index reduction
2024-06-19 17:45:20 +02:00
drmortalwombat
1fa9828f6a
Add additiona raster irq for kernal with potential no IO
2024-06-18 20:35:38 +02:00
drmortalwombat
3f9d042863
Optimize xy before loop index register assignment
2024-06-18 16:08:53 +02:00
drmortalwombat
277afd156d
Fix over eager const pointer forwarding
2024-06-16 09:01:36 +02:00
drmortalwombat
b428b608b5
Fix extern undefined struct in header file
2024-06-15 17:24:04 +02:00
drmortalwombat
58361e39b8
Fix crash on late const typecast to pointer
2024-06-15 13:35:17 +02:00
drmortalwombat
3770a05aee
Add fast loader library flossiec
2024-06-13 21:16:42 +02:00
drmortalwombat
5993f75c92
Bump version number
2024-06-12 21:30:16 +02:00
drmortalwombat
02b28096af
fix pragma optimize inline
2024-06-12 07:36:30 +02:00
drmortalwombat
02e921364b
Add support for charpad 9 format
2024-06-11 22:26:10 +02:00
drmortalwombat
4cf64ee170
Fix loop inversion invariant integer range recovery
2024-06-11 21:01:20 +02:00
drmortalwombat
c99c1756a9
Fix parameter address reference in __asm embedding
2024-06-11 13:07:50 +02:00
drmortalwombat
5ccfab0342
Fix IEC code for non interrupt usage
2024-06-11 12:12:29 +02:00
drmortalwombat
ff6bb8ccd5
Fix type of addressof reference
2024-06-08 16:48:44 +02:00
drmortalwombat
2e3aea9d96
Fix reference parameter capture
2024-06-08 16:43:33 +02:00
drmortalwombat
4954a285e7
Add interleave option for sectors in disk image
2024-06-05 22:21:21 +02:00
drmortalwombat
46b52a57f7
Add binary not operator to inline assembler operand parsing
2024-06-04 09:07:50 +02:00
drmortalwombat
41ba2e73f2
Fix labels in inline assembler with an offset > 255
2024-06-03 13:06:45 +02:00
drmortalwombat
fbc9607e17
Ensure actual update of index variable in loops in non debug builds
2024-05-30 17:51:59 +02:00
drmortalwombat
2e696d9e1a
Optimize small inline function calls
2024-05-30 17:51:34 +02:00
drmortalwombat
2e1c020db4
Bump version number
2024-05-26 08:43:14 +02:00
drmortalwombat
13629c70d4
Fix auto deduction of void return type
2024-05-25 22:25:59 +02:00
drmortalwombat
b1b5ee737b
Fix functional for no parameters
2024-05-25 22:05:31 +02:00
drmortalwombat
af38f64a99
Add opp::function
2024-05-25 21:25:02 +02:00
drmortalwombat
a22dfa6ba7
Add pure virtual functions
2024-05-23 21:15:47 +02:00
drmortalwombat
9fa8b644a7
Add object placement retry if page locking does not fit
2024-05-23 09:54:07 +02:00
drmortalwombat
375307822e
Fix auto template expansion of class constructor
2024-05-22 22:44:53 +02:00
drmortalwombat
c0152b1ce4
fix template deduction for member functions
2024-05-22 20:53:23 +02:00
drmortalwombat
3460c06508
Improve strength reduction in loops
2024-05-22 20:36:22 +02:00
drmortalwombat
d3734a66e0
Fix complex loop intercode index reversal
2024-05-22 12:16:30 +02:00
drmortalwombat
ccf13c78f0
Fix index register conflict when removing condition check after load
2024-05-21 22:03:51 +02:00
drmortalwombat
2c28551ca3
Improve index register cross block handling
2024-05-20 16:24:28 +02:00
drmortalwombat
4fb35a7af2
Add error when exceeding assembler limits
2024-05-20 09:03:41 +02:00
drmortalwombat
a2a22476ed
Add constexpr pointers for inline assembler
2024-05-19 22:20:52 +02:00
drmortalwombat
1b22a5e3c5
Fix constant fold error
2024-05-19 21:38:19 +02:00
drmortalwombat
ab06d85a91
Add global inline assembler optimization for static const to immediate propagation
2024-05-19 20:48:14 +02:00
drmortalwombat
d79aae3078
Fix inline mapper for inline assembler
2024-05-19 19:11:48 +02:00
drmortalwombat
4c0e737508
Fix over eager pre processor tokenizer
2024-05-19 17:16:14 +02:00
drmortalwombat
86e0cbf9c2
Alternate forward and backward int value range check
2024-05-19 10:19:42 +02:00
drmortalwombat
142bc988b1
Bump version number
2024-05-17 13:12:24 +02:00
drmortalwombat
3ea44d1979
Fix usage of "ldx abs,x" in some corner cases
2024-05-16 17:45:36 +02:00
drmortalwombat
04d1abd803
Some peephole loop optimizations
2024-05-12 21:06:50 +02:00
drmortalwombat
ba1bc29b1a
Fix X vz Z flag swapping
2024-05-05 20:54:21 +02:00
drmortalwombat
37776dfaee
Remove more conditional branches from loops
2024-05-05 13:14:23 +02:00
drmortalwombat
c28f342f3e
Remove some superflous range violation warnings
2024-05-03 14:54:58 +02:00
drmortalwombat
354a420aa4
Bump version number
2024-05-01 15:49:17 +02:00
drmortalwombat
fb72e8baf8
Fix over eager parameter reordering
2024-05-01 15:30:18 +02:00
drmortalwombat
976703f713
Fix O2 parameter forwarding optimization
2024-05-01 14:08:42 +02:00
drmortalwombat
dc5afa6e79
Fix shift optimization had wrong address check
2024-04-30 08:51:22 +02:00
drmortalwombat
740762d4a1
Fix loss of zero flag in 16bit optimization
2024-04-30 08:06:20 +02:00
drmortalwombat
f0b7cddeb1
Optimize indirecte 16bit store by flipping low/high order
2024-04-28 21:13:41 +02:00
drmortalwombat
9b47a34840
Improve reordering of function arguments
2024-04-28 20:15:17 +02:00
drmortalwombat
bb8c31bf32
Some peephole optimization
2024-04-23 20:54:48 +02:00
drmortalwombat
87ca43e5b7
Add spritepad version 1 file parsing
2024-04-23 17:51:42 +02:00
drmortalwombat
411648b130
Improve long counting loops
2024-04-22 22:48:15 +02:00
drmortalwombat
611f672b81
Add warning for static buffer overflow
2024-04-15 15:40:37 +02:00
drmortalwombat
c3c0583f19
Fix const array dereference
2024-04-12 16:51:26 +02:00
drmortalwombat
55ddce2211
Fix const array access folding
2024-04-12 16:11:47 +02:00
drmortalwombat
5971f9a80f
bump version number
2024-04-12 15:54:54 +02:00
drmortalwombat
fbfd597306
Fix float param to const propagation
2024-04-12 15:50:46 +02:00
drmortalwombat
0184a550c5
Fix volatile violation when recycling immediates
2024-04-10 15:15:22 +02:00
drmortalwombat
2cdc95ba05
Fix assert in samples
2024-04-09 15:57:53 +02:00
drmortalwombat
fefa462730
Improve zero page variable usage
2024-04-08 22:04:50 +02:00
drmortalwombat
7b20e6cca0
Optimize 16 bit counting loops
2024-03-31 14:29:22 +02:00
drmortalwombat
ed82e3595b
Bump version number
2024-03-30 10:40:00 +01:00
drmortalwombat
6cfdc0ce5f
Fix removal of consecutive indexed stores in unrolled loop
2024-03-29 18:49:58 +01:00
drmortalwombat
1f17f1c198
Fix assert in peephole optimizer
2024-03-26 08:23:13 +01:00
drmortalwombat
aa601a5727
Change memset and memclr to intrinsic functions
2024-03-24 11:22:13 +01:00
drmortalwombat
85fad64e9c
Optimize post inc/dec while loop conditions
2024-03-21 19:33:50 +01:00
drmortalwombat
30d942478f
Fix infinite loop in move condition out of loop
2024-03-13 22:14:29 +01:00
drmortalwombat
89750c3f73
promote array of const members to be const as well
2024-03-11 13:40:54 +01:00
drmortalwombat
45246a2f2d
Fix variable size when defining extern struct with anon struct
2024-03-07 20:42:21 +01:00
drmortalwombat
0c43952e37
Improve constant branch forwarding
2024-03-07 13:20:39 +01:00
drmortalwombat
f877e5b8c2
Fix assert in linux sample build
2024-02-28 21:26:25 +01:00
drmortalwombat
2d50d56606
Fix copy and load with striped arrays
2024-02-27 18:02:12 +01:00
drmortalwombat
bdecbe77e4
Fix 16bit zero page global variable inc/dec
2024-02-27 09:08:56 +01:00
drmortalwombat
f39cb38eb3
Fix unary ops on striped struct members
2024-02-26 20:38:02 +01:00
drmortalwombat
e2f822e7d1
Improve short function call loop
2024-02-25 18:43:53 +01:00
drmortalwombat
0b58e9eaaf
Fix global aliasing collision with striped data
2024-02-25 18:00:10 +01:00
drmortalwombat
0a76a57f18
Bump version number
2024-02-24 15:50:47 +01:00
drmortalwombat
22ffbfa63c
Fix source location when coalescing JSR and RTS in JMP
2024-02-24 09:52:32 +01:00
drmortalwombat
94a3097ba7
Fix find loop optimization with mirrored condition
2024-02-21 15:05:17 +01:00
drmortalwombat
aab71cbab3
Add more std c include files
2024-02-20 14:16:32 +01:00
drmortalwombat
1041ef03eb
Bump version number
2024-02-19 14:30:53 +01:00
drmortalwombat
e2f36bbb9a
Fix parse embed with hex skip or size setting
2024-02-19 14:19:15 +01:00
drmortalwombat
5e9df61ffc
Fix read after write hazzard in function param proxy size optimization
2024-02-18 20:35:07 +01:00
drmortalwombat
cc5a90ac21
Fix long unsigned int comparison
2024-02-18 18:30:51 +01:00
drmortalwombat
3900e1cf92
fix pragma strings with petscii
2024-02-18 17:57:27 +01:00
drmortalwombat
6b98a44fc0
Improve auto inlining decision with O2
2024-02-18 14:35:41 +01:00
drmortalwombat
2698595302
bump version number
2024-02-18 10:02:29 +01:00
drmortalwombat
f6ab79319f
More compatibility fixes for -psci
2024-02-18 09:31:05 +01:00
drmortalwombat
264a80d88e
Pausing petscii string options for #include and #embed
2024-02-17 17:43:24 +01:00
drmortalwombat
020ab117a4
Fix value copy crossing function call
2024-02-17 17:37:47 +01:00
drmortalwombat
8457316815
Fix unsigned promotion for binary not operator
2024-02-17 13:10:14 +01:00
drmortalwombat
58ffe2ad06
Fix hex arguments for pragmas
2024-02-17 12:53:31 +01:00
drmortalwombat
6f7efd9efc
Optimized long multiply
2024-02-17 12:06:15 +01:00
drmortalwombat
b84cce7609
Improve compatibility with some C quirks
2024-02-16 21:39:35 +01:00
drmortalwombat
8fc382c11e
Fix high byte address calculation cascade
2024-02-15 20:52:10 +01:00
drmortalwombat
fadcb61bc7
bump version number
2024-02-15 16:20:15 +01:00
drmortalwombat
7ebf71b161
Switch to Visual Studio 2022 toolset
2024-02-15 15:36:25 +01:00
drmortalwombat
003550337a
Fix debug and linux build
2024-02-15 13:29:02 +01:00
drmortalwombat
c909995011
Reduce compiler memory footprint
2024-02-15 09:58:26 +01:00
drmortalwombat
18cfbc713a
Force some inline calls in vdc
2024-02-14 15:24:01 +01:00
drmortalwombat
806539a2d6
add "tan" to intrinsic functions
2024-02-13 20:49:11 +01:00
Stefan
1d49e0a987
Fixed warning
...
c++ -c -g -O2 -std=c++11 -Wno-switch ../oscar64/oscar64.cpp -o oscar64.o
../oscar64/Scanner.cpp:768:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
while (mTokenString[i] = def->mString[i])
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../oscar64/Scanner.cpp:768:29: note: place parentheses around the assignment to silence this warning
while (mTokenString[i] = def->mString[i])
^
( )
../oscar64/Scanner.cpp:768:29: note: use '==' to turn this assignment into an equality comparison
while (mTokenString[i] = def->mString[i])
^
==
1 warning generated.
2024-02-13 18:28:33 +01:00
drmortalwombat
bcc20d3986
Switch to x64 compiler binary
2024-02-13 16:53:44 +01:00
drmortalwombat
431c5d3282
Add info message, if object cannot be placed by linker
2024-02-12 18:06:30 +01:00
drmortalwombat
ce5be92225
Fix linux build
2024-02-12 17:40:03 +01:00
drmortalwombat
2ed3d8b445
Bump version number
2024-02-04 11:26:37 +01:00
drmortalwombat
f498da5e42
Add __DATE__ and __TIME__ defines
2024-02-04 10:45:02 +01:00
drmortalwombat
7d6eb36ee7
Fix assignment of immediates to returned struct
2024-02-04 09:43:52 +01:00
drmortalwombat
ecaab1b5b3
Fix crash compiling infinite loop
2024-01-30 15:04:13 +01:00
drmortalwombat
80efe2351b
Optimize short wait loop handling
2024-01-28 19:09:59 +01:00
drmortalwombat
91c907be7e
Improve BYT operands in inline assembler
2024-01-28 09:39:40 +01:00
drmortalwombat
fafbbe82d1
Fix prevent swap of X and Y when used in JSR
2024-01-27 19:50:34 +01:00
drmortalwombat
b3d80bcb0f
Limit inline asm check to same section
2024-01-27 17:50:53 +01:00
drmortalwombat
4901e015f6
Undo JSR optimization for testing
2024-01-27 17:48:30 +01:00
drmortalwombat
fdb52bcdc6
Limit JSR->JMP forwarding
2024-01-27 17:43:08 +01:00
drmortalwombat
974688a8a5
Fix overlay prg file save
2024-01-27 17:11:10 +01:00
drmortalwombat
2ad71ef867
Bump version number
2024-01-27 10:26:22 +01:00
drmortalwombat
c1083b44dc
Optimize constant loops
2024-01-27 10:19:14 +01:00
drmortalwombat
b0dc6fdd1e
Add save as .prg for overlay files
2024-01-27 09:37:48 +01:00
drmortalwombat
7f51d6330e
Fixed 1 - i for bytes, wrong operand order
2024-01-26 12:41:13 +01:00
drmortalwombat
3992b1d547
Add warning for out of bounds accesses
2024-01-24 17:30:03 +01:00
drmortalwombat
2c1a87ce02
Control assert with _DEBUG to avoid gcc core dump
2024-01-23 16:53:30 +01:00
drmortalwombat
529618ffa4
Changed error format to "oscar64:" when error outside of source file
2024-01-23 15:58:47 +01:00
drmortalwombat
bcc5e9d362
Fix propagation of conditions out of loops
2024-01-23 09:02:38 +01:00
drmortalwombat
6444ba58cf
bump version number
2024-01-21 15:39:26 +01:00
drmortalwombat
4fc3e019d5
Add ranges in case statements (gcc extension)
2024-01-21 15:17:46 +01:00
drmortalwombat
dcebdeaa5f
Fix parsing of trailing comma in initializer list
2024-01-21 09:25:34 +01:00
drmortalwombat
8a49ffd111
Improve unrolled loops towards zero
2024-01-20 13:49:25 +01:00
drmortalwombat
a19469d851
Fix exportet variable alignment calculation
2024-01-16 08:12:47 +01:00
drmortalwombat
265be6e766
Move linker chattyness into -v2
2024-01-12 22:51:11 +01:00
drmortalwombat
cac7db4358
Fix memory size mismatch in reverse integer range propagation due to register renaming
2024-01-10 22:59:45 +01:00
drmortalwombat
4eaa6c8b1e
Add immediate variable address parameter in inline assembler
2024-01-10 12:22:46 +01:00
drmortalwombat
5634abdba4
Fix compiler warnings on linux/macos
2024-01-09 20:04:40 +01:00
drmortalwombat
a6b3533e61
Fix struct volatile cast
2024-01-08 20:41:48 +01:00
drmortalwombat
1abdd1476e
Fix error message when propagating invalid function parameter to const
2024-01-08 18:20:55 +01:00
drmortalwombat
0bc4e7cda6
Fix inc/mov of absolute values
2024-01-07 16:13:01 +01:00
drmortalwombat
36d6fc6760
Fix placement of proxy variables for unused parameters
2024-01-06 20:00:55 +01:00
drmortalwombat
7ea4356361
Fix function end location in dbj file
2024-01-06 17:07:10 +01:00
drmortalwombat
d676ccc1bd
Fix dbj file reference with optimized variable
2024-01-06 14:03:29 +01:00
drmortalwombat
1c1d7fefaa
Add c128e target machine
2024-01-06 09:09:52 +01:00
drmortalwombat
a7d7db37df
Bump version number
2024-01-04 17:56:42 +01:00
drmortalwombat
5d51cf75e8
Fix cross block zp move optimization
2024-01-04 14:14:28 +01:00
drmortalwombat
d9f81ad653
Improve cross function memory aliasing analysis
2024-01-03 22:23:20 +01:00
drmortalwombat
34947da898
Fix loop integer range propagation
2024-01-02 22:21:05 +01:00
Ralf Horstmann
fc6c83e9cd
Fix out of bounds access to LinkerObjectTypeNames
...
One entry was missing, causing segmentation fault on some platforms.
2024-01-01 14:16:02 +01:00
drmortalwombat
940cb4a5b9
Add declaration to reference list in dbj
2023-12-31 13:30:29 +01:00
drmortalwombat
c138c0f2ae
Fix loss of zp dependency on diamond register propagation
2023-12-31 10:29:59 +01:00
drmortalwombat
5a3cbff259
Add references to dbj file
2023-12-30 12:17:46 +01:00
drmortalwombat
da20b4d27a
Fix atan2, failed in mathtest.c
2023-12-30 09:21:17 +01:00
drmortalwombat
064bf0f8e5
Bump Version Number
2023-12-23 10:45:00 +01:00
drmortalwombat
a305dbb1cd
Improve function placement in linker
2023-12-23 10:40:45 +01:00
drmortalwombat
59b1d971d0
Changes sprintf to snprintf
2023-12-18 13:00:54 +01:00
drmortalwombat
ef6598e94b
Fix unnamed structs
2023-12-18 07:40:31 +01:00
drmortalwombat
04518e4ff3
Add error message for unnamed structs
2023-12-17 22:45:21 +01:00
drmortalwombat
4a8010a3a0
Fix loss of zero page dependency in tail code merge
2023-12-17 12:40:09 +01:00
drmortalwombat
ae4b48c445
Various loop optimizations
2023-12-16 21:03:09 +01:00
drmortalwombat
6cf8466dfd
Fix overeager lda/sta join of tail blocks
2023-12-12 22:39:22 +01:00
drmortalwombat
6bbf325720
Add BIT instruction for sign check, add inlay sections in linker
2023-12-12 11:08:59 +01:00
drmortalwombat
ee67c6dec1
Add more HEAPCHECK
2023-12-10 12:41:37 +01:00
drmortalwombat
16810b63d4
Fix over eager lda/sta movement
2023-12-10 09:48:23 +01:00
drmortalwombat
1e0450cd8a
Optimize sprite multiplexer
2023-12-09 13:40:58 +01:00
drmortalwombat
1d337f1244
Fix accu train movement to end of block
2023-12-07 14:22:05 +01:00
drmortalwombat
cce2f272ef
Add optimization section to readme
2023-12-06 13:55:38 +01:00