diff options
author | Kadir Cetinkaya <kadircet@google.com> | 2019-12-04 16:34:56 +0100 |
---|---|---|
committer | Kadir Cetinkaya <kadircet@google.com> | 2019-12-04 17:00:47 +0100 |
commit | b3b37783034cab31db2d60cf79d0c1c82a8c3419 (patch) | |
tree | aa417cc85d204bf425e1f94019244c88fae87455 /clang | |
parent | 2120612e46bc9c1b0826618229154b76cdf41309 (diff) | |
download | llvm-b3b37783034cab31db2d60cf79d0c1c82a8c3419.zip llvm-b3b37783034cab31db2d60cf79d0c1c82a8c3419.tar.gz llvm-b3b37783034cab31db2d60cf79d0c1c82a8c3419.tar.bz2 |
Reapply "[llvm][Support] Take in CurrentDirectory as a parameter in ExpandResponseFiles"
Attemps to fix windows buildbots.
Diffstat (limited to 'clang')
-rw-r--r-- | clang/include/clang/Tooling/CompilationDatabase.h | 1 | ||||
-rw-r--r-- | clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Tooling/JSONCompilationDatabase.cpp | 4 |
3 files changed, 5 insertions, 10 deletions
diff --git a/clang/include/clang/Tooling/CompilationDatabase.h b/clang/include/clang/Tooling/CompilationDatabase.h index 6f794e51..b28a8a6 100644 --- a/clang/include/clang/Tooling/CompilationDatabase.h +++ b/clang/include/clang/Tooling/CompilationDatabase.h @@ -222,7 +222,6 @@ inferTargetAndDriverMode(std::unique_ptr<CompilationDatabase> Base); /// Returns a wrapped CompilationDatabase that will expand all rsp(response) /// files on commandline returned by underlying database. -/// Note: This may change the working directory of FS. std::unique_ptr<CompilationDatabase> expandResponseFiles(std::unique_ptr<CompilationDatabase> Base, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS); diff --git a/clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp b/clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp index bb51927..84936ba 100644 --- a/clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp +++ b/clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "clang/Tooling/CompilationDatabase.h" +#include "llvm/ADT/StringRef.h" #include "llvm/ADT/Triple.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ConvertUTF.h" @@ -47,12 +48,6 @@ public: private: std::vector<CompileCommand> expand(std::vector<CompileCommand> Cmds) const { for (auto &Cmd : Cmds) { - // FIXME: we should rather propagate the current directory into - // ExpandResponseFiles as well in addition to FS. - if (std::error_code EC = FS->setCurrentWorkingDirectory(Cmd.Directory)) { - llvm::consumeError(llvm::errorCodeToError(EC)); - continue; - } bool SeenRSPFile = false; llvm::SmallVector<const char *, 20> Argv; Argv.reserve(Cmd.CommandLine.size()); @@ -64,7 +59,8 @@ private: continue; llvm::BumpPtrAllocator Alloc; llvm::StringSaver Saver(Alloc); - llvm::cl::ExpandResponseFiles(Saver, Tokenizer, Argv, false, false, *FS); + llvm::cl::ExpandResponseFiles(Saver, Tokenizer, Argv, false, false, *FS, + llvm::StringRef(Cmd.Directory)); Cmd.CommandLine.assign(Argv.begin(), Argv.end()); } return Cmds; diff --git a/clang/lib/Tooling/JSONCompilationDatabase.cpp b/clang/lib/Tooling/JSONCompilationDatabase.cpp index 8dd4608..04dd4db 100644 --- a/clang/lib/Tooling/JSONCompilationDatabase.cpp +++ b/clang/lib/Tooling/JSONCompilationDatabase.cpp @@ -29,6 +29,7 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" #include "llvm/Support/StringSaver.h" +#include "llvm/Support/VirtualFileSystem.h" #include "llvm/Support/YAMLParser.h" #include "llvm/Support/raw_ostream.h" #include <cassert> @@ -169,8 +170,7 @@ class JSONCompilationDatabasePlugin : public CompilationDatabasePlugin { JSONDatabasePath, ErrorMessage, JSONCommandLineSyntax::AutoDetect); return Base ? inferTargetAndDriverMode( inferMissingCompileCommands(expandResponseFiles( - std::move(Base), - llvm::vfs::createPhysicalFileSystem().release()))) + std::move(Base), llvm::vfs::getRealFileSystem()))) : nullptr; } }; |