Copyright | (c) Galois Inc 2015 |
---|---|
License | BSD3 |
Maintainer | Rob Dockins <rdockins@galois.com> |
Stability | provisional |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Lang.Crucible.Analysis.ForwardDataflow
Description
Deprecated: Lang.Crucible.Analysis.Fixpoint is a better implementation of these ideas
This module defines a generic framework for forward dataflow analysis, with some additional control-flow data on the side.
We calculate a fixpoint of a given analysis via the straightforward method of iterating the transfer function until no more updates occur.
Our current method for doing this is quite naive, and more efficient methods exist.
Documentation
symbolicResults :: IsSyntaxExtension ext => CFG ext blocks init ret -> String Source #
sym_reg_transfer :: Reg ctx tp -> Assignment (Ignore SymDom) ctx -> SymDom Source #
sym_expr_transfer :: IsSyntaxExtension ext => Expr ext ctx tp -> Assignment (Ignore SymDom) ctx -> SymDom Source #
sym_call_transfer :: CtxRepr args -> TypeRepr ret -> Reg ctx (FunctionHandleType args ret) -> Ignore SymDom (FunctionHandleType args ret) -> Assignment a args -> Ignore SymDom ret Source #
symbolicAnalysis :: IsSyntaxExtension ext => KildallForward ext blocks (Ignore SymDom) SymDom Source #
data KildallPair (a :: k -> Type) (c :: Type) (tp :: k) Source #
Constructors
KP (a tp) c |
Instances
(ShowF a, Show c) => ShowF (KildallPair a c :: k -> Type) Source # | |
Defined in Lang.Crucible.Analysis.ForwardDataflow Methods withShow :: forall p q (tp :: k0) a0. p (KildallPair a c) -> q tp -> (Show (KildallPair a c tp) => a0) -> a0 # showF :: forall (tp :: k0). KildallPair a c tp -> String # showsPrecF :: forall (tp :: k0). Int -> KildallPair a c tp -> String -> String # | |
(ShowF a, Show c) => Show (KildallPair a c tp) Source # | |
Defined in Lang.Crucible.Analysis.ForwardDataflow Methods showsPrec :: Int -> KildallPair a c tp -> ShowS # show :: KildallPair a c tp -> String # showList :: [KildallPair a c tp] -> ShowS # |
newtype Ignore a (b :: k) Source #
Instances
Show a => ShowF (Ignore a :: k -> Type) Source # | |
Show a => Show (Ignore a tp) Source # | |
Eq a => Eq (Ignore a b) Source # | |
Ord a => Ord (Ignore a b) Source # | |
Defined in Lang.Crucible.Analysis.ForwardDataflow |
data KildallForward ext blocks (a :: CrucibleType -> Type) c Source #
Constructors
KildallForward | |
Fields
|
kildall_transfer :: forall ext a c blocks ret ctx. KildallForward ext blocks a c -> TypeRepr ret -> Block ext blocks ret ctx -> (Assignment a ctx, c) -> State (Assignment (KildallPair (Assignment a) c) blocks, a ret, c) (Set (Some (BlockID blocks))) Source #
kildall_forward :: forall ext a c blocks ret init. KildallForward ext blocks a c -> CFG ext blocks init ret -> (Assignment a init, c) -> (Assignment (KildallPair (Assignment a) c) blocks, a ret, c) Source #