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 * 'Datatype.Int.Hashtbl.t ->
    unit * 'b * 'Datatype.Int.Hashtbl.t
  val defIdStmtHash : Cil_types.stmt Datatype.Int.Hashtbl.t
  val sidStmtHash : Cil_types.stmt Datatype.Int.Hashtbl.t
  val pretty : '-> '-> unit
  val nextDefId : int Pervasives.ref
  val num_defs : Cil_types.stmt -> int
  val computeFirstPredecessor :
    Cil_types.stmt ->
    'a * int * 'Datatype.Int.Hashtbl.t ->
    unit * int * '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 :
    '->
    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 * 'Reachingdefs.IH.t -> 'Reachingdefs.DF.stmtaction
  val doGuard :
    '->
    '->
    '-> 'Reachingdefs.DF.guardaction * 'Reachingdefs.DF.guardaction
  val doEdge : '-> '-> '-> 'c
end