ghc-7.10.2: The GHC API

Safe HaskellNone




data DebugBlock Source

Debug information about a block of code. Ticks scope over nested blocks.




dblProcedure :: !Label

Entry label of containing proc

dblLabel :: !Label

Hoopl label

dblCLabel :: !CLabel

Output label

dblHasInfoTbl :: !Bool

Has an info table?

dblTicks :: ![CmmTickish]

Ticks defined in this block

dblSourceTick :: !(Maybe CmmTickish)

Best source tick covering block

dblPosition :: !(Maybe Int)

Output position relative to other blocks. Nothing means the block was optimized out

dblUnwind :: !UnwindTable

Unwind information

dblBlocks :: ![DebugBlock]

Nested blocks

dblIsEntry :: DebugBlock -> Bool Source

Is this the entry block?

type UnwindTable = Map GlobalReg UnwindExpr Source

Maps registers to expressions that yield their "old" values further up the stack. Most interesting for the stack pointer Sp, but might be useful to document saved registers, too.

data UnwindExpr Source

Expressions, used for unwind information

cmmDebugGen :: ModLocation -> RawCmmGroup -> [DebugBlock] Source

Extract debug data from a group of procedures. We will prefer source notes that come from the given module (presumably the module that we are currently compiling).

cmmDebugLink :: [Label] -> [DebugBlock] -> [DebugBlock] Source

Sets position fields in the debug block tree according to native generated code.

debugToMap :: [DebugBlock] -> LabelMap DebugBlock Source

Converts debug blocks into a label map for easier lookups