`sig
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 ForwardsTransfer =
sig
val name : string
val debug : bool Pervasives.ref
type t
val copy : Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t
val stmtStartData : Dataflow.ForwardsTransfer.t Inthash.t
val pretty : unit -> Dataflow.ForwardsTransfer.t -> Pretty.doc
val computeFirstPredecessor :
Cil.stmt ->
Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t
val combinePredecessors :
Cil.stmt ->
old:Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t option
val doInstr :
Cil.instr ->
Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t Dataflow.action
val doStmt :
Cil.stmt ->
Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t Dataflow.stmtaction
val doGuard :
Cil.exp ->
Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t Dataflow.guardaction
val filterStmt : Cil.stmt -> bool
end
module ForwardsDataFlow :
functor (T : ForwardsTransfer) ->
sig val compute : Cil.stmt list -> unit end
module type BackwardsTransfer =
sig
val name : string
val debug : bool Pervasives.ref
type t
val pretty : unit -> Dataflow.BackwardsTransfer.t -> Pretty.doc
val stmtStartData : Dataflow.BackwardsTransfer.t Inthash.t
val funcExitData : Dataflow.BackwardsTransfer.t
val combineStmtStartData :
Cil.stmt ->
old:Dataflow.BackwardsTransfer.t ->
Dataflow.BackwardsTransfer.t -> Dataflow.BackwardsTransfer.t option
val combineSuccessors :
Dataflow.BackwardsTransfer.t ->
Dataflow.BackwardsTransfer.t -> Dataflow.BackwardsTransfer.t
val doStmt : Cil.stmt -> Dataflow.BackwardsTransfer.t Dataflow.action
val doInstr :
Cil.instr ->
Dataflow.BackwardsTransfer.t ->
Dataflow.BackwardsTransfer.t Dataflow.action
val filterStmt : Cil.stmt -> Cil.stmt -> bool
end
module BackwardsDataFlow :
functor (T : BackwardsTransfer) ->
sig val compute : Cil.stmt list -> unit end
val find_stmts : Cil.fundec -> Cil.stmt list * Cil.stmt list
end`