functor
(REACH : sig
val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
val is_natural_loop : Cil_types.stmt -> bool
val blocks_closed_by_edge :
Cil_types.stmt -> Cil_types.stmt -> Cil_types.block list
end) ->
sig
val name : string
val stmt_can_reach : Cil_types.stmt -> Cil_types.stmt -> bool
val debug : bool Pervasives.ref
type record = {
superposition : State_set.t;
widening : int;
widening_state : Relations_type.Model.t;
}
val empty_record : Eval.Computer.record
val current_table : Eval.Computer.record Cilutil.InstrHashtbl.t
val find_current : Cilutil.InstrHashtbl.key -> Eval.Computer.record
val update_current_exn : State_set.t -> unit
val update_current : State_set.t -> unit
val merge_current : degenerate:bool -> unit
type u = { counter_unroll : int; value : State_set.t Pervasives.ref; }
module StmtStartData :
sig
type data = u
val clear : unit -> unit
val mem : int -> bool
val find : int -> data
val replace : int -> data -> unit
val add : int -> data -> unit
val iter : (int -> data -> unit) -> unit
end
type t = Eval.Computer.u
val copy : Eval.Computer.t -> Eval.Computer.t
val display_one : Format.formatter -> Eval.Computer.u -> unit
val pretty : Format.formatter -> Eval.Computer.t -> unit
val computeFirstPredecessor :
Cil_types.stmt -> Eval.Computer.u -> Eval.Computer.u
val getWidenHints :
Cil_types.stmt ->
BaseUtils.BaseSet.t * (Base.t -> Locations.Location_Bytes.widen_hint)
val counter_unroll_target : int Pervasives.ref
val combinePredecessors :
Cil_types.stmt ->
old:Eval.Computer.u -> Eval.Computer.u -> Eval.Computer.u option
val do_assign_abstract_value_to_loc :
with_alarms:CilE.warn_mode ->
Relations_type.Model.t ->
Cil_types.lval ->
Locations.location -> Cvalue_type.V.t -> Relations_type.Model.t
val bases_containing_locals :
Locations.Location_Bits.Top_Param.t Pervasives.ref
val remember_bases_with_locals :
Locations.location -> Cvalue_type.V.t -> unit
val do_assign_abstract_value :
with_alarms:CilE.warn_mode ->
former_state:Db.Value.state ->
Db.Value.state ->
Cil_types.lval -> Cvalue_type.V.t -> Relations_type.Model.t
val offsetmap_top_addresses_of_locals :
(Cvalue_type.V.M.key -> bool) ->
Cvalue_type.V_Offsetmap.t -> Cvalue_type.V_Offsetmap.t * bool
val state_top_addresses_of_locals :
bool ->
(Cvalue_type.Partial_lmap.loffset ->
Cvalue_type.Partial_lmap.loffset * bool) ->
Cil_types.fundec -> Relations_type.Model.t -> Relations_type.Model.t
val top_addresses_of_locals :
Cil_types.fundec ->
(Cvalue_type.V_Offsetmap.t -> Cvalue_type.V_Offsetmap.t * bool) *
(Relations_type.Model.t -> Relations_type.Model.t)
val block_top_addresses_of_locals :
Cil_types.block list ->
Relations_type.Model.t -> Relations_type.Model.t
val do_assign :
with_alarms:CilE.warn_mode ->
Db.Value.state ->
Cil_types.lval -> Cil_types.exp -> Relations_type.Model.t
val do_assign :
with_alarms:CilE.warn_mode ->
Db.Value.state ->
Cil_types.lval -> Cil_types.exp -> Relations_type.Model.t
exception Got_bottom
val reachables : Eval.Computer.u -> bool * State_set.t
val empty_interpretation_result :
'a option * Relations_type.Model.t *
Locations.Location_Bits.Top_Param.t
val interp_call :
Cil_types.stmt ->
Cil_types.lval option ->
Cil_types.exp -> Cil_types.exp list -> State_set.t -> State_set.t
val doInstr :
Cil_types.stmt ->
Cil_types.instr -> Eval.Computer.t -> Eval.Computer.t Dataflow.action
val interp_annot :
State_set.t ->
(Cil_types.predicate Cil_types.named *
(Cil_types.annotation_status -> 'a))
list -> State_set.t
val check_non_overlapping :
Db.Value.state -> Cil_types.lval list -> Cil_types.lval list -> unit
val check_unspecified_sequence :
Db.Value.state ->
(Cil_types.stmt * Cil_types.lval list * Cil_types.lval list) list ->
unit
val doStmt :
Cil_types.stmt ->
Eval.Computer.t -> Eval.Computer.u Dataflow.stmtaction
val doEdge :
Cil_types.stmt -> Cil_types.stmt -> Eval.Computer.t -> Eval.Computer.t
val filterStmt : 'a -> bool
val externalize :
Cilutil.InstrHashtbl.key ->
Kernel_function.t ->
Cvalue_type.V_Offsetmap.t option * Relations_type.Model.t *
Locations.Location_Bits.Top_Param.t
val doGuard :
Cil_types.stmt ->
Cil_types.exp ->
Eval.Computer.u -> Eval.Computer.u Dataflow.guardaction
end