Module Pulselib.PulseValueOrigin

module AbstractValue = PulseAbstractValue
module ValueHistory = PulseValueHistory
module Access = PulseAccess
type t =
  1. | InMemory of {
    1. src : AbstractValue.t * ValueHistory.t;
    2. access : Access.t;
    3. dest : AbstractValue.t * ValueHistory.t;
    }
  2. | OnStack of {
    1. var : IR.Var.t;
    2. addr_hist : AbstractValue.t * ValueHistory.t;
    }
  3. | Unknown of AbstractValue.t * 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.

val unknown : (AbstractValue.t * ValueHistory.t) -> t
val addr_hist : t -> AbstractValue.t * ValueHistory.t
val value : t -> AbstractValue.t