TODO list update
This commit is contained in:
@@ -22,20 +22,6 @@
|
|||||||
/*
|
/*
|
||||||
Performance and code-quality ideas:
|
Performance and code-quality ideas:
|
||||||
|
|
||||||
- Reduced spilling when spillslot is still "clean":
|
|
||||||
- Track 'dirty' status of reg and elide spill when not dirty.
|
|
||||||
- This is slightly tricky: fixpoint problem, across edges.
|
|
||||||
- We can simplify by assuming spillslot is dirty if value came
|
|
||||||
in on BB edge; only clean if we reload in same block we spill
|
|
||||||
in.
|
|
||||||
- As a slightly better variation on this, track dirty during
|
|
||||||
scan in a single range while resolving moves; in-edge makes
|
|
||||||
dirty.
|
|
||||||
|
|
||||||
- or: track "at most one" def-points: at a join, new def point
|
|
||||||
if at least one of the in-edges is a def point. Do this during
|
|
||||||
liveness by tracking ...?
|
|
||||||
|
|
||||||
- Avoid requiring two scratch regs:
|
- Avoid requiring two scratch regs:
|
||||||
- Require machine impl to be able to (i) push a reg, (ii) pop a
|
- Require machine impl to be able to (i) push a reg, (ii) pop a
|
||||||
reg; then generate a balanced pair of push/pop, using the stack
|
reg; then generate a balanced pair of push/pop, using the stack
|
||||||
@@ -46,6 +32,10 @@
|
|||||||
first preferred one), reload into it, spill out of it, and then
|
first preferred one), reload into it, spill out of it, and then
|
||||||
pop old val
|
pop old val
|
||||||
|
|
||||||
|
- Better hinting: collect N regs associated with one spillslot?
|
||||||
|
Collect pointers to other "connected" spillslots (via moves) to
|
||||||
|
allow move to be elided if possible?
|
||||||
|
|
||||||
- Profile allocations
|
- Profile allocations
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user