Module Pulselib.PulseAttribute

module F = Stdlib.Format
module Invalidation = PulseInvalidation
module PathContext = PulsePathContext
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 PathContext.timestamp * Trace.t
| MustBeValid of PathContext.timestamp * Trace.t * Invalidation.must_be_valid_reason option
| StdVectorReserve
| Uninitialized
| UnreachableAt of IBase.Location.t

temporary marker to remember where a variable became unreachable; helps with accurately reporting leaks

| 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
module Attributes : sig ... end