Module InferModules.InefficientKeysetIterator
module CFG = ProcCfg.Normal
module LoopNodes : sig ... end
val find_loaded_pvar : InferIR.Ident.t -> InferIR.Sil.instr -> InferIR.Pvar.t option
val find_first_arg_id : fun_name:InferStdlib.IStd.String.t -> class_name_f:(string -> bool) -> lhs_f:(InferIR.Ident.t -> bool) -> InferIR.Sil.instr -> InferIR.Ident.t option
val find_first_arg_pvar : InferIR.Procdesc.Node.t -> fun_name:InferStdlib.IStd.String.t -> class_name_f:(string -> bool) -> InferIR.Pvar.t InferStdlib.IStd.Option.t
If given a node that has 4 instructions and calls fun_name, pickup bcvarY, i.e. variable for the first argument n$X = *&$bcvarY _ = *n$X n$X+1 = fun_name(n$X,....) *&$irvarZ = n$X+1
val report_matching_get : InferIR.Tenv.t -> Summary.t -> InferIR.Pvar.t -> LoopNodes.t -> unit
val when_dominating_preds_satisfy : (Dominators.GDoms.vertex -> Dominators.GDoms.vertex) -> Dominators.GDoms.vertex -> fun_name:InferStdlib.IStd.String.t -> class_name_f:(string -> bool) -> f:(Dominators.GDoms.vertex -> InferIR.Pvar.t -> unit) -> unit
Heuristic: check up to 4 direct predecessor nodes
val checker : Callbacks.proc_callback_args -> Summary.t