mirror of
https://github.com/open-goal/jak-project
synced 2026-09-03 02:14:07 -04:00
[goalc] register allocator v2 (#731)
* clean up allocator interface to be simpler * working on functions without spills * working for all * fix missing includes for windows * more windows includes * initialize regs to zero so printing value unintiailized by game code is repeatable
This commit is contained in:
@@ -184,4 +184,6 @@
|
||||
- Multiple variables assigned to the same register using `:reg` in `rlet` (or overlapping with `self` in a behavior) will now be merged to a single variable instead of causing a compiler error. Variables will have their own type, but they will all be an alias of the same exact register.
|
||||
- Stack arrays of uint128 will now be 16-byte aligned instead of sometimes only 8.
|
||||
- Inline arrays of structures are now allowed with `stack-no-clear`.
|
||||
- Creating arrays on the stack now must be done with `stack-no-clear` as they are not memset to 0 or constructed in any way.
|
||||
- Creating arrays on the stack now must be done with `stack-no-clear` as they are not memset to 0 or constructed in any way.
|
||||
- The register allocator has been dramatically improved and generates ~5x fewer spill instructions and is able to eliminate more moves.
|
||||
- Added a `(print-debug-compiler-stats)` form to print out statistics related to register allocation and move elimination
|
||||
Reference in New Issue
Block a user