StgSyn

ghc-8.4.2: The GHC API

Safe Haskell | None
Language | Haskell2010

StgSyn

Synopsis

- data GenStgArg occ
  - = StgVarArg occ
  - | StgLitArg Literal
- data GenStgTopBinding bndr occ
  - = StgTopLifted (GenStgBinding bndr occ)
  - | StgTopStringLit bndr ByteString
- data GenStgBinding bndr occ
  - = StgNonRec bndr (GenStgRhs bndr occ)
  - | StgRec [(bndr, GenStgRhs bndr occ)]
- data GenStgExpr bndr occ
  - = StgApp occ [GenStgArg occ]
  - | StgLit Literal
  - | StgConApp DataCon [GenStgArg occ] [Type]
  - | StgOpApp StgOp [GenStgArg occ] Type
  - | StgLam [bndr] StgExpr
  - | StgCase (GenStgExpr bndr occ) bndr AltType [GenStgAlt bndr occ]
  - | StgLet (GenStgBinding bndr occ) (GenStgExpr bndr occ)
  - | StgLetNoEscape (GenStgBinding bndr occ) (GenStgExpr bndr occ)
  - | StgTick (Tickish bndr) (GenStgExpr bndr occ)
- data GenStgRhs bndr occ
  - = StgRhsClosure CostCentreStack StgBinderInfo [occ] !UpdateFlag [bndr] (GenStgExpr bndr occ)
  - | StgRhsCon CostCentreStack DataCon [GenStgArg occ]
- type GenStgAlt bndr occ = (AltCon, [bndr], GenStgExpr bndr occ)
- data AltType
  - = PolyAlt
  - | MultiValAlt Int
  - | AlgAlt TyCon
  - | PrimAlt PrimRep
- data UpdateFlag
  - = ReEntrant
  - | Updatable
  - | SingleEntry
- isUpdatable :: UpdateFlag -> Bool
- data StgBinderInfo
- noBinderInfo :: StgBinderInfo
- stgSatOcc :: StgBinderInfo
- stgUnsatOcc :: StgBinderInfo
- satCallsOnly :: StgBinderInfo -> Bool
- combineStgBinderInfo :: StgBinderInfo -> StgBinderInfo -> StgBinderInfo
- type StgArg = GenStgArg Id
- type StgTopBinding = GenStgTopBinding Id Id
- type StgBinding = GenStgBinding Id Id
- type StgExpr = GenStgExpr Id Id
- type StgRhs = GenStgRhs Id Id
- type StgAlt = GenStgAlt Id Id
- type InStgArg = StgArg
- type InStgTopBinding = StgTopBinding
- type InStgBinding = StgBinding
- type InStgExpr = StgExpr
- type InStgRhs = StgRhs
- type InStgAlt = StgAlt
- type OutStgArg = StgArg
- type OutStgTopBinding = StgTopBinding
- type OutStgBinding = StgBinding
- type OutStgExpr = StgExpr
- type OutStgRhs = StgRhs
- type OutStgAlt = StgAlt
- data StgOp
  - = StgPrimOp PrimOp
  - | StgPrimCallOp PrimCall
  - | StgFCallOp ForeignCall Unique
- topStgBindHasCafRefs :: GenStgTopBinding bndr Id -> Bool
- stgArgHasCafRefs :: GenStgArg Id -> Bool
- stgRhsArity :: StgRhs -> Int
- isDllConApp :: DynFlags -> Module -> DataCon -> [StgArg] -> Bool
- stgArgType :: StgArg -> Type
- stripStgTicksTop :: (Tickish Id -> Bool) -> StgExpr -> ([Tickish Id], StgExpr)
- pprStgBinding :: StgBinding -> SDoc
- pprStgTopBindings :: [StgTopBinding] -> SDoc

# Documentation

data GenStgArg occ Source #

Constructors

StgVarArg occ |
StgLitArg Literal |

Instances

Outputable bdee => Outputable (GenStgArg bdee) Source # |
Instance details Defined in StgSyn Methods ppr :: GenStgArg bdee -> SDoc Source # pprPrec :: Rational -> GenStgArg bdee -> SDoc Source #

data GenStgTopBinding bndr occ Source #

A top-level binding.

Constructors

StgTopLifted (GenStgBinding bndr occ) |
StgTopStringLit bndr ByteString |

Instances

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgTopBinding bndr bdee) Source # |
Instance details Defined in StgSyn Methods ppr :: GenStgTopBinding bndr bdee -> SDoc Source # pprPrec :: Rational -> GenStgTopBinding bndr bdee -> SDoc Source #

data GenStgBinding bndr occ Source #

Constructors

StgNonRec bndr (GenStgRhs bndr occ) |
StgRec [(bndr, GenStgRhs bndr occ)] |

