ghc-7.6.3: The GHC API

Safe HaskellNone

OldCmm

Synopsis

Documentation

type CmmGroup = GenCmmGroup CmmStatics CmmInfoTable (ListGraph CmmStmt)Source

Cmm with the info table as a data type

type GenCmmGroup d h g = [GenCmmDecl d h g]Source

type RawCmmGroup = GenCmmGroup CmmStatics (Maybe CmmStatics) (ListGraph CmmStmt)Source

Cmm with the info tables converted to a list of CmmStatic along with the info table label. If we are building without tables-next-to-code there will be no statics

INVARIANT: if there is an info table, it has at least one CmmStatic

newtype ListGraph i Source

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

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.

BlockIds must be unique across an entire compilation unit, since they are translated to assembly-language labels, which scope across a whole compilation unit.

Constructors

ListGraph [GenBasicBlock i] 

Instances

Outputable instr => Outputable (ListGraph instr) 

data CmmInfoTable Source

Info table as a haskell data type

data ClosureTypeInfo Source

Constructors

Constr ConstrTag ConstrDescription 
Fun FunArity ArgDescr 
Thunk 
ThunkSelector SelectorOffset 
BlackHole 

cmmMapGraph :: (g -> g') -> GenCmmGroup d h g -> GenCmmGroup d h g'Source

cmmTopMapGraph :: (g -> g') -> GenCmmDecl d h g -> GenCmmDecl d h g'Source

blockId :: GenBasicBlock i -> BlockIdSource

The branch block id is that of the first block in the branch, which is that branch's entry point

data GenCmmDecl d h g Source

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 g 
CmmData Section d 

Instances

module CmmExpr