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 StmtStartData =
sig
type data
type key
val clear : unit -> unit
val mem : Dataflow.StmtStartData.key -> bool
val find : Dataflow.StmtStartData.key -> Dataflow.StmtStartData.data
val replace :
Dataflow.StmtStartData.key -> Dataflow.StmtStartData.data -> unit
val add :
Dataflow.StmtStartData.key -> Dataflow.StmtStartData.data -> unit
val iter :
(Dataflow.StmtStartData.key -> Dataflow.StmtStartData.data -> unit) ->
unit
val length : unit -> int
end
module StmtStartData :
functor (X : sig type t val size : int end) ->
sig
type data = X.t
type key = int
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
module StartData :
functor (X : sig type t val size : int end) ->
sig
type data = X.t
type key = Cil_types.stmt
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
module type ForwardsTransfer =
sig
val name : string
val debug : bool Pervasives.ref
type t
val copy : Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t
val pretty : Format.formatter -> Dataflow.ForwardsTransfer.t -> unit
val computeFirstPredecessor :
Cil_types.stmt ->
Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t
val combinePredecessors :
Cil_types.stmt ->
old:Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t option
val doInstr :
Cil_types.stmt ->
Cil_types.instr ->
Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t Dataflow.action
val doGuard :
Cil_types.stmt ->
Cil_types.exp ->
Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t Dataflow.guardaction *
Dataflow.ForwardsTransfer.t Dataflow.guardaction
val doStmt :
Cil_types.stmt ->
Dataflow.ForwardsTransfer.t ->
Dataflow.ForwardsTransfer.t Dataflow.stmtaction
val filterStmt : Cil_types.stmt -> bool
val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
val doEdge :
Cil_types.stmt ->
Cil_types.stmt ->
Dataflow.ForwardsTransfer.t -> Dataflow.ForwardsTransfer.t
module StmtStartData :
sig
type data = t
type key
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
end
module Forwards :
functor
(T : sig
val name : string
val debug : bool ref
type t
val copy : t -> t
val pretty : Format.formatter -> t -> unit
val computeFirstPredecessor : Cil_types.stmt -> t -> t
val combinePredecessors :
Cil_types.stmt -> old:t -> t -> t option
val doInstr : Cil_types.stmt -> Cil_types.instr -> t -> t action
val doGuard :
Cil_types.stmt ->
Cil_types.exp -> t -> t guardaction * t guardaction
val doStmt : Cil_types.stmt -> t -> t stmtaction
val filterStmt : Cil_types.stmt -> bool
val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
val doEdge : Cil_types.stmt -> Cil_types.stmt -> t -> t
module StmtStartData :
sig
type data = t
type key = Cil_types.stmt
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
end) ->
sig
val reachedStatement :
Cil_types.stmt -> Cil_types.stmt -> T.t -> unit
val compute : Cil_types.stmt list -> unit
end
module ForwardsDataFlow :
functor
(T : sig
val name : string
val debug : bool ref
type t
val copy : t -> t
val pretty : Format.formatter -> t -> unit
val computeFirstPredecessor : Cil_types.stmt -> t -> t
val combinePredecessors :
Cil_types.stmt -> old:t -> t -> t option
val doInstr : Cil_types.stmt -> Cil_types.instr -> t -> t action
val doGuard :
Cil_types.stmt ->
Cil_types.exp -> t -> t guardaction * t guardaction
val doStmt : Cil_types.stmt -> t -> t stmtaction
val filterStmt : Cil_types.stmt -> bool
val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
val doEdge : Cil_types.stmt -> Cil_types.stmt -> t -> t
module StmtStartData :
sig
type data = t
type key = int
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
end) ->
sig
val reachedStatement :
Cil_types.stmt -> Cil_types.stmt -> T.t -> unit
val compute : Cil_types.stmt list -> unit
end
module type BackwardsTransfer =
sig
val name : string
val debug : bool Pervasives.ref
type t
val pretty : Format.formatter -> Dataflow.BackwardsTransfer.t -> unit
val funcExitData : Dataflow.BackwardsTransfer.t
val combineStmtStartData :
Cil_types.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_types.stmt -> Dataflow.BackwardsTransfer.t Dataflow.action
val doInstr :
Cil_types.stmt ->
Cil_types.instr ->
Dataflow.BackwardsTransfer.t ->
Dataflow.BackwardsTransfer.t Dataflow.action
val filterStmt : Cil_types.stmt -> Cil_types.stmt -> bool
module StmtStartData :
sig
type data = t
type key
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
end
module Backwards :
functor
(T : sig
val name : string
val debug : bool ref
type t
val pretty : Format.formatter -> t -> unit
val funcExitData : t
val combineStmtStartData :
Cil_types.stmt -> old:t -> t -> t option
val combineSuccessors : t -> t -> t
val doStmt : Cil_types.stmt -> t action
val doInstr : Cil_types.stmt -> Cil_types.instr -> t -> t action
val filterStmt : Cil_types.stmt -> Cil_types.stmt -> bool
module StmtStartData :
sig
type data = t
type key = Cil_types.stmt
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
end) ->
sig val compute : Cil_types.stmt list -> unit end
module BackwardsDataFlow :
functor
(T : sig
val name : string
val debug : bool ref
type t
val pretty : Format.formatter -> t -> unit
val funcExitData : t
val combineStmtStartData :
Cil_types.stmt -> old:t -> t -> t option
val combineSuccessors : t -> t -> t
val doStmt : Cil_types.stmt -> t action
val doInstr : Cil_types.stmt -> Cil_types.instr -> t -> t action
val filterStmt : Cil_types.stmt -> Cil_types.stmt -> bool
module StmtStartData :
sig
type data = t
type key = int
val clear : unit -> unit
val mem : key -> bool
val find : key -> data
val replace : key -> data -> unit
val add : key -> data -> unit
val iter : (key -> data -> unit) -> unit
val length : unit -> int
end
end) ->
sig val compute : Cil_types.stmt list -> unit end
val find_stmts :
Cil_types.fundec -> Cil_types.stmt list * Cil_types.stmt list
val stmt_of_sid : (int -> Cil_types.stmt) Pervasives.ref
end