Pulselib.PulseValueOrigin
module AbstractValue = PulseAbstractValue
module Access = PulseAccess
module ValueHistory = PulseValueHistory
type 'value t_ =
| InMemory of {
src : 'value * ValueHistory.t;
access : 'value Access.access;
dest : 'value * ValueHistory.t;
}
| OnStack of {
var : IR.Var.t;
addr_hist : 'value * ValueHistory.t;
}
| Unknown of 'value * ValueHistory.t
Values without a known origin such as those containing constant values.
*)Describes a (value, history) pair with path/origin when available.
Useful when one needs to overwrite a history of a particular value in the abstract state.
type t = AbstractValue.t t_
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : F.formatter -> t -> unit
val unknown : ('value * ValueHistory.t) -> 'value t_
val with_value : AbstractValue.t -> t -> t
val with_hist : ValueHistory.t -> t -> t
val addr_hist : 'value t_ -> 'value * ValueHistory.t
val addr_hist_args :
t Absint.ProcnameDispatcher.Call.FuncArg.t list ->
(AbstractValue.t * ValueHistory.t) Absint.ProcnameDispatcher.Call.FuncArg.t
list
val value : 'value t_ -> 'value
val hist : _ t_ -> ValueHistory.t