Instances

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgBinding bndr bdee) Source # |
Instance details Defined in StgSyn Methods ppr :: GenStgBinding bndr bdee -> SDoc Source # pprPrec :: Rational -> GenStgBinding bndr bdee -> SDoc Source #

data GenStgExpr bndr occ Source #

Constructors

StgApp occ [GenStgArg occ] |
StgLit Literal |
StgConApp DataCon [GenStgArg occ] [Type] |
StgOpApp StgOp [GenStgArg occ] Type |
StgLam [bndr] StgExpr |
StgCase (GenStgExpr bndr occ) bndr AltType [GenStgAlt bndr occ] |
StgLet (GenStgBinding bndr occ) (GenStgExpr bndr occ) |
StgLetNoEscape (GenStgBinding bndr occ) (GenStgExpr bndr occ) |
StgTick (Tickish bndr) (GenStgExpr bndr occ) |

Instances

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgExpr bndr bdee) Source # |
Instance details Defined in StgSyn Methods ppr :: GenStgExpr bndr bdee -> SDoc Source # pprPrec :: Rational -> GenStgExpr bndr bdee -> SDoc Source #

data GenStgRhs bndr occ Source #

Constructors

StgRhsClosure CostCentreStack StgBinderInfo [occ] !UpdateFlag [bndr] (GenStgExpr bndr occ) |
StgRhsCon CostCentreStack DataCon [GenStgArg occ] |

Instances

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgRhs bndr bdee) Source # |
Instance details Defined in StgSyn Methods ppr :: GenStgRhs bndr bdee -> SDoc Source # pprPrec :: Rational -> GenStgRhs bndr bdee -> SDoc Source #

type GenStgAlt bndr occ = (AltCon, [bndr], GenStgExpr bndr occ) Source #

data AltType Source #

Constructors

PolyAlt |
MultiValAlt Int |
AlgAlt TyCon |
PrimAlt PrimRep |

Instances

Outputable AltType Source # |
Instance details Defined in StgSyn Methods ppr :: AltType -> SDoc Source # pprPrec :: Rational -> AltType -> SDoc Source #

data UpdateFlag Source #

Constructors

ReEntrant |
Updatable |
SingleEntry |

Instances

Outputable UpdateFlag Source # |
Instance details Defined in StgSyn Methods ppr :: UpdateFlag -> SDoc Source # pprPrec :: Rational -> UpdateFlag -> SDoc Source #

isUpdatable :: UpdateFlag -> Bool Source #

data StgBinderInfo Source #

noBinderInfo :: StgBinderInfo Source #

stgSatOcc :: StgBinderInfo Source #

stgUnsatOcc :: StgBinderInfo Source #

satCallsOnly :: StgBinderInfo -> Bool Source #

combineStgBinderInfo :: StgBinderInfo -> StgBinderInfo -> StgBinderInfo Source #

type StgArg = GenStgArg Id Source #

type StgTopBinding = GenStgTopBinding Id Id Source #

type StgBinding = GenStgBinding Id Id Source #

type StgExpr = GenStgExpr Id Id Source #

type StgRhs = GenStgRhs Id Id Source #

type StgAlt = GenStgAlt Id Id Source #

type InStgArg = StgArg Source #

type InStgTopBinding = StgTopBinding Source #

type InStgBinding = StgBinding Source #

type InStgExpr = StgExpr Source #

type InStgRhs = StgRhs Source #

type InStgAlt = StgAlt Source #

type OutStgArg = StgArg Source #

type OutStgTopBinding = StgTopBinding Source #

type OutStgBinding = StgBinding Source #

type OutStgExpr = StgExpr Source #

type OutStgRhs = StgRhs Source #

type OutStgAlt = StgAlt Source #

data StgOp Source #

Constructors

StgPrimOp PrimOp |
StgPrimCallOp PrimCall |
StgFCallOp ForeignCall Unique |

topStgBindHasCafRefs :: GenStgTopBinding bndr Id -> Bool Source #

stgArgHasCafRefs :: GenStgArg Id -> Bool Source #

stgRhsArity :: StgRhs -> Int Source #

isDllConApp :: DynFlags -> Module -> DataCon -> [StgArg] -> Bool Source #

Does this constructor application refer to anything in a different *Windows* DLL? If so, we can't allocate it statically

stgArgType :: StgArg -> Type Source #

Type of an `StgArg`

Very half baked because we have lost the type arguments.

stripStgTicksTop :: (Tickish Id -> Bool) -> StgExpr -> ([Tickish Id], StgExpr) Source #

Strip ticks of a given type from an STG expression

pprStgBinding :: StgBinding -> SDoc Source #

pprStgTopBindings :: [StgTopBinding] -> SDoc Source #