| ghc-6.10.4: The GHC API | Contents | Index

Cmm

Synopsis

newtype GenCmm d h g = Cmm [GenCmmTop d h g]
type Cmm = GenCmm CmmStatic CmmInfo (ListGraph CmmStmt)
type RawCmm = GenCmm CmmStatic [CmmStatic] (ListGraph CmmStmt)

data GenCmmTop d h g

= CmmProc h CLabel CmmFormalsWithoutKinds g
| CmmData Section [d]

type CmmTop = GenCmmTop CmmStatic CmmInfo (ListGraph CmmStmt)
type RawCmmTop = GenCmmTop CmmStatic [CmmStatic] (ListGraph CmmStmt)
newtype ListGraph i = ListGraph [GenBasicBlock i]
cmmMapGraph :: (g -> g') -> GenCmm d h g -> GenCmm d h g'
cmmTopMapGraph :: (g -> g') -> GenCmmTop d h g -> GenCmmTop d h g'
cmmMapGraphM :: Monad m => (String -> g -> m g') -> GenCmm d h g -> m (GenCmm d h g')
cmmTopMapGraphM :: Monad m => (String -> g -> m g') -> GenCmmTop d h g -> m (GenCmmTop d h g')
data CmmInfo = CmmInfo (Maybe BlockId) (Maybe UpdateFrame) CmmInfoTable
data UpdateFrame = UpdateFrame CmmExpr [CmmExpr]

data CmmInfoTable

= CmmInfoTable ProfilingInfo ClosureTypeTag ClosureTypeInfo
| CmmNonInfoTable

data ClosureTypeInfo

= ConstrInfo ClosureLayout ConstrTag ConstrDescription
| FunInfo ClosureLayout C_SRT FunType FunArity ArgDescr SlowEntry
| ThunkInfo ClosureLayout C_SRT
| ThunkSelectorInfo SelectorOffset C_SRT
| ContInfo [Maybe LocalReg] C_SRT

data ProfilingInfo = ProfilingInfo CmmLit CmmLit
type ClosureTypeTag = StgHalfWord
data GenBasicBlock i = BasicBlock BlockId [i]
type CmmBasicBlock = GenBasicBlock CmmStmt
blockId :: GenBasicBlock i -> BlockId
blockStmts :: GenBasicBlock i -> [i]
mapBlockStmts :: (i -> i') -> GenBasicBlock i -> GenBasicBlock i'

data CmmReturnInfo

= CmmMayReturn
| CmmNeverReturns

data CmmStmt

= CmmNop
| CmmComment FastString
| CmmAssign CmmReg CmmExpr
| CmmStore CmmExpr CmmExpr
| CmmCall CmmCallTarget CmmFormals CmmActuals CmmSafety CmmReturnInfo
| CmmBranch BlockId
| CmmCondBranch CmmExpr BlockId
| CmmSwitch CmmExpr [Maybe BlockId]
| CmmJump CmmExpr CmmActuals
| CmmReturn CmmActuals

type CmmActual = CmmKinded CmmExpr
type CmmActuals = [CmmActual]
type CmmFormal = CmmKinded LocalReg
type CmmFormals = [CmmFormal]
type CmmKind = MachHint
type CmmFormalsWithoutKinds = [CmmFormalWithoutKind]
type CmmFormalWithoutKind = LocalReg

data CmmKinded a = CmmKinded {

kindlessCmm :: a
cmmKind :: CmmKind

}

data CmmSafety

= CmmUnsafe
| CmmSafe C_SRT

data CmmCallTarget

= CmmCallee CmmExpr CCallConv
| CmmPrim CallishMachOp

data CmmStatic

= CmmStaticLit CmmLit
| CmmUninitialised Int
| CmmAlign Int
| CmmDataLabel CLabel
| CmmString [Word8]

data Section

= Text
| Data
| ReadOnlyData
| RelocatableReadOnlyData
| UninitialisedData
| ReadOnlyData16
| OtherSection String

module CmmExpr

Documentation
newtype GenCmm d h g

Constructors

Cmm [GenCmmTop d h g] |

Instances

(Outputable d, Outputable info, Outputable g) => Outputable (GenCmm d info g)

type Cmm = GenCmm CmmStatic CmmInfo (ListGraph CmmStmt)
Cmm with the info table as a data type
type RawCmm = GenCmm CmmStatic [CmmStatic] (ListGraph CmmStmt)
Cmm with the info tables converted to a list of `CmmStatic`
data GenCmmTop d h g

A top-level chunk, abstracted over the type of the contents of the basic blocks (Cmm or instructions are the likely instantiations).
Constructors

CmmProc h CLabel CmmFormalsWithoutKinds g |
CmmData Section [d] |

Instances

(Outputable d, Outputable info, Outputable i) => Outputable (GenCmmTop d info i)

type CmmTop = GenCmmTop CmmStatic CmmInfo (ListGraph CmmStmt)
type RawCmmTop = GenCmmTop CmmStatic [CmmStatic] (ListGraph CmmStmt)
newtype ListGraph i

A control-flow graph represented as a list of extended basic blocks.
Constructors

ListGraph [GenBasicBlock i] | Code, may be empty. The first block is the entry point. The order is otherwise initially unimportant, but at some point the code gen will fix the order.

Instances

Outputable instr => Outputable (ListGraph instr)

cmmMapGraph :: (g -> g') -> GenCmm d h g -> GenCmm d h g'
cmmTopMapGraph :: (g -> g') -> GenCmmTop d h g -> GenCmmTop d h g'
cmmMapGraphM :: Monad m => (String -> g -> m g') -> GenCmm d h g -> m (GenCmm d h g')
cmmTopMapGraphM :: Monad m => (String -> g -> m g') -> GenCmmTop d h g -> m (GenCmmTop d h g')
data CmmInfo

Constructors

CmmInfo (Maybe BlockId) (Maybe UpdateFrame) CmmInfoTable |

Instances

Outputable CmmInfo

data UpdateFrame

A frame that is to be pushed before entry to the function. Used to handle update frames.
Constructors

UpdateFrame CmmExpr [CmmExpr] |

data CmmInfoTable

Constructors

CmmInfoTable ProfilingInfo ClosureTypeTag ClosureTypeInfo |
CmmNonInfoTable |

data ClosureTypeInfo

Constructors

ConstrInfo ClosureLayout ConstrTag ConstrDescription |
FunInfo ClosureLayout C_SRT FunType FunArity ArgDescr SlowEntry |
ThunkInfo ClosureLayout C_SRT |
ThunkSelectorInfo SelectorOffset C_SRT |
ContInfo [Maybe LocalReg] C_SRT |

data ProfilingInfo

Constructors

ProfilingInfo CmmLit CmmLit |

type ClosureTypeTag = StgHalfWord
data GenBasicBlock i

Constructors

BasicBlock BlockId [i] |

Instances

Outputable instr => Outputable (GenBasicBlock instr)
UserOfLocalRegs i => UserOfLocalRegs (GenBasicBlock i)

type CmmBasicBlock = GenBasicBlock CmmStmt
blockId :: GenBasicBlock i -> BlockId
blockStmts :: GenBasicBlock i -> [i]
mapBlockStmts :: (i -> i') -> GenBasicBlock i -> GenBasicBlock i'
data CmmReturnInfo

Constructors

CmmMayReturn |
CmmNeverReturns |

data CmmStmt

Constructors

CmmNop |
CmmComment FastString |
CmmAssign CmmReg CmmExpr |
CmmStore CmmExpr CmmExpr |
CmmCall CmmCallTarget CmmFormals CmmActuals CmmSafety CmmReturnInfo |
CmmBranch BlockId |
CmmCondBranch CmmExpr BlockId |
CmmSwitch CmmExpr [Maybe BlockId] |
CmmJump CmmExpr CmmActuals |
CmmReturn CmmActuals |

Instances

Outputable CmmStmt
UserOfLocalRegs CmmStmt

type CmmActual = CmmKinded CmmExpr
type CmmActuals = [CmmActual]
type CmmFormal = CmmKinded LocalReg
type CmmFormals = [CmmFormal]
type CmmKind = MachHint
type CmmFormalsWithoutKinds = [CmmFormalWithoutKind]
type CmmFormalWithoutKind = LocalReg
data CmmKinded a

Constructors

CmmKinded |

kindlessCmm :: a |
cmmKind :: CmmKind |

Instances

Eq a => Eq (CmmKinded a)
Outputable a => Outputable (CmmKinded a)
DefinerOfLocalRegs a => DefinerOfLocalRegs (CmmKinded a)
UserOfLocalRegs a => UserOfLocalRegs (CmmKinded a)

data CmmSafety

Constructors

CmmUnsafe |
CmmSafe C_SRT |

Instances

Outputable CmmSafety

data CmmCallTarget

Constructors

CmmCallee CmmExpr CCallConv |
CmmPrim CallishMachOp |

Instances

Eq CmmCallTarget
UserOfLocalRegs CmmCallTarget

data CmmStatic

Constructors

CmmStaticLit CmmLit |
CmmUninitialised Int |
CmmAlign Int |
CmmDataLabel CLabel |
CmmString [Word8] |

Instances

Outputable CmmStatic

data Section

Constructors

Text |
Data |
ReadOnlyData |
RelocatableReadOnlyData |
UninitialisedData |
ReadOnlyData16 |
OtherSection String |

module CmmExpr
Produced by Haddock version 2.4.2