ghc-6.12.2: The GHC APISource codeContentsIndex
DFMonad
Documentation
data DataflowLattice a Source
Constructors
DataflowLattice
fact_name :: String
fact_bot :: a
fact_add_to :: a -> a -> TxRes acompute join of two args; something changed iff join is greater than 2nd arg
fact_do_logging :: Bool
class DataflowAnalysis m whereSource
Methods
markFactsUnchangedSource
:: m f ()Useful for starting a new iteration
factsStatus :: m f ChangeFlagSource
subAnalysisSource
:: m f a
-> m f aDo a new analysis and then throw away all the related state.
getFact :: BlockId -> m f fSource
setFact :: Outputable f => BlockId -> f -> m f ()Source
getExitFact :: m f fSource
setExitFact :: Outputable f => f -> m f ()Source
checkFactMatchSource
:: Outputable f
=> BlockId
-> f
-> m f ()assert fact already at this val
botFact :: m f fSource
forgetFact :: BlockId -> m f ()Source
addLastOutFact :: (BlockId, f) -> m f ()Source
It might be surprising these next two are needed in a pure analysis, but for some problems we do a shallow rewriting in which a rewritten graph is not itself considered for further rewriting but merely undergoes an analysis. In this case the results of a forward analysis might produce new facts that go on BlockId's that reside outside the graph being analyzed. Thus these lastOutFacts need to be available even in a pure analysis.
bareLastOutFacts :: m f [(BlockId, f)]Source
forgetLastOutFacts :: m f ()Source
getAllFacts :: m f (BlockEnv f)Source
setAllFacts :: BlockEnv f -> m f ()Source
factsEnv :: Monad (m f) => m f (BlockId -> f)Source
show/hide Instances
Monad m => DataflowAnalysis (DFM' m)
type DFM fact a = DFM' FuelMonad fact aSource
runDFM :: Monad m => DataflowLattice f -> DFM' m f a -> m aSource
liftToDFM :: FuelMonad x -> DFM f xSource
markGraphRewritten :: Monad m => DFM' m f ()Source
graphWasRewritten :: DFM f ChangeFlagSource
module OptimizationFuel
Produced by Haddock version 2.6.1