blob: 9068a7fc2caf51f6d7012db40fd8a9ac58284f58 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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.
|