ghc-lib-0.20201101: The GHC API, decoupled from GHC versions
Safe HaskellNone
LanguageHaskell2010

GHC.StgToCmm.Monad

Synopsis

Documentation

data FCode a Source #

Instances

Instances details
Monad FCode Source # 
Instance details

Defined in GHC.StgToCmm.Monad

Methods

(>>=) :: FCode a -> (a -> FCode b) -> FCode b #

(>>) :: FCode a -> FCode b -> FCode b #

return :: a -> FCode a #

Functor FCode Source # 
Instance details

Defined in GHC.StgToCmm.Monad

Methods

fmap :: (a -> b) -> FCode a -> FCode b #

(<$) :: a -> FCode b -> FCode a #

Applicative FCode Source # 
Instance details

Defined in GHC.StgToCmm.Monad

Methods

pure :: a -> FCode a #

(<*>) :: FCode (a -> b) -> FCode a -> FCode b #

liftA2 :: (a -> b -> c) -> FCode a -> FCode b -> FCode c #

(*>) :: FCode a -> FCode b -> FCode b #

(<*) :: FCode a -> FCode b -> FCode a #

MonadUnique FCode Source # 
Instance details

Defined in GHC.StgToCmm.Monad

HasDynFlags FCode Source # 
Instance details

Defined in GHC.StgToCmm.Monad

fixC :: (a -> FCode a) -> FCode a Source #

emitLabel :: BlockId -> FCode () Source #

emitDecl :: CmmDecl -> FCode () Source #

emitProcWithConvention :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> CmmAGraphScoped -> FCode () Source #

emitProcWithStackFrame :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> [CmmFormal] -> CmmAGraphScoped -> Bool -> FCode () Source #

emitAssign :: CmmReg -> CmmExpr -> FCode () Source #

emitStore :: CmmExpr -> CmmExpr -> FCode () Source #

emitComment :: FastString -> FCode () Source #

emitTick :: CmmTickish -> FCode () Source #

emitUnwind :: [(GlobalReg, Maybe CmmExpr)] -> FCode () Source #

getCmm :: FCode () -> FCode CmmGroup Source #

getCodeScoped :: FCode a -> FCode (a, CmmAGraphScoped) Source #

Generate code into a fresh tick (sub-)scope and gather generated code

mkCmmIfGoto :: CmmExpr -> BlockId -> FCode CmmAGraph Source #

mkCmmIfGoto' :: CmmExpr -> BlockId -> Maybe Bool -> FCode CmmAGraph Source #

mkCall :: CmmExpr -> (Convention, Convention) -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> [CmmExpr] -> FCode CmmAGraph Source #

mkCmmCall :: CmmExpr -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> FCode CmmAGraph Source #

forkAlts :: [FCode a] -> FCode [a] Source #

forkAltPair :: FCode a -> FCode a -> FCode (a, a) Source #

type ConTagZ = Int #

data Sequel Source #

Constructors

Return 
AssignTo [LocalReg] Bool 

Instances

Instances details
Outputable Sequel Source # 
Instance details

Defined in GHC.StgToCmm.Monad

Methods

ppr :: Sequel -> SDoc

data ReturnKind Source #

Constructors

AssignedDirectly 
ReturnedTo BlockId ByteOff 

setTickyCtrLabel :: CLabel -> FCode a -> FCode a Source #

tickScope :: FCode a -> FCode a Source #

Places blocks generated by the given code into a fresh (sub-)scope. This will make sure that Cmm annotations in our scope will apply to the Cmm blocks generated therein - but not the other way around.

getTickScope :: FCode CmmTickScope Source #

The current tick scope. We will assign this to generated blocks.

withUpdFrameOff :: UpdFrameOffset -> FCode a -> FCode a Source #

getUpdFrameOff :: FCode UpdFrameOffset Source #

initUpdFrameOff :: Platform -> UpdFrameOffset Source #

type VirtualHpOffset = WordOff Source #

getDynFlags :: HasDynFlags m => m DynFlags #

data CgIdInfo Source #

Constructors

CgIdInfo 

Instances

Instances details
OutputableP Platform CgIdInfo Source # 
Instance details

Defined in GHC.StgToCmm.Monad

Methods

pdoc :: Platform -> CgIdInfo -> SDoc

getBinds :: FCode CgBindings Source #

setBinds :: CgBindings -> FCode () Source #

data CgInfoDownwards Source #

Constructors

MkCgInfoDown 

Fields

data CgState Source #

Constructors

MkCgState 

Fields