ghc-6.12.3: The GHC APISource codeContentsIndex
ZipDataflow
Synopsis
class (Outputable m, Outputable l, LastNode l, Outputable (LGraph m l)) => DebugNodes m l
data RewritingDepth
= RewriteShallow
| RewriteDeep
newtype LastOutFacts a = LastOutFacts [(BlockId, a)]
zdfSolveFrom :: (DataflowSolverDirection transfers fixedpt, DebugNodes m l, Outputable a) => BlockEnv a -> PassName -> DataflowLattice a -> transfers m l a -> a -> Graph m l -> FuelMonad (fixedpt m l a ())
zdfRewriteFrom :: (DataflowDirection transfers fixedpt rewrites, DebugNodes m l, Outputable a) => RewritingDepth -> BlockEnv a -> PassName -> DataflowLattice a -> transfers m l a -> rewrites m l a -> a -> Graph m l -> FuelMonad (fixedpt m l a (Graph m l))
zdfSolveFromL :: (DataflowSolverDirection transfers fixedpt, DebugNodes m l, Outputable a) => BlockEnv a -> PassName -> DataflowLattice a -> transfers m l a -> a -> LGraph m l -> FuelMonad (fixedpt m l a ())
data ForwardTransfers middle last a = ForwardTransfers {
ft_first_out :: BlockId -> a -> a
ft_middle_out :: middle -> a -> a
ft_last_outs :: last -> a -> LastOutFacts a
ft_exit_out :: a -> a
}
data BackwardTransfers middle last a = BackwardTransfers {
bt_first_in :: BlockId -> a -> a
bt_middle_in :: middle -> a -> a
bt_last_in :: last -> (BlockId -> a) -> a
}
data ForwardRewrites middle last a = ForwardRewrites {
fr_first :: BlockId -> a -> Maybe (AGraph middle last)
fr_middle :: middle -> a -> Maybe (AGraph middle last)
fr_last :: last -> a -> Maybe (AGraph middle last)
fr_exit :: a -> Maybe (AGraph middle last)
}
data BackwardRewrites middle last a = BackwardRewrites {
br_first :: BlockId -> a -> Maybe (AGraph middle last)
br_middle :: middle -> a -> Maybe (AGraph middle last)
br_last :: last -> (BlockId -> a) -> Maybe (AGraph middle last)
br_exit :: Maybe (AGraph middle last)
}
data ForwardFixedPoint m l fact a
type BackwardFixedPoint = CommonFixedPoint
zdfFpFacts :: FixedPoint fp => fp m l fact a -> BlockEnv fact
zdfFpOutputFact :: FixedPoint fp => fp m l fact a -> fact
zdfGraphChanged :: FixedPoint fp => fp m l fact a -> ChangeFlag
zdfDecoratedGraph :: FixedPoint fp => fp m l fact a -> Graph (fact, m) (fact, l)
zdfFpContents :: FixedPoint fp => fp m l fact a -> a
zdfFpLastOuts :: ForwardFixedPoint m l fact a -> LastOutFacts fact
zdfBRewriteFromL :: (DebugNodes m l, Outputable a) => RewritingDepth -> BlockEnv a -> PassName -> DataflowLattice a -> BackwardTransfers m l a -> BackwardRewrites m l a -> a -> LGraph m l -> FuelMonad (BackwardFixedPoint m l a (LGraph m l))
zdfFRewriteFromL :: (DebugNodes m l, Outputable a) => RewritingDepth -> BlockEnv a -> PassName -> DataflowLattice a -> ForwardTransfers m l a -> ForwardRewrites m l a -> a -> LGraph m l -> FuelMonad (ForwardFixedPoint m l a (LGraph m l))
Documentation
class (Outputable m, Outputable l, LastNode l, Outputable (LGraph m l)) => DebugNodes m l Source
show/hide Instances
data RewritingDepth Source
Constructors
RewriteShallow
RewriteDeep
newtype LastOutFacts a Source
Constructors
LastOutFacts [(BlockId, a)]These are facts flowing out of a last node to the node's successors. They are either to be set (if they pertain to the graph currently under analysis) or propagated out of a sub-analysis
zdfSolveFromSource
:: (DataflowSolverDirection transfers fixedpt, DebugNodes m l, Outputable a)
=> BlockEnv aInitial facts (unbound == bottom)
-> PassName
-> DataflowLattice aLattice
-> transfers m l aDataflow transfer functions
-> aFact flowing in (at entry or exit)
-> Graph m lGraph to be analyzed
-> FuelMonad (fixedpt m l a ())Answers
zdfRewriteFrom :: (DataflowDirection transfers fixedpt rewrites, DebugNodes m l, Outputable a) => RewritingDepth -> BlockEnv a -> PassName -> DataflowLattice a -> transfers m l a -> rewrites m l a -> a -> Graph m l -> FuelMonad (fixedpt m l a (Graph m l))Source
zdfSolveFromL :: (DataflowSolverDirection transfers fixedpt, DebugNodes m l, Outputable a) => BlockEnv a -> PassName -> DataflowLattice a -> transfers m l a -> a -> LGraph m l -> FuelMonad (fixedpt m l a ())Source
data ForwardTransfers middle last a Source
For a forward transfer, you're given the fact on a node's inedge and you compute the fact on the outedge. Because a last node may have multiple outedges, each pointing to a labelled block, so instead of a fact it produces a list of (BlockId, fact) pairs.
Constructors
ForwardTransfers
ft_first_out :: BlockId -> a -> a
ft_middle_out :: middle -> a -> a
ft_last_outs :: last -> a -> LastOutFacts a
ft_exit_out :: a -> a
show/hide Instances
data BackwardTransfers middle last a Source
For a backward transfer, you're given the fact on a node's outedge and you compute the fact on the inedge. Facts have type a. A last node may have multiple outedges, each pointing to a labelled block, so instead of a fact it is given a mapping from BlockId to fact.
Constructors
BackwardTransfers
bt_first_in :: BlockId -> a -> a
bt_middle_in :: middle -> a -> a
bt_last_in :: last -> (BlockId -> a) -> a
show/hide Instances
data ForwardRewrites middle last a Source
A forward rewrite takes the same inputs as a forward transfer, but instead of producing a fact, it produces a replacement graph or Nothing.
Constructors
ForwardRewrites
fr_first :: BlockId -> a -> Maybe (AGraph middle last)
fr_middle :: middle -> a -> Maybe (AGraph middle last)
fr_last :: last -> a -> Maybe (AGraph middle last)
fr_exit :: a -> Maybe (AGraph middle last)
show/hide Instances
data BackwardRewrites middle last a Source
A backward rewrite takes the same inputs as a backward transfer, but instead of producing a fact, it produces a replacement graph or Nothing.
Constructors
BackwardRewrites
br_first :: BlockId -> a -> Maybe (AGraph middle last)
br_middle :: middle -> a -> Maybe (AGraph middle last)
br_last :: last -> (BlockId -> a) -> Maybe (AGraph middle last)
br_exit :: Maybe (AGraph middle last)
show/hide Instances
data ForwardFixedPoint m l fact a Source
A forward problem needs the common fields, plus the facts on the outedges.
show/hide Instances
type BackwardFixedPoint = CommonFixedPointSource
The common fixed point is sufficient for a backward problem.
zdfFpFacts :: FixedPoint fp => fp m l fact a -> BlockEnv factSource
zdfFpOutputFact :: FixedPoint fp => fp m l fact a -> factSource
zdfGraphChanged :: FixedPoint fp => fp m l fact a -> ChangeFlagSource
zdfDecoratedGraph :: FixedPoint fp => fp m l fact a -> Graph (fact, m) (fact, l)Source
zdfFpContents :: FixedPoint fp => fp m l fact a -> aSource
zdfFpLastOuts :: ForwardFixedPoint m l fact a -> LastOutFacts factSource
zdfBRewriteFromL :: (DebugNodes m l, Outputable a) => RewritingDepth -> BlockEnv a -> PassName -> DataflowLattice a -> BackwardTransfers m l a -> BackwardRewrites m l a -> a -> LGraph m l -> FuelMonad (BackwardFixedPoint m l a (LGraph m l))Source
zdfFRewriteFromL :: (DebugNodes m l, Outputable a) => RewritingDepth -> BlockEnv a -> PassName -> DataflowLattice a -> ForwardTransfers m l a -> ForwardRewrites m l a -> a -> LGraph m l -> FuelMonad (ForwardFixedPoint m l a (LGraph m l))Source
Produced by Haddock version 2.6.1