ghc-9.14.1.20260916: The GHC API
Safe HaskellNone
LanguageGHC2021

GHC.Stg.EnforceEpt.TagSig

Synopsis

Documentation

type StgCgInfos = NameEnv TagSig Source #

Information to be exposed in interface files which is produced by the stg2stg passes.

data TagSig Source #

The signature attached to a binding.

Constructors

TagVal TagInfo

A value binding (thunk, constructor, etc.)

TagFun TagInfo

A function/join-point binding; carries the TagInfo of saturated-call return values. See Note [TagInfo of functions].

Instances

Instances details
Binary TagSig Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

Outputable TagSig Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

Methods

ppr :: TagSig -> SDoc Source #

Eq TagSig Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

OutputableBndr (Id, TagSig) Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

data TagInfo Source #

What we know about a runtime value.

Constructors

TagDunno

We don't know anything about the tag.

TagTuple [TagInfo]

An unboxed tuple with taginfo for each element.

TagEPT

An evaluated and properly tagged value. See Note [Evaluated and Properly Tagged].

TagBottoming

Bottom of the domain. See Note [Bottom functions are TagBottoming] in GHC.Stg.EnforceEpt.

Instances

Instances details
Binary TagInfo Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

Outputable TagInfo Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

Methods

ppr :: TagInfo -> SDoc Source #

Eq TagInfo Source # 
Instance details

Defined in GHC.Stg.EnforceEpt.TagSig

isTaggedSig :: TagSig -> Bool Source #

Is the given binding known to be properly tagged (or irrelevant, as for unboxed values and bottoming computations)?

isTaggedInfo :: TagInfo -> Bool Source #

Is the given value-level tag known to be properly tagged? NB: unboxed tuples are *not* treated as tagged here; they are handled specially by the rewriter (which considers them already evaluated).