From 4eeebc464e1f968d9968a4786c82558f18ac2ed8 Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Thu, 16 Dec 2010 03:28:14 +0000 Subject: [PATCH] MemoryBuffer API update. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121956 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/FileManager.cpp | 37 +++++++++++++++---------------- lib/Driver/ToolChains.cpp | 28 +++++++++-------------- lib/Frontend/CompilerInstance.cpp | 7 +++--- lib/Lex/PTHLexer.cpp | 6 ++--- lib/Serialization/ASTReader.cpp | 2 +- tools/driver/cc1as_main.cpp | 6 ++--- tools/driver/driver.cpp | 6 ++--- 7 files changed, 39 insertions(+), 53 deletions(-) diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 22a63decb9..488d4c3b8d 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -401,55 +401,54 @@ void FileManager::FixupRelativePath(llvm::sys::Path &path, llvm::MemoryBuffer *FileManager:: getBufferForFile(const FileEntry *Entry, std::string *ErrorStr) { + llvm::OwningPtr Result; llvm::error_code ec; if (FileSystemOpts.WorkingDir.empty()) { const char *Filename = Entry->getName(); // If the file is already open, use the open file descriptor. if (Entry->FD != -1) { - llvm::MemoryBuffer *Buf = - llvm::MemoryBuffer::getOpenFile(Entry->FD, Filename, ec, - Entry->getSize()); - if (Buf == 0 && ErrorStr) + ec = llvm::MemoryBuffer::getOpenFile(Entry->FD, Filename, Result, + Entry->getSize()); + if (ErrorStr) *ErrorStr = ec.message(); // getOpenFile will have closed the file descriptor, don't reuse or // reclose it. Entry->FD = -1; - return Buf; + return Result.take(); } // Otherwise, open the file. - llvm::MemoryBuffer *res = - llvm::MemoryBuffer::getFile(Filename, ec, Entry->getSize()); - if (res == 0 && ErrorStr) + ec = llvm::MemoryBuffer::getFile(Filename, Result, Entry->getSize()); + if (ec && ErrorStr) *ErrorStr = ec.message(); - return res; + return Result.take(); } llvm::sys::Path FilePath(Entry->getName()); FixupRelativePath(FilePath, FileSystemOpts); - llvm::MemoryBuffer *res = - llvm::MemoryBuffer::getFile(FilePath.c_str(), ec, Entry->getSize()); - if (res == 0 && ErrorStr) + ec = llvm::MemoryBuffer::getFile(FilePath.c_str(), Result, Entry->getSize()); + if (ec && ErrorStr) *ErrorStr = ec.message(); - return res; + return Result.take(); } llvm::MemoryBuffer *FileManager:: getBufferForFile(llvm::StringRef Filename, std::string *ErrorStr) { + llvm::OwningPtr Result; llvm::error_code ec; if (FileSystemOpts.WorkingDir.empty()) { - llvm::MemoryBuffer *res = llvm::MemoryBuffer::getFile(Filename, ec); - if (res == 0 && ErrorStr) + ec = llvm::MemoryBuffer::getFile(Filename, Result); + if (ec && ErrorStr) *ErrorStr = ec.message(); - return res; + return Result.take(); } llvm::sys::Path FilePath(Filename); FixupRelativePath(FilePath, FileSystemOpts); - llvm::MemoryBuffer *res = llvm::MemoryBuffer::getFile(FilePath.c_str(), ec); - if (res == 0 && ErrorStr) + ec = llvm::MemoryBuffer::getFile(FilePath.c_str(), Result); + if (ec && ErrorStr) *ErrorStr = ec.message(); - return res; + return Result.take(); } /// getStatValue - Get the 'stat' information for the specified path, using the diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 9af6263319..e292c8fbba 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1244,11 +1244,9 @@ static bool HasMultilib(llvm::Triple::ArchType Arch, enum LinuxDistro Distro) { } static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) { - llvm::error_code ec; - llvm::OwningPtr - LsbRelease(llvm::MemoryBuffer::getFile("/etc/lsb-release", ec)); - if (LsbRelease) { - llvm::StringRef Data = LsbRelease.get()->getBuffer(); + llvm::OwningPtr File; + if (!llvm::MemoryBuffer::getFile("/etc/lsb-release", File)) { + llvm::StringRef Data = File.get()->getBuffer(); llvm::SmallVector Lines; Data.split(Lines, "\n"); for (unsigned int i = 0, s = Lines.size(); i < s; ++ i) { @@ -1257,17 +1255,15 @@ static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) { else if (Lines[i] == "DISTRIB_CODENAME=lucid") return UbuntuLucid; else if (Lines[i] == "DISTRIB_CODENAME=jaunty") - return UbuntuJaunty; + return UbuntuJaunty; else if (Lines[i] == "DISTRIB_CODENAME=karmic") return UbuntuKarmic; } return UnknownDistro; } - llvm::OwningPtr - RHRelease(llvm::MemoryBuffer::getFile("/etc/redhat-release", ec)); - if (RHRelease) { - llvm::StringRef Data = RHRelease.get()->getBuffer(); + if (!llvm::MemoryBuffer::getFile("/etc/redhat-release", File)) { + llvm::StringRef Data = File.get()->getBuffer(); if (Data.startswith("Fedora release 14 (Laughlin)")) return Fedora14; else if (Data.startswith("Fedora release 13 (Goddard)")) @@ -1275,10 +1271,8 @@ static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) { return UnknownDistro; } - llvm::OwningPtr - DebianVersion(llvm::MemoryBuffer::getFile("/etc/debian_version", ec)); - if (DebianVersion) { - llvm::StringRef Data = DebianVersion.get()->getBuffer(); + if (!llvm::MemoryBuffer::getFile("/etc/debian_version", File)) { + llvm::StringRef Data = File.get()->getBuffer(); if (Data[0] == '5') return DebianLenny; else if (Data.startswith("squeeze/sid")) @@ -1286,10 +1280,8 @@ static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) { return UnknownDistro; } - llvm::OwningPtr - SuseRelease(llvm::MemoryBuffer::getFile("/etc/SuSE-release", ec)); - if (SuseRelease) { - llvm::StringRef Data = SuseRelease.get()->getBuffer(); + if (!llvm::MemoryBuffer::getFile("/etc/SuSE-release", File)) { + llvm::StringRef Data = File.get()->getBuffer(); if (Data.startswith("openSUSE 11.3")) return OpenSuse11_3; return UnknownDistro; diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index d1e1e69184..d97e8c7727 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/lib/Frontend/CompilerInstance.cpp @@ -487,9 +487,8 @@ bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile, } SourceMgr.createMainFileID(File); } else { - llvm::error_code ec; - llvm::MemoryBuffer *SB = llvm::MemoryBuffer::getSTDIN(ec); - if (!SB) { + llvm::OwningPtr SB; + if (llvm::MemoryBuffer::getSTDIN(SB)) { // FIXME: Give ec.message() in this diag. Diags.Report(diag::err_fe_error_reading_stdin); return false; @@ -497,7 +496,7 @@ bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile, const FileEntry *File = FileMgr.getVirtualFile(SB->getBufferIdentifier(), SB->getBufferSize(), 0); SourceMgr.createMainFileID(File); - SourceMgr.overrideFileContents(File, SB); + SourceMgr.overrideFileContents(File, SB.take()); } assert(!SourceMgr.getMainFileID().isInvalid() && diff --git a/lib/Lex/PTHLexer.cpp b/lib/Lex/PTHLexer.cpp index aeec3fcc25..975753bc23 100644 --- a/lib/Lex/PTHLexer.cpp +++ b/lib/Lex/PTHLexer.cpp @@ -437,11 +437,9 @@ static void InvalidPTH(Diagnostic &Diags, const char *Msg) { PTHManager *PTHManager::Create(const std::string &file, Diagnostic &Diags) { // Memory map the PTH file. - llvm::error_code ec; - llvm::OwningPtr File( - llvm::MemoryBuffer::getFile(file, ec)); + llvm::OwningPtr File; - if (!File) { + if (llvm::MemoryBuffer::getFile(file, File)) { // FIXME: Add ec.message() to this diag. Diags.Report(diag::err_invalid_pth_file) << file; return 0; diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index bbabf80486..a4ba496774 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -2278,7 +2278,7 @@ ASTReader::ASTReadResult ASTReader::ReadASTCore(llvm::StringRef FileName, std::string ErrStr; llvm::error_code ec; if (FileName == "-") { - F.Buffer.reset(llvm::MemoryBuffer::getSTDIN(ec)); + ec = llvm::MemoryBuffer::getSTDIN(F.Buffer); if (ec) ErrStr = ec.message(); } else diff --git a/tools/driver/cc1as_main.cpp b/tools/driver/cc1as_main.cpp index ec2332c922..2eb9ff96f1 100644 --- a/tools/driver/cc1as_main.cpp +++ b/tools/driver/cc1as_main.cpp @@ -228,13 +228,13 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, Diagnostic &Diags) { return false; } - error_code ec; - MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(Opts.InputFile, ec); - if (Buffer == 0) { + OwningPtr BufferPtr; + if (error_code ec = MemoryBuffer::getFileOrSTDIN(Opts.InputFile, BufferPtr)) { Error = ec.message(); Diags.Report(diag::err_fe_error_reading) << Opts.InputFile; return false; } + MemoryBuffer *Buffer = BufferPtr.take(); SourceMgr SrcMgr; diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp index 1e0aaf6258..d210a4018a 100644 --- a/tools/driver/driver.cpp +++ b/tools/driver/driver.cpp @@ -182,9 +182,8 @@ static void ExpandArgsFromBuf(const char *Arg, llvm::SmallVectorImpl &ArgVector, std::set &SavedStrings) { const char *FName = Arg + 1; - llvm::error_code ec; - llvm::MemoryBuffer *MemBuf = llvm::MemoryBuffer::getFile(FName, ec); - if (!MemBuf) { + llvm::OwningPtr MemBuf; + if (llvm::MemoryBuffer::getFile(FName, MemBuf)) { ArgVector.push_back(SaveStringInSet(SavedStrings, Arg)); return; } @@ -235,7 +234,6 @@ static void ExpandArgsFromBuf(const char *Arg, } CurArg.push_back(*P); } - delete MemBuf; } static void ExpandArgv(int argc, const char **argv, -- 2.40.0