monadic stuff fits into the Big Picture.
\begin{code}
-{-# OPTIONS -w #-}
--- The above warning supression flag is a temporary kludge.
--- While working on this module you are encouraged to remove it and fix
--- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
--- for details
-
module CgMonad (
Code, -- type
FCode, -- type
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
-- by a case alternative.
Sequel
+initEobInfo :: EndOfBlockInfo
initEobInfo = EndOfBlockInfo 0 OnStack
\end{code}
where (fork_block, fork_blocks) = flatten (fromOL stmts)
where (block,blocks) = flatten ss
+isJump :: CmmStmt -> Bool
isJump (CmmJump _ _) = True
isJump (CmmBranch _) = True
isJump (CmmSwitch _ _) = True
isJump (CmmReturn _) = True
isJump _ = False
+isOrdinaryStmt :: CgStmt -> Bool
isOrdinaryStmt (CgStmt _) = True
isOrdinaryStmt _ = False
\end{code}
}
returnFC :: a -> FCode a
-returnFC val = FCode (\info_down state -> (val, state))
+returnFC val = FCode (\_ state -> (val, state))
\end{code}
\begin{code}
\begin{code}
getState :: FCode CgState
-getState = FCode $ \info_down state -> (state,state)
+getState = FCode $ \_ state -> (state,state)
setState :: CgState -> FCode ()
-setState state = FCode $ \info_down _ -> ((),state)
+setState state = FCode $ \_ _ -> ((),state)
getStkUsage :: FCode StackUsage
getStkUsage = do
whenC :: Bool -> Code -> Code
whenC True code = code
-whenC False code = nopC
+whenC False _ = nopC
stmtC :: CmmStmt -> Code
stmtC stmt = emitCgStmt (CgStmt stmt)