summaryrefslogtreecommitdiff
path: root/compiler/nativeGen/NOTES
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.