module type BackwardsTransfer =sig..end
val name : stringval debug : bool Pervasives.reftype t
val pretty : Format.formatter -> t -> unitval funcExitData : tval combineStmtStartData : Cil_types.stmt ->
old:t ->
t -> t optionval combineSuccessors : t ->
t -> tval doStmt : Cil_types.stmt -> t Dataflow.action(Cil.CurrentLoc.get
()) is set before calling this. If it returns None, then we have some
default handling. Otherwise, the returned data is the data before the
branch (not considering the exception handlers)val doInstr : Cil_types.stmt ->
Cil_types.instr ->
t -> t Dataflow.action(Cil.CurrentLoc.get ()) is set before calling this. If it returns None,
then we have some default handling. Otherwise, the returned data is the
data before the branch (not considering the exception handlers)val filterStmt : Cil_types.stmt -> Cil_types.stmt -> boolval stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> booltrue if ther is a path in the control-flow graph of the
function from the first statement to the second. Used to choose a "good"
node in the worklist.
Suggested use is let stmt_can_reach = Stmts_graph.stmt_can_reach kf,
where kf is the kernel_function being analyzed;
let stmt_can_reach _ _ = true is also correct, albeit less efficient
Since Oxygen-20120901
module StmtStartData:Dataflow.StmtStartDatawith type data = t