summaryrefslogtreecommitdiff
path: root/compiler/cmm/cmm-notes
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2011-06-10 19:45:17 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2011-06-10 19:45:17 +0100
commitd25676a6b1c42495702048b6ca6f26ebd15205d8 (patch)
tree3b8b9104b39443911db432a5d9e6c08651ec7e1f /compiler/cmm/cmm-notes
parent75f9f3559b9959f067c893ae3f7c89da7fd18813 (diff)
downloadhaskell-d25676a6b1c42495702048b6ca6f26ebd15205d8.tar.gz
Comments, layout and cmm-notes
...all to do with the new codgen path
Diffstat (limited to 'compiler/cmm/cmm-notes')
-rw-r--r--compiler/cmm/cmm-notes38
1 files changed, 38 insertions, 0 deletions
diff --git a/compiler/cmm/cmm-notes b/compiler/cmm/cmm-notes
index c0ccadfbec..98c2e83699 100644
--- a/compiler/cmm/cmm-notes
+++ b/compiler/cmm/cmm-notes
@@ -1,3 +1,41 @@
+More notes (June 11)
+~~~~~~~~~~~~~~~~~~~~
+* Kill dead code assignArguments, argumentsSize in CmmCallConv.
+ Bake in ByteOff to ParamLocation and ArgumentFormat
+ CmmActuals -> [CmmActual] similary CmmFormals
+
+* Possible refactoring: Nuke AGraph in favour of
+ mkIfThenElse :: Expr -> Graph -> Graph -> FCode Graph
+ or even
+ mkIfThenElse :: HasUniques m => Expr -> Graph -> Graph -> m Graph
+ (Remmber that the .cmm file parser must use this function)
+
+ or parameterise FCode over its envt; the CgState part seem useful for both
+
+* Move top and tail calls to runCmmContFlowOpts from HscMain to CmmCps.cpsTop
+ (and rename the latter!)
+
+* "Remove redundant reloads" in CmmSpillReload should be redundant; since
+ insertLateReloads is now gone, every reload is reloading a live variable.
+ Test and nuke.
+
+* Sink and inline S(RegSlot(x)) = e in precisely the same way that we
+ sink and inline x = e
+
+* Stack layout is very like register assignment: find non-conflicting assigments.
+ In particular we can use colouring or linear scan (etc).
+
+ We'd fine-grain interference (on a word by word basis) to get maximum overlap.
+ But that may make very big interference graphs. So linear scan might be
+ more attactive.
+
+ NB: linear scan does on-the-fly live range splitting.
+
+* When stubbing dead slots be careful not to write into an area that
+ overlaps with an area that's in use. So stubbing needs to *follow*
+ stack layout.
+
+
More notes (May 11)
~~~~~~~~~~~~~~~~~~~
In CmmNode, consider spliting CmmCall into two: call and jump