NOTES about NCG
I'm in the process of reorganizing the nativeGen
directory (cf #13009 (closed)). It contains the following NOTES file with some TODOs. We may want to open separate issues to track them as I'll remove the file.
TODO in new NCG
~~~~~~~~~~~~~~~
- Are we being careful enough about narrowing those out-of-range CmmInts?
- Register allocator:
- fixup code
- keep track of free stack slots
Optimisations:
- picking the assignment on entry to a block: better to defer this
until we know all the assignments. In a loop, we should pick
the assignment from the looping jump (fixpointing?), so that any
fixup code ends up *outside* the loop. Otherwise, we should
pick the assignment that results in the least fixup code.
- splitting?
-- -----------------------------------------------------------------------------
-- x86 ToDos
- x86 genCCall needs to tack on the @size for stdcalls (might not be in the
foreignlabel).
- x86: should really clean up that IMUL64 stuff, and tell the code gen about
Intel imul instructions.
- x86: we're not careful enough about making sure that we only use
byte-addressable registers in byte instructions. Should we do it this
way, or stick to using 32-bit registers everywhere?
- Use SSE for floating point, optionally.
------------------------------------------------------------------------------
-- Further optimisations:
- We might be able to extend the scope of the inlining phase so it can
skip over more statements that don't affect the value of the inlined
expr.