hoopl-3.9.0.0: A library to support dataflow analysis and optimization

Safe HaskellSafe

Compiler.Hoopl.Passes.Dominator

Synopsis

Documentation

type Doms = WithBot DPath

List of labels, extended with a standard bottom element

newtype DPath

Constructors

DPath [Label]

represents part of the domination relation: each label in a list is dominated by all its successors. This is a newtype only so we can give it a fancy Show instance.

Instances

domEntry :: Doms

The fact that goes into the entry of a dominator analysis: the first node is dominated only by the entry point, which is represented by the empty list of labels.

data DominatorNode

Constructors

Entry 
Labelled Label 

Instances

data DominatorTree

This data structure is a *rose tree* in which each node may have arbitrarily many children. Each node dominates all its descendants.

Instances

tree :: [(Label, Doms)] -> DominatorTree

Map from a FactBase for dominator lists into a dominator tree.

immediateDominators :: FactBase Doms -> LabelMap Label

Takes FactBase from dominator analysis and returns a map from each label to its immediate dominator, if any

domPass :: (NonLocal n, Monad m) => FwdPass m n Doms

Dominator pass