Module Pulselib.PulseAttribute

module F = Stdlib.Format
module Invalidation = PulseInvalidation
module Trace = PulseTrace
module ValueHistory = PulseValueHistory
type t =
| AddressOfCppTemporary of IR.Var.t * ValueHistory.t
| AddressOfStackVariable of IR.Var.t * IBase.Location.t * ValueHistory.t
| Allocated of IR.Procname.t * Trace.t

the Procname.t is the function causing the allocation, eg malloc

| Closure of IR.Procname.t
| DynamicType of IR.Typ.t
| EndOfCollection
| Invalid of Invalidation.t * Trace.t
| ISLAbduced of Trace.t

The allocation is abduced so as the analysis could run normally

| MustBeInitialized of Trace.t
| MustBeValid of Trace.t * Invalidation.must_be_valid_reason option
| StdVectorReserve
| Uninitialized
| WrittenTo of Trace.t
val compare : t -> t -> int
val pp : F.formatter -> t -> unit
val is_suitable_for_pre : t -> bool
val is_suitable_for_post : t -> bool
val map_trace : f:(Trace.t -> Trace.t) -> t -> t

applies f to the traces found in attributes, leaving attributes without traces intact

module Attributes : sig ... end