Author: Martin Braenne Date: 2023-07-10T13:43:13Z New Revision: 8bc13c884727f0b9be876303d654dd1eda300dc3
URL: https://github.com/llvm/llvm-project/commit/8bc13c884727f0b9be876303d654dd1eda300dc3 DIFF: https://github.com/llvm/llvm-project/commit/8bc13c884727f0b9be876303d654dd1eda300dc3.diff LOG: [clang][dataflow] Add `AnalysisInputs::withSolverFactory()`. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D154833 Added: Modified: clang/unittests/Analysis/FlowSensitive/TestingSupport.h Removed: ################################################################################ diff --git a/clang/unittests/Analysis/FlowSensitive/TestingSupport.h b/clang/unittests/Analysis/FlowSensitive/TestingSupport.h index 93991d87d77f20..1568fc9a200e47 100644 --- a/clang/unittests/Analysis/FlowSensitive/TestingSupport.h +++ b/clang/unittests/Analysis/FlowSensitive/TestingSupport.h @@ -143,6 +143,12 @@ template <typename AnalysisT> struct AnalysisInputs { BuiltinOptions = std::move(Options); return std::move(*this); } + AnalysisInputs<AnalysisT> && + withSolverFactory(std::function<std::unique_ptr<Solver>()> Factory) && { + assert(Factory); + SolverFactory = std::move(Factory); + return std::move(*this); + } /// Required. Input code that is analyzed. llvm::StringRef Code; @@ -170,6 +176,10 @@ template <typename AnalysisT> struct AnalysisInputs { tooling::FileContentMappings ASTBuildVirtualMappedFiles = {}; /// Configuration options for the built-in model. DataflowAnalysisContext::Options BuiltinOptions; + /// SAT solver factory. + std::function<std::unique_ptr<Solver>()> SolverFactory = [] { + return std::make_unique<WatchedLiteralsSolver>(); + }; }; /// Returns assertions based on annotations that are present after statements in @@ -248,7 +258,7 @@ checkDataflow(AnalysisInputs<AnalysisT> AI, auto &CFCtx = *MaybeCFCtx; // Initialize states for running dataflow analysis. - DataflowAnalysisContext DACtx(std::make_unique<WatchedLiteralsSolver>(), + DataflowAnalysisContext DACtx(AI.SolverFactory(), {/*Opts=*/AI.BuiltinOptions}); Environment InitEnv(DACtx, *Target); auto Analysis = AI.MakeAnalysis(Context, InitEnv); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits