Cmm

ghc-8.6.3: The GHC API

Safe Haskell | None
Language | Haskell2010

Cmm

Contents

- Cmm top-level datatypes
  - Blocks containing lists
- Info Tables
- Statements, expressions and types

Synopsis

- type CmmProgram = [CmmGroup]
- type CmmGroup = GenCmmGroup CmmStatics CmmTopInfo CmmGraph
- type GenCmmGroup d h g = [GenCmmDecl d h g]
- type CmmDecl = GenCmmDecl CmmStatics CmmTopInfo CmmGraph
- data GenCmmDecl d h g
  - = CmmProc h CLabel [GlobalReg] g
  - | CmmData Section d
- type CmmGraph = GenCmmGraph CmmNode
- data GenCmmGraph n = CmmGraph {
  - g_entry :: BlockId
  - g_graph :: Graph n C C
  }
- type CmmBlock = Block CmmNode C C
- type RawCmmDecl = GenCmmDecl CmmStatics (LabelMap CmmStatics) CmmGraph
- type RawCmmGroup = GenCmmGroup CmmStatics (LabelMap CmmStatics) CmmGraph
- data Section = Section SectionType CLabel
- data SectionType
  - = Text
  - | Data
  - | ReadOnlyData
  - | RelocatableReadOnlyData
  - | UninitialisedData
  - | ReadOnlyData16
  - | CString
  - | OtherSection String
- data CmmStatics = Statics CLabel [CmmStatic]
- data CmmStatic
  - = CmmStaticLit CmmLit
  - | CmmUninitialised Int
  - | CmmString [Word8]
- isSecConstant :: Section -> Bool
- data GenBasicBlock i = BasicBlock BlockId [i]
- blockId :: GenBasicBlock i -> BlockId
- newtype ListGraph i = ListGraph [GenBasicBlock i]
- pprBBlock :: Outputable stmt => GenBasicBlock stmt -> SDoc
- data CmmTopInfo = TopInfo {
  - info_tbls :: LabelMap CmmInfoTable
  - stack_info :: CmmStackInfo
  }
- data CmmStackInfo = StackInfo {
  - arg_space :: ByteOff
  - updfr_space :: Maybe ByteOff
  - do_layout :: Bool
  }
- data CmmInfoTable = CmmInfoTable {
  - cit_lbl :: CLabel
  - cit_rep :: SMRep
  - cit_prof :: ProfilingInfo
  - cit_srt :: Maybe CLabel
  - cit_clo :: Maybe (Id, CostCentreStack)
  }
- topInfoTable :: GenCmmDecl a CmmTopInfo (GenCmmGraph n) -> Maybe CmmInfoTable
- data ClosureTypeInfo
  - = Constr ConTagZ ConstrDescription
  - | Fun FunArity ArgDescr
  - | Thunk
  - | ThunkSelector SelectorOffset
  - | BlackHole
  - | IndStatic
- data ProfilingInfo
  - = NoProfilingInfo
  - | ProfilingInfo [Word8] [Word8]
- type ConstrDescription = [Word8]
- module CmmNode
- module CmmExpr

# Cmm top-level datatypes

type CmmProgram = [CmmGroup] #

type CmmGroup = GenCmmGroup CmmStatics CmmTopInfo CmmGraph #

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

type CmmDecl = GenCmmDecl CmmStatics CmmTopInfo CmmGraph #

data GenCmmDecl 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 [GlobalReg] g |
CmmData Section d |

Instances

(Outputable d, Outputable info, Outputable i) => Outputable (GenCmmDecl d info i) # |
Instance details Defined in PprCmmDecl Methods ppr :: GenCmmDecl d info i -> SDoc # pprPrec :: Rational -> GenCmmDecl d info i -> SDoc #

type CmmGraph = GenCmmGraph CmmNode #

data GenCmmGraph n #

Constructors

CmmGraph |
Fields g_entry :: BlockId g_graph :: Graph n C C

Instances

Outputable CmmGraph # |
Instance details Defined in PprCmm Methods ppr :: CmmGraph -> SDoc # pprPrec :: Rational -> CmmGraph -> SDoc #

