



Synopsis 

class (Outputable m, Outputable l, LastNode l, Outputable (LGraph m l)) => DebugNodes m l     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 {}   data BackwardTransfers middle last a = BackwardTransfers {}   data ForwardRewrites middle last a = ForwardRewrites {}   data BackwardRewrites middle last a = BackwardRewrites {}   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 


 Instances  



Constructors  RewriteShallow   RewriteDeep  




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 subanalysis





:: (DataflowSolverDirection transfers fixedpt, DebugNodes m l, Outputable a)   => BlockEnv a  Initial facts (unbound == bottom)
 > PassName   > DataflowLattice a  Lattice
 > transfers m l a  Dataflow transfer functions
 > a  Fact flowing in (at entry or exit)
 > Graph m l  Graph to be analyzed
 > FuelMonad (fixedpt m l a ())  Answers







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  

 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  

 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   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   Instances  


data ForwardFixedPoint m l fact a  Source 

A forward problem needs the common fields, plus the facts on the outedges.
 Instances  


type BackwardFixedPoint = CommonFixedPoint  Source 

The common fixed point is sufficient for a backward problem.




zdfFpOutputFact :: FixedPoint fp => fp m l fact a > fact  Source 




zdfDecoratedGraph :: FixedPoint fp => fp m l fact a > Graph (fact, m) (fact, l)  Source 


zdfFpContents :: FixedPoint fp => fp m l fact a > a  Source 








Produced by Haddock version 2.6.1 