X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2Fcmm-notes;fp=compiler%2Fcmm%2Fcmm-notes;h=4a87911ec544ea5d076f73ea86a61751f50e74c0;hp=5f26edda7b421b39c394e7244e7218509f2c58ab;hb=de2d10e18ce23e5df7fa4f3433b85c95d6092b58;hpb=c8e5f0f65223013cd21f25512b21eac0327aefdf diff --git a/compiler/cmm/cmm-notes b/compiler/cmm/cmm-notes index 5f26edd..4a87911 100644 --- a/compiler/cmm/cmm-notes +++ b/compiler/cmm/cmm-notes @@ -8,8 +8,6 @@ More notes (June 11) or parameterise FCode over its envt; the CgState part seem useful for both -* Rename CmmCPS - * "Remove redundant reloads" in CmmSpillReload should be redundant; since insertLateReloads is now gone, every reload is reloading a live variable. Test and nuke. @@ -250,7 +248,7 @@ CmmCvt.hs Conversion between old and new Cmm reps CmmOpt.hs Hopefully-redundant optimiser -------- Stuff to keep ------------ -CmmCPS.hs Driver for new pipeline +CmmPipeline.hs Driver for new pipeline CmmLive.hs Liveness analysis, dead code elim CmmProcPoint.hs Identifying and splitting out proc-points @@ -297,24 +295,24 @@ BlockId.hs BlockId, BlockEnv, BlockSet type RawCmm = GenCmm CmmStatic [CmmStatic] (ListGraph CmmStmt) * HscMain.tryNewCodeGen - - STG->Cmm: StgCmm.codeGen (new codegen) - - Optimise: CmmContFlowOpt (simple optimisations, very self contained) - - Cps convert: CmmCPS.protoCmmCPS - - Optimise: CmmContFlowOpt again - - Convert: CmmCvt.cmmOfZgraph (convert to old rep) very self contained + - STG->Cmm: StgCmm.codeGen (new codegen) + - Optimize and CPS: CmmPipeline.cmmPipeline + - Convert: CmmCvt.cmmOfZgraph (convert to old rep) very self contained * StgCmm.hs The new STG -> Cmm conversion code generator Lots of modules StgCmmXXX ---------------------------------------------------- - CmmCPS.protoCmmCPS The new pipeline + CmmPipeline.cmmPipeline The new pipeline ---------------------------------------------------- -CmmCPS.protoCmmCPS: - 1. Do cpsTop for each procedures separately - 2. Build SRT representation; this spans multiple procedures - (unless split-objs) +CmmPipeline.cmmPipeline: + 1. Do control flow optimization + 2. Do cpsTop for each procedures separately + 3. Build SRT representation; this spans multiple procedures + (unless split-objs) + 4. Do control flow optimization on all resulting procedures cpsTop: * CmmCommonBlockElim.elimCommonBlocks: @@ -452,7 +450,7 @@ a dominator analysis, using the Dataflow Engine. f's keep-alive refs to include h1. * The SRT info is the C_SRT field of Cmm.ClosureTypeInfo in a - CmmInfoTable attached to each CmmProc. CmmCPS.toTops actually does + CmmInfoTable attached to each CmmProc. CmmPipeline.toTops actually does the attaching, right at the end of the pipeline. The C_SRT part gives offsets within a single, shared table of closure pointers.