diff options
-rw-r--r-- | clang/include/clang/Basic/FileManager.h | 11 | ||||
-rw-r--r-- | clang/lib/Basic/FileManager.cpp | 20 | ||||
-rw-r--r-- | clang/lib/Basic/SourceManager.cpp | 6 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 5 | ||||
-rw-r--r-- | clang/lib/Frontend/ASTUnit.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Frontend/FrontendActions.cpp | 5 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Serialization/GlobalModuleIndex.cpp | 5 | ||||
-rw-r--r-- | clang/lib/Serialization/ModuleManager.cpp | 6 | ||||
-rw-r--r-- | clang/tools/libclang/CXLoadedDiagnostic.cpp | 4 |
11 files changed, 37 insertions, 39 deletions
diff --git a/clang/include/clang/Basic/FileManager.h b/clang/include/clang/Basic/FileManager.h index a7069e65edf..dc9d329ab7d 100644 --- a/clang/include/clang/Basic/FileManager.h +++ b/clang/include/clang/Basic/FileManager.h @@ -241,12 +241,11 @@ public: /// \brief Open the specified file as a MemoryBuffer, returning a new /// MemoryBuffer if successful, otherwise returning null. - llvm::MemoryBuffer *getBufferForFile(const FileEntry *Entry, - std::string *ErrorStr = nullptr, - bool isVolatile = false, - bool ShouldCloseOpenFile = true); - llvm::MemoryBuffer *getBufferForFile(StringRef Filename, - std::string *ErrorStr = nullptr); + std::unique_ptr<llvm::MemoryBuffer> + getBufferForFile(const FileEntry *Entry, std::string *ErrorStr = nullptr, + bool isVolatile = false, bool ShouldCloseOpenFile = true); + std::unique_ptr<llvm::MemoryBuffer> + getBufferForFile(StringRef Filename, std::string *ErrorStr = nullptr); /// \brief Get the 'stat' information for the given \p Path. /// diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index 07297baf6d5..c0522966e38 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -386,9 +386,9 @@ void FileManager::FixupRelativePath(SmallVectorImpl<char> &path) const { path = NewPath; } -llvm::MemoryBuffer *FileManager:: -getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, - bool isVolatile, bool ShouldCloseOpenFile) { +std::unique_ptr<llvm::MemoryBuffer> +FileManager::getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, + bool isVolatile, bool ShouldCloseOpenFile) { std::unique_ptr<llvm::MemoryBuffer> Result; std::error_code ec; @@ -409,7 +409,7 @@ getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, // FileEntry is open or not. if (ShouldCloseOpenFile) Entry->closeFile(); - return Result.release(); + return Result; } // Otherwise, open the file. @@ -419,7 +419,7 @@ getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, /*RequiresNullTerminator=*/true, isVolatile); if (ec && ErrorStr) *ErrorStr = ec.message(); - return Result.release(); + return Result; } SmallString<128> FilePath(Entry->getName()); @@ -428,18 +428,18 @@ getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, /*RequiresNullTerminator=*/true, isVolatile); if (ec && ErrorStr) *ErrorStr = ec.message(); - return Result.release(); + return Result; } -llvm::MemoryBuffer *FileManager:: -getBufferForFile(StringRef Filename, std::string *ErrorStr) { +std::unique_ptr<llvm::MemoryBuffer> +FileManager::getBufferForFile(StringRef Filename, std::string *ErrorStr) { std::unique_ptr<llvm::MemoryBuffer> Result; std::error_code ec; if (FileSystemOpts.WorkingDir.empty()) { ec = FS->getBufferForFile(Filename, Result); if (ec && ErrorStr) *ErrorStr = ec.message(); - return Result.release(); + return Result; } SmallString<128> FilePath(Filename); @@ -447,7 +447,7 @@ getBufferForFile(StringRef Filename, std::string *ErrorStr) { ec = FS->getBufferForFile(FilePath.c_str(), Result); if (ec && ErrorStr) *ErrorStr = ec.message(); - return Result.release(); + return Result; } /// getStatValue - Get the 'stat' information for the specified path, diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index 14de7607c3b..ef52e824b14 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -96,9 +96,9 @@ llvm::MemoryBuffer *ContentCache::getBuffer(DiagnosticsEngine &Diag, std::string ErrorStr; bool isVolatile = SM.userFilesAreVolatile() && !IsSystemFile; - Buffer.setPointer(SM.getFileManager().getBufferForFile(ContentsEntry, - &ErrorStr, - isVolatile)); + Buffer.setPointer(SM.getFileManager() + .getBufferForFile(ContentsEntry, &ErrorStr, isVolatile) + .release()); // If we were unable to open the file, then we are in an inconsistent // situation where the content cache referenced a file which no longer diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index d3bfc077dad..f2698f34bda 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -624,7 +624,7 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) { if (!LinkModuleToUse && !LinkBCFile.empty()) { std::string ErrorStr; - llvm::MemoryBuffer *BCBuf = + std::unique_ptr<llvm::MemoryBuffer> BCBuf = CI.getFileManager().getBufferForFile(LinkBCFile, &ErrorStr); if (!BCBuf) { CI.getDiagnostics().Report(diag::err_cannot_open_file) @@ -633,12 +633,13 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) { } ErrorOr<llvm::Module *> ModuleOrErr = - getLazyBitcodeModule(BCBuf, *VMContext); + getLazyBitcodeModule(BCBuf.get(), *VMContext); if (std::error_code EC = ModuleOrErr.getError()) { CI.getDiagnostics().Report(diag::err_cannot_open_file) << LinkBCFile << EC.message(); return nullptr; } + BCBuf.release(); // Owned by the module now. LinkModuleToUse = ModuleOrErr.get(); } diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index 8101732f10c..b5f1b4f93d0 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -638,7 +638,7 @@ ASTDeserializationListener *ASTUnit::getDeserializationListener() { llvm::MemoryBuffer *ASTUnit::getBufferForFile(StringRef Filename, std::string *ErrorStr) { assert(FileMgr); - return FileMgr->getBufferForFile(Filename, ErrorStr); + return FileMgr->getBufferForFile(Filename, ErrorStr).release(); } /// \brief Configure the diagnostics object for use with ASTUnit. diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 9537e85e631..fa0209887ff 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -723,11 +723,11 @@ bool CompilerInstance::InitializeSourceManager(const FrontendInputFile &Input, // STDIN. if (File->isNamedPipe()) { std::string ErrorStr; - if (llvm::MemoryBuffer *MB = + if (std::unique_ptr<llvm::MemoryBuffer> MB = FileMgr.getBufferForFile(File, &ErrorStr, /*isVolatile=*/true)) { // Create a new virtual file that will have the correct size. File = FileMgr.getVirtualFile(InputFile, MB->getBufferSize(), 0); - SourceMgr.overrideFileContents(File, MB); + SourceMgr.overrideFileContents(File, MB.release()); } else { Diags.Report(diag::err_cannot_open_file) << InputFile << ErrorStr; return false; diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index 31e232139f0..b6ec895a5b2 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -681,14 +681,13 @@ void PrintPreambleAction::ExecuteAction() { // We can't do anything with these. return; } - + CompilerInstance &CI = getCompilerInstance(); - llvm::MemoryBuffer *Buffer + std::unique_ptr<llvm::MemoryBuffer> Buffer = CI.getFileManager().getBufferForFile(getCurrentFile()); if (Buffer) { unsigned Preamble = Lexer::ComputePreamble(Buffer->getBuffer(), CI.getLangOpts()).first; llvm::outs().write(Buffer->getBufferStart(), Preamble); - delete Buffer; } } diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 601e711ae2a..98ba9af74f1 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -4030,8 +4030,8 @@ std::string ASTReader::getOriginalSourceFile(const std::string &ASTFileName, DiagnosticsEngine &Diags) { // Open the AST file. std::string ErrStr; - std::unique_ptr<llvm::MemoryBuffer> Buffer; - Buffer.reset(FileMgr.getBufferForFile(ASTFileName, &ErrStr)); + std::unique_ptr<llvm::MemoryBuffer> Buffer = + FileMgr.getBufferForFile(ASTFileName, &ErrStr); if (!Buffer) { Diags.Report(diag::err_fe_unable_to_read_pch_file) << ASTFileName << ErrStr; return std::string(); @@ -4119,8 +4119,8 @@ bool ASTReader::readASTFileControlBlock(StringRef Filename, ASTReaderListener &Listener) { // Open the AST file. std::string ErrStr; - std::unique_ptr<llvm::MemoryBuffer> Buffer; - Buffer.reset(FileMgr.getBufferForFile(Filename, &ErrStr)); + std::unique_ptr<llvm::MemoryBuffer> Buffer = + FileMgr.getBufferForFile(Filename, &ErrStr); if (!Buffer) { return true; } diff --git a/clang/lib/Serialization/GlobalModuleIndex.cpp b/clang/lib/Serialization/GlobalModuleIndex.cpp index 8a3d990b6f2..f43fbaca140 100644 --- a/clang/lib/Serialization/GlobalModuleIndex.cpp +++ b/clang/lib/Serialization/GlobalModuleIndex.cpp @@ -493,9 +493,10 @@ namespace { bool GlobalModuleIndexBuilder::loadModuleFile(const FileEntry *File) { // Open the module file. - std::unique_ptr<llvm::MemoryBuffer> Buffer; + std::string ErrorStr; - Buffer.reset(FileMgr.getBufferForFile(File, &ErrorStr, /*isVolatile=*/true)); + std::unique_ptr<llvm::MemoryBuffer> Buffer = + FileMgr.getBufferForFile(File, &ErrorStr, /*isVolatile=*/true); if (!Buffer) { return true; } diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp index 7bdc40a9967..18fe035456d 100644 --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -118,9 +118,9 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type, // ModuleManager it must be the same underlying file. // FIXME: Because FileManager::getFile() doesn't guarantee that it will // give us an open file, this may not be 100% reliable. - New->Buffer.reset(FileMgr.getBufferForFile(New->File, &ErrorStr, - /*IsVolatile*/false, - /*ShouldClose*/false)); + New->Buffer = FileMgr.getBufferForFile(New->File, &ErrorStr, + /*IsVolatile*/ false, + /*ShouldClose*/ false); } if (!New->Buffer) diff --git a/clang/tools/libclang/CXLoadedDiagnostic.cpp b/clang/tools/libclang/CXLoadedDiagnostic.cpp index ddf374903a9..002b8c439eb 100644 --- a/clang/tools/libclang/CXLoadedDiagnostic.cpp +++ b/clang/tools/libclang/CXLoadedDiagnostic.cpp @@ -260,9 +260,7 @@ CXDiagnosticSet DiagLoader::load(const char *file) { FileSystemOptions FO; FileManager FileMgr(FO); - std::unique_ptr<llvm::MemoryBuffer> Buffer; - Buffer.reset(FileMgr.getBufferForFile(file)); - + std::unique_ptr<llvm::MemoryBuffer> Buffer = FileMgr.getBufferForFile(file); if (!Buffer) { reportBad(CXLoadDiag_CannotLoad, ErrStr); return nullptr; |