X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2Fcmm-notes;h=98c2e836994c8e05990c47205af7de371a4d2ff2;hp=e787f18b17bb5af22b0a00be5f5df81d92c53d04;hb=d25676a6b1c42495702048b6ca6f26ebd15205d8;hpb=dcc7b25a12eb07285a0b717b43ce62feb1f7dae1 diff --git a/compiler/cmm/cmm-notes b/compiler/cmm/cmm-notes index e787f18..98c2e83 100644 --- a/compiler/cmm/cmm-notes +++ b/compiler/cmm/cmm-notes @@ -1,3 +1,45 @@ +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 + Notes on new codegen (Aug 10) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~