module Dataflow: sig
.. end
A framework for data flow analysis for CIL code. Before using
this framework, you must initialize the Control-flow Graph for your
program, e.g using Cfg.computeFileCFG
.
Consult the Plugin Development Guide for additional details.
type 'a
action =
| |
Default |
| |
Done of 'a |
| |
Post of ('a -> 'a) |
type 'a
stmtaction =
| |
SDefault |
| |
SDone |
| |
SUse of 'a |
type 'a
guardaction =
| |
GDefault |
| |
GUse of 'a |
| |
GUnreachable |
module type StmtStartData = sig
.. end
module StmtStartData: functor (
X
:
sig
end
) ->
StmtStartData
with type data = X.t and type key = int
module StartData: functor (
X
:
sig
end
) ->
StmtStartData
with type data = X.t and type key = Cil_types.stmt
module type ForwardsTransfer = sig
.. end
module Forwards:
module ForwardsDataFlow:
Same dataflow as above, but with initial states indexed by statements
sids.
module type BackwardsTransfer = sig
.. end
module Backwards:
module BackwardsDataFlow:
Same dataflow as above, but with initial states indexed by statements
sids.
val find_stmts : Cil_types.fundec -> Cil_types.stmt list * Cil_types.stmt list
Returns (all_stmts, sink_stmts), where all_stmts is a list of the
statements in a function, and sink_stmts is a list of the return statments
(including statements that fall through the end of a void function).
Useful when you need an initial set of statements for
BackwardsDataFlow.compute.