Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/f37cf0d03b68b17209c006075b08adba373920dd

>---------------------------------------------------------------

commit f37cf0d03b68b17209c006075b08adba373920dd
Author: Simon Peyton Jones <[email protected]>
Date:   Mon Aug 22 08:09:23 2011 +0100

    More cmm-notes

>---------------------------------------------------------------

 compiler/cmm/cmm-notes |   50 ++++++++++++++++++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/compiler/cmm/cmm-notes b/compiler/cmm/cmm-notes
index f35e72d..5cfd5f2 100644
--- a/compiler/cmm/cmm-notes
+++ b/compiler/cmm/cmm-notes
@@ -1,3 +1,20 @@
+More notes (Aug 11)
+~~~~~~~~~~~~~~~~~~
+* CmmInfo.cmmToRawCmm expands info tables to their representations
+  (needed for .cmm files as well as the code generators)
+
+* Why is FCode a lazy monad?  That makes it inefficient.
+  We want laziness to get code out one procedure at a time,
+  but not at the instruction level.
+
+Things we did
+  * Remove CmmCvt.graphToZgraph (Conversion from old to new Cmm reps)
+  * Remove HscMain.optionallyConvertAndOrCPS (converted old Cmm to
+    new, ran pipeline, and converted back)
+  * Remove CmmDecl. Put its types in Cmm.  Import Cmm into OldCmm
+    so it can get those types.
+
+
 More notes (June 11)
 ~~~~~~~~~~~~~~~~~~~~
 * Possible refactoring: Nuke AGraph in favour of 
@@ -235,15 +252,13 @@ Things to do:
 ----------------------------------------------------
 
 -------- Testing stuff ------------
-HscMain.optionallyConvertAndOrCPS
-        testCmmConversion
-DynFlags:  -fconvert-to-zipper-and-back, -frun-cpsz
+DynFlags: -frun-cpsz
 
 -------- Moribund stuff ------------
 OldCmm.hs      Definition of flowgraph of old representation
+               Imports some data types from (new) Cmm
 OldCmmUtil.hs  Utilites that operates mostly on on CmmStmt
 OldPprCmm.hs   Pretty print for CmmStmt, GenBasicBlock and ListGraph
-CmmCvt.hs      Conversion between old and new Cmm reps
 CmmOpt.hs      Hopefully-redundant optimiser
 
 -------- Stuff to keep ------------
@@ -264,20 +279,19 @@ CmmInfo.hs                Defn of InfoTables, and 
conversion to exact byte layou
 
 ---------- Cmm data types --------------
 Cmm.hs              Cmm instantiations of dataflow graph framework
-MkGraph.hs          Interface for building Cmm for codeGen/Stg*.hs modules
+  CmmExpr.hs        Type of Cmm expression
+  CmmType.hs        Type of Cmm types and their widths
+  CmmMachOp.hs      MachOp type and accompanying utilities
+
+PprCmm.hs          Pretty printer for Cmm
+  PprCmmExpr.hs     Pretty printer for CmmExpr
 
-CmmDecl.hs          Shared Cmm types of both representations
-CmmExpr.hs          Type of Cmm expression
-CmmType.hs          Type of Cmm types and their widths
-CmmMachOp.hs        MachOp type and accompanying utilities
+MkGraph.hs          Interface for building Cmm for codeGen/Stg*.hs modules
 
 CmmUtils.hs
 CmmLint.hs
 
 PprC.hs                    Pretty print Cmm in C syntax
-PprCmm.hs          Pretty printer for CmmGraph.
-PprCmmDecl.hs       Pretty printer for common Cmm types.
-PprCmmExpr.hs       Pretty printer for Cmm expressions.
 
 CLabel.hs           CLabel
 BlockId.hs          BlockId, BlockEnv, BlockSet
@@ -351,9 +365,17 @@ cpsTop:
        Manifest the stack pointer
 
    * Split into separate procedures
+
       - CmmProcPoint.procPointAnalysis
-        Given set of proc points, which blocks are reachable from each
-        Claim: too few proc-points => code duplication, but program still 
works??
+        Given set of proc points (computed earlier by
+           CmmProcPoint.minimalProcPointSet) find which blocks 
+           are reachable from each
+       Each block should be reachable from *one* proc point, so 
+         the blocks reachable from P are the internal nodes of 
+         the final procedure P
+        NB: if we the earlier analysis had produced too few proc-points 
+            we should nevertheless be fine by code duplication; but
+           that is not implemented
 
       - CmmProcPoint.splitAtProcPoints
        Using this info, split into separate procedures



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to