jansvoboda11 created this revision. jansvoboda11 added reviewers: Bigcheese, dexonsmith, arphaman. jansvoboda11 requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
This patch simplifies the dependency scanner API. Made possibly by D108979 <https://reviews.llvm.org/D108979>. Depends on D108979 <https://reviews.llvm.org/D108979>. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D108980 Files: clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp Index: clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp =================================================================== --- clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp +++ clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp @@ -306,18 +306,13 @@ } llvm::Error DependencyScanningWorker::computeDependencies( - const std::string &Input, StringRef WorkingDirectory, - const CompilationDatabase &CDB, DependencyConsumer &Consumer) { + StringRef WorkingDirectory, const std::vector<std::string> &CommandLine, + DependencyConsumer &Consumer) { RealFS->setCurrentWorkingDirectory(WorkingDirectory); llvm::IntrusiveRefCntPtr<FileManager> CurrentFiles = Files ? Files : new FileManager(FileSystemOptions(), RealFS); - // FIXME: Avoid this copy. - std::vector<CompileCommand> CompileCommands = CDB.getCompileCommands(Input); - const std::vector<std::string> &CommandLine = - CompileCommands.front().CommandLine; - return runWithDiags(DiagOpts.get(), [&](DiagnosticConsumer &DC) { DependencyScanningAction Action(WorkingDirectory, Consumer, DepFS, PPSkipMappings.get(), Format); Index: clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp =================================================================== --- clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp +++ clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp @@ -109,10 +109,12 @@ // behavior. assert(Compilations.getAllCompileCommands().size() == 1 && "Expected a compilation database with a single command!"); - std::string Input = Compilations.getAllCompileCommands().front().Filename; + // FIXME: Avoid this copy. + std::vector<std::string> CommandLine = + Compilations.getAllCompileCommands().front().CommandLine; MakeDependencyPrinterConsumer Consumer; - auto Result = Worker.computeDependencies(Input, CWD, Compilations, Consumer); + auto Result = Worker.computeDependencies(CWD, CommandLine, Consumer); if (Result) return std::move(Result); std::string Output; @@ -193,11 +195,12 @@ // behavior. assert(Compilations.getAllCompileCommands().size() == 1 && "Expected a compilation database with a single command!"); - std::string Input = Compilations.getAllCompileCommands().front().Filename; + // FIXME: Avoid this copy. + std::vector<std::string> CommandLine = + Compilations.getAllCompileCommands().front().CommandLine; FullDependencyPrinterConsumer Consumer(AlreadySeen); - llvm::Error Result = - Worker.computeDependencies(Input, CWD, Compilations, Consumer); + llvm::Error Result = Worker.computeDependencies(CWD, CommandLine, Consumer); if (Result) return std::move(Result); return Consumer.getFullDependencies(); Index: clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h =================================================================== --- clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h +++ clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h @@ -80,9 +80,8 @@ /// /// \returns A \c StringError with the diagnostic output if clang errors /// occurred, success otherwise. - llvm::Error computeDependencies(const std::string &Input, - StringRef WorkingDirectory, - const CompilationDatabase &CDB, + llvm::Error computeDependencies(StringRef WorkingDirectory, + const std::vector<std::string> &CommandLine, DependencyConsumer &Consumer); private:
Index: clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp =================================================================== --- clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp +++ clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp @@ -306,18 +306,13 @@ } llvm::Error DependencyScanningWorker::computeDependencies( - const std::string &Input, StringRef WorkingDirectory, - const CompilationDatabase &CDB, DependencyConsumer &Consumer) { + StringRef WorkingDirectory, const std::vector<std::string> &CommandLine, + DependencyConsumer &Consumer) { RealFS->setCurrentWorkingDirectory(WorkingDirectory); llvm::IntrusiveRefCntPtr<FileManager> CurrentFiles = Files ? Files : new FileManager(FileSystemOptions(), RealFS); - // FIXME: Avoid this copy. - std::vector<CompileCommand> CompileCommands = CDB.getCompileCommands(Input); - const std::vector<std::string> &CommandLine = - CompileCommands.front().CommandLine; - return runWithDiags(DiagOpts.get(), [&](DiagnosticConsumer &DC) { DependencyScanningAction Action(WorkingDirectory, Consumer, DepFS, PPSkipMappings.get(), Format); Index: clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp =================================================================== --- clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp +++ clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp @@ -109,10 +109,12 @@ // behavior. assert(Compilations.getAllCompileCommands().size() == 1 && "Expected a compilation database with a single command!"); - std::string Input = Compilations.getAllCompileCommands().front().Filename; + // FIXME: Avoid this copy. + std::vector<std::string> CommandLine = + Compilations.getAllCompileCommands().front().CommandLine; MakeDependencyPrinterConsumer Consumer; - auto Result = Worker.computeDependencies(Input, CWD, Compilations, Consumer); + auto Result = Worker.computeDependencies(CWD, CommandLine, Consumer); if (Result) return std::move(Result); std::string Output; @@ -193,11 +195,12 @@ // behavior. assert(Compilations.getAllCompileCommands().size() == 1 && "Expected a compilation database with a single command!"); - std::string Input = Compilations.getAllCompileCommands().front().Filename; + // FIXME: Avoid this copy. + std::vector<std::string> CommandLine = + Compilations.getAllCompileCommands().front().CommandLine; FullDependencyPrinterConsumer Consumer(AlreadySeen); - llvm::Error Result = - Worker.computeDependencies(Input, CWD, Compilations, Consumer); + llvm::Error Result = Worker.computeDependencies(CWD, CommandLine, Consumer); if (Result) return std::move(Result); return Consumer.getFullDependencies(); Index: clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h =================================================================== --- clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h +++ clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h @@ -80,9 +80,8 @@ /// /// \returns A \c StringError with the diagnostic output if clang errors /// occurred, success otherwise. - llvm::Error computeDependencies(const std::string &Input, - StringRef WorkingDirectory, - const CompilationDatabase &CDB, + llvm::Error computeDependencies(StringRef WorkingDirectory, + const std::vector<std::string> &CommandLine, DependencyConsumer &Consumer); private:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits