From 490fd36bd1c7ea10aa7f19d000cf27f58db99d1e Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 26 Aug 2014 19:54:40 +0000 Subject: [PATCH] Return a std::unique_ptr from getBufferForFile. NFC. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216476 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/FileManager.h | 11 +++++------ lib/Basic/FileManager.cpp | 20 ++++++++++---------- lib/Basic/SourceManager.cpp | 6 +++--- lib/CodeGen/CodeGenAction.cpp | 5 +++-- lib/Frontend/ASTUnit.cpp | 2 +- lib/Frontend/CompilerInstance.cpp | 4 ++-- lib/Frontend/FrontendActions.cpp | 5 ++--- lib/Serialization/ASTReader.cpp | 8 ++++---- lib/Serialization/GlobalModuleIndex.cpp | 5 +++-- lib/Serialization/ModuleManager.cpp | 6 +++--- tools/libclang/CXLoadedDiagnostic.cpp | 4 +--- 11 files changed, 37 insertions(+), 39 deletions(-) diff --git a/include/clang/Basic/FileManager.h b/include/clang/Basic/FileManager.h index a7069e65ed..dc9d329ab7 100644 --- a/include/clang/Basic/FileManager.h +++ b/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 + getBufferForFile(const FileEntry *Entry, std::string *ErrorStr = nullptr, + bool isVolatile = false, bool ShouldCloseOpenFile = true); + std::unique_ptr + getBufferForFile(StringRef Filename, std::string *ErrorStr = nullptr); /// \brief Get the 'stat' information for the given \p Path. /// diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 07297baf6d..c0522966e3 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -386,9 +386,9 @@ void FileManager::FixupRelativePath(SmallVectorImpl &path) const { path = NewPath; } -llvm::MemoryBuffer *FileManager:: -getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, - bool isVolatile, bool ShouldCloseOpenFile) { +std::unique_ptr +FileManager::getBufferForFile(const FileEntry *Entry, std::string *ErrorStr, + bool isVolatile, bool ShouldCloseOpenFile) { std::unique_ptr 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 +FileManager::getBufferForFile(StringRef Filename, std::string *ErrorStr) { std::unique_ptr 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/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 14de7607c3..ef52e824b1 100644 --- a/lib/Basic/SourceManager.cpp +++ b/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/lib/CodeGen/CodeGenAction.cpp b/lib/CodeGen/CodeGenAction.cpp index d3bfc077da..f2698f34bd 100644 --- a/lib/CodeGen/CodeGenAction.cpp +++ b/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 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 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/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 8101732f10..b5f1b4f93d 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/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/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 9537e85e63..fa0209887f 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/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 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/lib/Frontend/FrontendActions.cpp b/lib/Frontend/FrontendActions.cpp index 31e232139f..b6ec895a5b 100644 --- a/lib/Frontend/FrontendActions.cpp +++ b/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 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/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 601e711ae2..98ba9af74f 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/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 Buffer; - Buffer.reset(FileMgr.getBufferForFile(ASTFileName, &ErrStr)); + std::unique_ptr 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 Buffer; - Buffer.reset(FileMgr.getBufferForFile(Filename, &ErrStr)); + std::unique_ptr Buffer = + FileMgr.getBufferForFile(Filename, &ErrStr); if (!Buffer) { return true; } diff --git a/lib/Serialization/GlobalModuleIndex.cpp b/lib/Serialization/GlobalModuleIndex.cpp index 8a3d990b6f..f43fbaca14 100644 --- a/lib/Serialization/GlobalModuleIndex.cpp +++ b/lib/Serialization/GlobalModuleIndex.cpp @@ -493,9 +493,10 @@ namespace { bool GlobalModuleIndexBuilder::loadModuleFile(const FileEntry *File) { // Open the module file. - std::unique_ptr Buffer; + std::string ErrorStr; - Buffer.reset(FileMgr.getBufferForFile(File, &ErrorStr, /*isVolatile=*/true)); + std::unique_ptr Buffer = + FileMgr.getBufferForFile(File, &ErrorStr, /*isVolatile=*/true); if (!Buffer) { return true; } diff --git a/lib/Serialization/ModuleManager.cpp b/lib/Serialization/ModuleManager.cpp index 7bdc40a996..18fe035456 100644 --- a/lib/Serialization/ModuleManager.cpp +++ b/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/tools/libclang/CXLoadedDiagnostic.cpp b/tools/libclang/CXLoadedDiagnostic.cpp index ddf374903a..002b8c439e 100644 --- a/tools/libclang/CXLoadedDiagnostic.cpp +++ b/tools/libclang/CXLoadedDiagnostic.cpp @@ -260,9 +260,7 @@ CXDiagnosticSet DiagLoader::load(const char *file) { FileSystemOptions FO; FileManager FileMgr(FO); - std::unique_ptr Buffer; - Buffer.reset(FileMgr.getBufferForFile(file)); - + std::unique_ptr Buffer = FileMgr.getBufferForFile(file); if (!Buffer) { reportBad(CXLoadDiag_CannotLoad, ErrStr); return nullptr; -- 2.40.0