sig
val name : string
val debug : bool
val mayReach : bool Pervasives.ref
type t = unit * int * Reachingdefs.IOS.t Reachingdefs.IH.t
module StmtStartData :
sig
type data = unit * int * IOS.t IH.t
val clear : unit -> unit
val mem : Cil_types.stmt -> bool
val find : Cil_types.stmt -> data
val replace : Cil_types.stmt -> data -> unit
val add : Cil_types.stmt -> data -> unit
val iter : (Cil_types.stmt -> data -> unit) -> unit
val length : unit -> int
end
val copy :
'a * 'b * 'c Datatype.Int.Hashtbl.t ->
unit * 'b * 'c Datatype.Int.Hashtbl.t
val defIdStmtHash : Cil_types.stmt Datatype.Int.Hashtbl.t
val sidStmtHash : Cil_types.stmt Datatype.Int.Hashtbl.t
val pretty : 'a -> 'b -> unit
val nextDefId : int Pervasives.ref
val num_defs : Cil_types.stmt -> int
val computeFirstPredecessor :
Cil_types.stmt ->
'a * int * 'b Datatype.Int.Hashtbl.t ->
unit * int * 'b Datatype.Int.Hashtbl.t
val combinePredecessors :
Cil_types.stmt ->
old:Reachingdefs.ReachingDef.t ->
Reachingdefs.ReachingDef.t ->
(unit * int * Reachingdefs.IOS.t Reachingdefs.IH.t) option
val doInstr :
'a ->
Cil_types.instr ->
'b * int * Reachingdefs.IOS.t Reachingdefs.IH.t ->
unit * int * Reachingdefs.IOS.t Reachingdefs.IH.t
val doStmt :
Cil_types.stmt ->
'a * 'b * 'c Reachingdefs.IH.t -> 'd Reachingdefs.DF.stmtaction
val doGuard :
'a ->
'b ->
'c -> 'd Reachingdefs.DF.guardaction * 'e Reachingdefs.DF.guardaction
val doEdge : 'a -> 'b -> 'c -> 'c
end