type CmmBlock = Block CmmNode C C #

type RawCmmDecl = GenCmmDecl CmmStatics (LabelMap CmmStatics) CmmGraph #

type RawCmmGroup = GenCmmGroup CmmStatics (LabelMap CmmStatics) CmmGraph #

data Section #

Constructors

Section SectionType CLabel |

data SectionType #

Constructors

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

Instances

Show SectionType # |
Instance details Defined in Cmm Methods showsPrec :: Int -> SectionType -> ShowS Source # show :: SectionType -> String Source # showList :: [SectionType] -> ShowS Source #

data CmmStatics #

Constructors

Statics CLabel [CmmStatic] |

Instances

Outputable CmmStatics # |
Instance details Defined in PprCmmDecl Methods ppr :: CmmStatics -> SDoc # pprPrec :: Rational -> CmmStatics -> SDoc #

data CmmStatic #

Constructors

CmmStaticLit CmmLit |
CmmUninitialised Int |
CmmString [Word8] |

Instances

Outputable CmmStatic # |
Instance details Defined in PprCmmDecl Methods ppr :: CmmStatic -> SDoc # pprPrec :: Rational -> CmmStatic -> SDoc #

isSecConstant :: Section -> Bool #

Should a data in this section be considered constant

## Blocks containing lists

data GenBasicBlock i #

Constructors

BasicBlock BlockId [i] |

Instances

Outputable instr => Outputable (GenBasicBlock instr) # |
Instance details Defined in Cmm Methods ppr :: GenBasicBlock instr -> SDoc # pprPrec :: Rational -> GenBasicBlock instr -> SDoc #

blockId :: GenBasicBlock i -> BlockId #

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

newtype ListGraph i #

Constructors

ListGraph [GenBasicBlock i] |

Instances

Outputable instr => Outputable (ListGraph instr) # |
Instance details Defined in Cmm Methods ppr :: ListGraph instr -> SDoc # pprPrec :: Rational -> ListGraph instr -> SDoc #

pprBBlock :: Outputable stmt => GenBasicBlock stmt -> SDoc #

# Info Tables

data CmmTopInfo #

Constructors

TopInfo |
Fields info_tbls :: LabelMap CmmInfoTable stack_info :: CmmStackInfo

Instances

Outputable CmmTopInfo # |
Instance details Defined in PprCmm Methods ppr :: CmmTopInfo -> SDoc # pprPrec :: Rational -> CmmTopInfo -> SDoc #

data CmmStackInfo #

Constructors

StackInfo |
Fields arg_space :: ByteOff updfr_space :: Maybe ByteOff do_layout :: Bool

Instances

Outputable CmmStackInfo # |
Instance details Defined in PprCmm Methods ppr :: CmmStackInfo -> SDoc # pprPrec :: Rational -> CmmStackInfo -> SDoc #

data CmmInfoTable #

Info table as a haskell data type

Constructors

CmmInfoTable |
Fields cit_lbl :: CLabel cit_rep :: SMRep cit_prof :: ProfilingInfo cit_srt :: Maybe CLabel cit_clo :: Maybe (Id, CostCentreStack)

Instances

Outputable CmmInfoTable # |
Instance details Defined in PprCmmDecl Methods ppr :: CmmInfoTable -> SDoc # pprPrec :: Rational -> CmmInfoTable -> SDoc #

topInfoTable :: GenCmmDecl a CmmTopInfo (GenCmmGraph n) -> Maybe CmmInfoTable #

data ClosureTypeInfo #

Constructors

Constr ConTagZ ConstrDescription |
Fun FunArity ArgDescr |
Thunk |
ThunkSelector SelectorOffset |
BlackHole |
IndStatic |

Instances

Outputable ClosureTypeInfo # |
Instance details Defined in SMRep Methods ppr :: ClosureTypeInfo -> SDoc # pprPrec :: Rational -> ClosureTypeInfo -> SDoc #

data ProfilingInfo #

Constructors

NoProfilingInfo |
ProfilingInfo [Word8] [Word8] |

type ConstrDescription = [Word8] #

# Statements, expressions and types

module CmmNode

module CmmExpr