[clang] 0ebf619 - [clang][deps] NFC: Remove CompilationDatabase from DependencyScanningTool API
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 10 03:32:07 PDT 2021
Author: Jan Svoboda
Date: 2021-09-10T12:31:27+02:00
New Revision: 0ebf61963bb6cb95b4036061dbe476523f622987
URL: https://github.com/llvm/llvm-project/commit/0ebf61963bb6cb95b4036061dbe476523f622987
DIFF: https://github.com/llvm/llvm-project/commit/0ebf61963bb6cb95b4036061dbe476523f622987.diff
LOG: [clang][deps] NFC: Remove CompilationDatabase from DependencyScanningTool API
This patch simplifies the dependency scanner API. Depends on D108980.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D108981
Added:
Modified:
clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h
clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h
clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
clang/tools/clang-scan-deps/ClangScanDeps.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h
index c26b6e91d90ce..9e2ff82f56144 100644
--- a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h
+++ b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h
@@ -83,8 +83,8 @@ class DependencyScanningTool {
/// \returns A \c StringError with the diagnostic output if clang errors
/// occurred, dependency file contents otherwise.
llvm::Expected<std::string>
- getDependencyFile(const tooling::CompilationDatabase &Compilations,
- StringRef CWD, llvm::Optional<StringRef> ModuleName = None);
+ getDependencyFile(const std::vector<std::string> &CommandLine, StringRef CWD,
+ llvm::Optional<StringRef> ModuleName = None);
/// Collect the full module dependency graph for the input, ignoring any
/// modules which have already been seen. If \p ModuleName isn't empty, this
@@ -99,7 +99,7 @@ class DependencyScanningTool {
/// \returns a \c StringError with the diagnostic output if clang errors
/// occurred, \c FullDependencies otherwise.
llvm::Expected<FullDependenciesResult>
- getFullDependencies(const tooling::CompilationDatabase &Compilations,
+ getFullDependencies(const std::vector<std::string> &CommandLine,
StringRef CWD, const llvm::StringSet<> &AlreadySeen,
llvm::Optional<StringRef> ModuleName = None);
diff --git a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h
index 58f2f72da9717..88029e7f76ada 100644
--- a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h
+++ b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningWorker.h
@@ -14,7 +14,6 @@
#include "clang/Basic/LLVM.h"
#include "clang/Frontend/PCHContainerOperations.h"
#include "clang/Lex/PreprocessorExcludedConditionalDirectiveSkipMapping.h"
-#include "clang/Tooling/CompilationDatabase.h"
#include "clang/Tooling/DependencyScanning/DependencyScanningService.h"
#include "clang/Tooling/DependencyScanning/ModuleDepCollector.h"
#include "llvm/Support/Error.h"
@@ -30,24 +29,6 @@ namespace dependencies {
class DependencyScanningWorkerFilesystem;
-/// Compilation database that holds and reports a single compile command.
-class SingleCommandCompilationDatabase : public CompilationDatabase {
- CompileCommand Command;
-
-public:
- SingleCommandCompilationDatabase(CompileCommand Cmd)
- : Command(std::move(Cmd)) {}
-
- std::vector<CompileCommand>
- getCompileCommands(StringRef FilePath) const override {
- return {Command};
- }
-
- std::vector<CompileCommand> getAllCompileCommands() const override {
- return {Command};
- }
-};
-
class DependencyConsumer {
public:
virtual ~DependencyConsumer() {}
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
index b083d09c8bff3..391e68bb089f9 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
@@ -50,7 +50,7 @@ DependencyScanningTool::DependencyScanningTool(
: Worker(Service) {}
llvm::Expected<std::string> DependencyScanningTool::getDependencyFile(
- const tooling::CompilationDatabase &Compilations, StringRef CWD,
+ const std::vector<std::string> &CommandLine, StringRef CWD,
llvm::Optional<StringRef> ModuleName) {
/// Prints out all of the gathered dependencies into a string.
class MakeDependencyPrinterConsumer : public DependencyConsumer {
@@ -103,17 +103,6 @@ llvm::Expected<std::string> DependencyScanningTool::getDependencyFile(
std::vector<std::string> Dependencies;
};
- // We expect a single command here because if a source file occurs multiple
- // times in the original CDB, then `computeDependencies` would run the
- // `DependencyScanningAction` once for every time the input occured in the
- // CDB. Instead we split up the CDB into single command chunks to avoid this
- // behavior.
- assert(Compilations.getAllCompileCommands().size() == 1 &&
- "Expected a compilation database with a single command!");
- // FIXME: Avoid this copy.
- std::vector<std::string> CommandLine =
- Compilations.getAllCompileCommands().front().CommandLine;
-
MakeDependencyPrinterConsumer Consumer;
auto Result =
Worker.computeDependencies(CWD, CommandLine, Consumer, ModuleName);
@@ -126,7 +115,7 @@ llvm::Expected<std::string> DependencyScanningTool::getDependencyFile(
llvm::Expected<FullDependenciesResult>
DependencyScanningTool::getFullDependencies(
- const tooling::CompilationDatabase &Compilations, StringRef CWD,
+ const std::vector<std::string> &CommandLine, StringRef CWD,
const llvm::StringSet<> &AlreadySeen,
llvm::Optional<StringRef> ModuleName) {
class FullDependencyPrinterConsumer : public DependencyConsumer {
@@ -191,17 +180,6 @@ DependencyScanningTool::getFullDependencies(
const llvm::StringSet<> &AlreadySeen;
};
- // We expect a single command here because if a source file occurs multiple
- // times in the original CDB, then `computeDependencies` would run the
- // `DependencyScanningAction` once for every time the input occured in the
- // CDB. Instead we split up the CDB into single command chunks to avoid this
- // behavior.
- assert(Compilations.getAllCompileCommands().size() == 1 &&
- "Expected a compilation database with a single command!");
- // FIXME: Avoid this copy.
- std::vector<std::string> CommandLine =
- Compilations.getAllCompileCommands().front().CommandLine;
-
FullDependencyPrinterConsumer Consumer(AlreadySeen);
llvm::Error Result =
Worker.computeDependencies(CWD, CommandLine, Consumer, ModuleName);
diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp
index d3630c94b5bf2..8f8906d89a663 100644
--- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp
+++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp
@@ -513,10 +513,8 @@ int main(int argc, const char **argv) {
for (unsigned I = 0; I < Pool.getThreadCount(); ++I)
WorkerTools.push_back(std::make_unique<DependencyScanningTool>(Service));
- std::vector<SingleCommandCompilationDatabase> Inputs;
- for (tooling::CompileCommand Cmd :
- AdjustingCompilations->getAllCompileCommands())
- Inputs.emplace_back(Cmd);
+ std::vector<tooling::CompileCommand> Inputs =
+ AdjustingCompilations->getAllCompileCommands();
std::atomic<bool> HadErrors(false);
FullDeps FD;
@@ -532,7 +530,7 @@ int main(int argc, const char **argv) {
&DependencyOS, &Errs]() {
llvm::StringSet<> AlreadySeenModules;
while (true) {
- const SingleCommandCompilationDatabase *Input;
+ const tooling::CompileCommand *Input;
std::string Filename;
std::string CWD;
size_t LocalIndex;
@@ -543,14 +541,13 @@ int main(int argc, const char **argv) {
return;
LocalIndex = Index;
Input = &Inputs[Index++];
- tooling::CompileCommand Cmd = Input->getAllCompileCommands()[0];
- Filename = std::move(Cmd.Filename);
- CWD = std::move(Cmd.Directory);
+ Filename = std::move(Input->Filename);
+ CWD = std::move(Input->Directory);
}
// Run the tool on it.
if (Format == ScanningOutputFormat::Make) {
auto MaybeFile = WorkerTools[I]->getDependencyFile(
- *Input, CWD,
+ Input->CommandLine, CWD,
ModuleName.empty()
? None
: llvm::Optional<StringRef>(ModuleName.c_str()));
@@ -559,7 +556,7 @@ int main(int argc, const char **argv) {
HadErrors = true;
} else {
auto MaybeFullDeps = WorkerTools[I]->getFullDependencies(
- *Input, CWD, AlreadySeenModules,
+ Input->CommandLine, CWD, AlreadySeenModules,
ModuleName.empty()
? None
: llvm::Optional<StringRef>(ModuleName.c_str()));
More information about the cfe-commits
mailing list