diff --git a/clang/unittests/Analysis/FlowSensitive/TestingSupport.h b/clang/unittests/Analysis/FlowSensitive/TestingSupport.h --- a/clang/unittests/Analysis/FlowSensitive/TestingSupport.h +++ b/clang/unittests/Analysis/FlowSensitive/TestingSupport.h @@ -143,6 +143,12 @@ BuiltinOptions = std::move(Options); return std::move(*this); } + AnalysisInputs && + withSolverFactory(std::function()> Factory) && { + assert(Factory); + SolverFactory = std::move(Factory); + return std::move(*this); + } /// Required. Input code that is analyzed. llvm::StringRef Code; @@ -170,6 +176,10 @@ tooling::FileContentMappings ASTBuildVirtualMappedFiles = {}; /// Configuration options for the built-in model. DataflowAnalysisContext::Options BuiltinOptions; + /// SAT solver factory. + std::function()> SolverFactory = [] { + return std::make_unique(); + }; }; /// Returns assertions based on annotations that are present after statements in @@ -248,7 +258,7 @@ auto &CFCtx = *MaybeCFCtx; // Initialize states for running dataflow analysis. - DataflowAnalysisContext DACtx(std::make_unique(), + DataflowAnalysisContext DACtx(AI.SolverFactory(), {/*Opts=*/AI.BuiltinOptions}); Environment InitEnv(DACtx, *Target); auto Analysis = AI.MakeAnalysis(Context, InitEnv);