Constructors
ProfNoteAn
{-# SCC #-}profiling annotation, either automatically added by the desugarer as a result of -auto-all, or added by the user.profNoteCC :: CostCentrethe cost centre
profNoteCount :: !Boolbump the entry count?
profNoteScope :: !Boolscopes over the enclosed expression (i.e. not just a tick)
HpcTickA "tick" used by HPC to track the execution of each subexpression in the original source code.
tickModule :: ModuletickId :: !Int
BreakpointA breakpoint for the GHCi debugger. This behaves like an HPC tick, but has a list of free variables which will be available for inspection in GHCi when the program stops at the breakpoint.
NB. we must take account of these Ids when (a) counting free variables, and (b) substituting (don't substitute for them)
breakpointExt :: XBreakpoint passbreakpointId :: !IntbreakpointFVs :: [XTickishId pass]the order of this list is important: it matches the order of the lists in the appropriate entry in ModBreaks.
Careful about substitution! See Note [substTickish] in GHC.Core.Subst.
breakpointModule :: Module
SourceNoteA source note.
Source notes are pure annotations: Their presence should neither influence compilation nor execution. The semantics are given by causality: The presence of a source note means that a local change in the referenced source code span will possibly provoke the generated code to change. On the flip-side, the functionality of annotated code *must* be invariant against changes to all source code *except* the spans referenced in the source notes (see "Causality of optimized Haskell" paper for details).
Therefore extending the scope of any given source note is always valid. Note that it is still undesirable though, as this reduces their usefulness for debugging and profiling. Therefore we will generally try only to make use of this property where it is necessary to enable optimizations.
sourceSpan :: RealSrcSpanSource covered
sourceName :: LexicalFastStringName for source location (uses same names as CCs)
Instances8Eq, Data, Ord, Outputable, …
Eq (GenTickish 'TickishPassCmm)Defined in ghc-9.10.3 · GHC.Types.TickishEq (GenTickish 'TickishPassCore)Defined in ghc-9.10.3 · GHC.Types.TickishData (GenTickish 'TickishPassCmm)Defined in ghc-9.10.3 · GHC.Types.TickishData (GenTickish 'TickishPassCore)Defined in ghc-9.10.3 · GHC.Types.TickishData (GenTickish 'TickishPassStg)Defined in ghc-9.10.3 · GHC.Types.TickishOrd (GenTickish 'TickishPassCmm)Defined in ghc-9.10.3 · GHC.Types.TickishOrd (GenTickish 'TickishPassCore)Defined in ghc-9.10.3 · GHC.Types.TickishOutputable (XTickishId pass) => Outputable (GenTickish pass)Defined in ghc-9.10.3 · GHC.Core.Ppr · orphan