module Location_Bytes: sig
.. end
Association between varids and offsets in byte.
Consult the Plugin Development Guide for additional details.
module M: sig
.. end
module Top_Param: Lattice_Set
with type O.elt = Base.t
type
z =
| |
Top of Top_Param.t * Origin.t |
| |
Map of M.t |
include Lattice
val top_float : t
val is_zero : t -> bool
val hash : t -> int
val zero_or_one : t
val singleton_zero : t
the set containing only the value corresponding to the
C expression 0
val singleton_one : t
the set containing only the value 1
val topify_arith_origin : t -> t
val topify_misaligned_read_origin : t -> t
val topify_merge_origin : t -> t
val under_topify : t -> t
val top_int : t
val find_or_bottom : Base.t -> M.t -> Ival.t
val add_or_bottom : Base.t ->
Ival.t -> M.t -> M.t
val inject : Base.t -> Ival.t -> t
val inject_ival : Ival.t -> t
val inject_top_origin : Origin.t -> Top_Param.O.t -> t
inject_top_origin origin p
creates a top with origin origin
and additional information param
val fold_enum : split_non_enumerable:int -> (t -> 'a -> 'a) -> t -> 'a -> 'a
val splitting_cardinal_less_than : split_non_enumerable:int -> t -> int -> int
val find_exclusive : Base.t -> t -> Ival.t
find_exclusive k m
returns v
if m
contains only the binding k
-> v
.
Raises Not_exclusive
otherwise.
val split : Base.t -> t -> Ival.t * t
exception Not_all_keys
val get_keys_exclusive : Ival.t -> t -> Base.t list
val find_lonely_binding : t -> Base.t * Ival.t
val find_lonely_key : t -> Base.t * Ival.t
val diff : t -> t -> t
val diff_if_one : t -> t -> t
val location_shift : Ival.t -> t -> t
val fold_i : (Base.t -> Ival.t -> 'a -> 'a) -> t -> 'a -> 'a
val fold_bases : (Base.t -> 'a -> 'a) -> t -> 'a -> 'a
val top_leaf_origin : unit -> t
val topify_with_origin : Origin.t -> t -> t
val is_included_actual_generic : Base.Set.t ->
Base.Set.t Pervasives.ref -> t Base.Map.t Pervasives.ref -> t -> t -> unit
val may_reach : Base.t -> t -> bool
may_reach base loc
is true if base
might be accessed from loc
.
val cached_fold : cache:string * int ->
temporary:bool ->
f:(Base.t -> Ival.t -> 'a) ->
projection:(Base.t -> Ival.t) ->
joiner:('a -> 'a -> 'a) -> empty:'a -> t -> 'a
val contains_addresses_of_locals : (M.key -> bool) -> t -> bool
contains_addresses_of_locals is_local loc
returns true
if loc
contains the adress of a variable for which
is_local
returns true
val remove_escaping_locals : (M.key -> bool) -> t -> t
TODO: merge with above function
remove_escaping_locals is_local v
removes from v
information
associated with bases for which is_local
returns true
.
val contains_addresses_of_any_locals : t -> bool
contains_addresses_of_any_locals loc
returns true
iff loc
contains
the adress of a local variable or of a formal variable.