Merging in the new codegen branch
[ghc-hetmet.git] / compiler / codeGen / CgMonad.lhs
index faa84c2..e624f4b 100644 (file)
@@ -70,9 +70,11 @@ import {-# SOURCE #-} CgBindery ( CgBindings, nukeVolatileBinds )
 
 import DynFlags
 import PackageConfig
+import BlockId
 import Cmm
 import CmmUtils
 import CLabel
+import PprCmm
 import StgSyn (SRT)
 import SMRep
 import Module
@@ -80,9 +82,9 @@ import Id
 import VarEnv
 import OrdList
 import Unique
-import Util
+import Util()
 import UniqSupply
-import FastString
+import FastString()
 import Outputable
 
 import Control.Monad
@@ -241,6 +243,7 @@ flattenCgStmts id stmts =
            where (block,blocks) = flatten stmts
        (CgFork fork_id stmts : ss) -> 
           flatten (CgFork fork_id stmts : CgStmt stmt : ss)
+        (CgStmt {} : _) -> panic "CgStmt not seen as ordinary"
 
   flatten (s:ss) = 
        case s of
@@ -711,7 +714,8 @@ labelC :: BlockId -> Code
 labelC id = emitCgStmt (CgLabel id)
 
 newLabelC :: FCode BlockId
-newLabelC = do { id <- newUnique; return (BlockId id) }
+newLabelC = do { u <- newUnique
+               ; return $ BlockId u }
 
 checkedAbsC :: CmmStmt -> Code
 -- Emit code, eliminating no-ops
@@ -758,11 +762,14 @@ emitSimpleProc lbl code
 
 getCmm :: Code -> FCode Cmm
 -- Get all the CmmTops (there should be no stmts)
+-- Return a single Cmm which may be split from other Cmms by
+-- object splitting (at a later stage)
 getCmm code 
   = do { state1 <- getState
        ; ((), state2) <- withState code (state1 { cgs_tops  = nilOL })
        ; setState $ state2 { cgs_tops = cgs_tops state1 } 
-       ; return (Cmm (fromOL (cgs_tops state2))) }
+       ; return (Cmm (fromOL (cgs_tops state2))) 
+        }
 
 -- ----------------------------------------------------------------------------
 -- CgStmts