Module Pulselib__PulseCallOperations

type t = Pulselib.PulseDomainInterface.AbductiveDomain.t
val call : IR.Tenv.t -> Pulselib.PulseBasicInterface.PathContext.t -> caller_proc_desc:IR.Procdesc.t -> callee_data:(IR.Procdesc.t * Pulselib.PulseSummary.t) option -> IBase.Location.t -> IR.Procname.t -> ret:(IR.Ident.t * IR.Typ.t) -> actuals:((Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) * IR.Typ.t) list -> formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> t -> Pulselib.PulseDomainInterface.ExecutionDomain.t Pulselib.PulseDomainInterface.AccessResult.t list

perform an interprocedural call: apply the summary for the call proc name passed as argument if it exists

val unknown_call : IR.Tenv.t -> Pulselib.PulseBasicInterface.PathContext.t -> IBase.Location.t -> Pulselib.PulseBasicInterface.CallEvent.t -> ret:(IR.Ident.t * IR.Typ.t) -> actuals:((Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) * IR.Typ.t) list -> formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> t -> t Pulselib.PulseDomainInterface.AccessResult.t

performs a call to a function with no summary by optimistically havoc'ing the by-ref actuals and the return value as appropriate

val conservatively_initialize_args : Pulselib.PulseBasicInterface.AbstractValue.t list -> t -> t