Module Pulselib.PulseCallOperations

type t = PulseDomainInterface.AbductiveDomain.t
val call : IR.Tenv.t -> caller_proc_desc:IR.Procdesc.t -> callee_data:(IR.Procdesc.t * PulseSummary.t) option -> IBase.Location.t -> IR.Procname.t -> ret:(IR.Ident.t * IR.Typ.t) -> actuals:((PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) * IR.Typ.t) list -> formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> t -> PulseDomainInterface.ExecutionDomain.t 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 -> IBase.Location.t -> PulseBasicInterface.CallEvent.t -> ret:(IR.Ident.t * IR.Typ.t) -> actuals:((PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) * IR.Typ.t) list -> formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> t -> 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 : PulseBasicInterface.AbstractValue.t list -> t -> t