Author: Yitzhak Mandelbaum Date: 2023-02-10T15:53:28Z New Revision: a00f17d81efbd06080761aeef660e5269270a53f
URL: https://github.com/llvm/llvm-project/commit/a00f17d81efbd06080761aeef660e5269270a53f DIFF: https://github.com/llvm/llvm-project/commit/a00f17d81efbd06080761aeef660e5269270a53f.diff LOG: [clang][dataflow] Convert nonnull pointer parameter to a reference. The parameter in question belongs to a function that is only called once. This patch updates the API to use a reference and changes the caller accordingly. Differential Revision: https://reviews.llvm.org/D143735 Added: Modified: clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h b/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h index 517dd3c9997f9..d7ca721246757 100644 --- a/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h +++ b/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h @@ -119,10 +119,11 @@ class DataflowAnalysis : public TypeErasedDataflowAnalysis { return L1 == L2; } - void transferTypeErased(const CFGElement *Element, TypeErasedLattice &E, + void transferTypeErased(const CFGElement &Element, TypeErasedLattice &E, Environment &Env) final { Lattice &L = llvm::any_cast<Lattice &>(E.Value); - static_cast<Derived *>(this)->transfer(Element, L, Env); + // FIXME: change the contract of `transfer` to take a reference. + static_cast<Derived *>(this)->transfer(&Element, L, Env); } void transferBranchTypeErased(bool Branch, const Stmt *Stmt, diff --git a/clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h b/clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h index 1d7962e9f67a5..d69adfad396d1 100644 --- a/clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h +++ b/clang/include/clang/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.h @@ -96,7 +96,7 @@ class TypeErasedDataflowAnalysis : public Environment::ValueModel { /// Applies the analysis transfer function for a given control flow graph /// element and type-erased lattice element. - virtual void transferTypeErased(const CFGElement *, TypeErasedLattice &, + virtual void transferTypeErased(const CFGElement &, TypeErasedLattice &, Environment &) = 0; /// Applies the analysis transfer function for a given edge from a CFG block diff --git a/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp b/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp index b125701212c96..fe00d765b6bef 100644 --- a/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp +++ b/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp @@ -374,7 +374,7 @@ transferCFGBlock(const CFGBlock &Block, AnalysisContext &AC, } // User-provided analysis - AC.Analysis.transferTypeErased(&Element, State.Lattice, State.Env); + AC.Analysis.transferTypeErased(Element, State.Lattice, State.Env); // Post processing if (PostVisitCFG) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits