From: Rafael Espindola Date: Sun, 6 Jul 2014 17:43:24 +0000 (+0000) Subject: Update for llvm api change. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d2b420ab9452afe2b298418ceeb40096e72d935;p=platform%2Fupstream%2Fllvm.git Update for llvm api change. llvm-svn: 212408 --- diff --git a/clang/lib/ARCMigrate/FileRemapper.cpp b/clang/lib/ARCMigrate/FileRemapper.cpp index aa249f9..40e6060 100644 --- a/clang/lib/ARCMigrate/FileRemapper.cpp +++ b/clang/lib/ARCMigrate/FileRemapper.cpp @@ -65,12 +65,13 @@ bool FileRemapper::initFromFile(StringRef filePath, DiagnosticsEngine &Diag, std::vector > pairs; - std::unique_ptr fileBuf; - if (llvm::MemoryBuffer::getFile(infoFile.c_str(), fileBuf)) + llvm::ErrorOr> fileBuf = + llvm::MemoryBuffer::getFile(infoFile.c_str()); + if (!fileBuf) return report("Error opening file: " + infoFile, Diag); SmallVector lines; - fileBuf->getBuffer().split(lines, "\n"); + fileBuf.get()->getBuffer().split(lines, "\n"); for (unsigned idx = 0; idx+3 <= lines.size(); idx += 3) { StringRef fromFilename = lines[idx]; diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp index ccd9c9a..1a2055e 100644 --- a/clang/lib/ARCMigrate/ObjCMT.cpp +++ b/clang/lib/ARCMigrate/ObjCMT.cpp @@ -1943,12 +1943,13 @@ public: bool parse(StringRef File, SmallVectorImpl &Entries) { using namespace llvm::yaml; - std::unique_ptr FileBuf; - if (llvm::MemoryBuffer::getFile(File, FileBuf)) + llvm::ErrorOr> FileBufOrErr = + llvm::MemoryBuffer::getFile(File); + if (!FileBufOrErr) return true; llvm::SourceMgr SM; - Stream YAMLStream(FileBuf.release(), SM); + Stream YAMLStream(FileBufOrErr.get().release(), SM); document_iterator I = YAMLStream.begin(); if (I == YAMLStream.end()) return true; diff --git a/clang/lib/Basic/VirtualFileSystem.cpp b/clang/lib/Basic/VirtualFileSystem.cpp index 3d5e1ad..1f2a856 100644 --- a/clang/lib/Basic/VirtualFileSystem.cpp +++ b/clang/lib/Basic/VirtualFileSystem.cpp @@ -126,8 +126,13 @@ std::error_code RealFile::getBuffer(const Twine &Name, bool RequiresNullTerminator, bool IsVolatile) { assert(FD != -1 && "cannot get buffer for closed file"); - return MemoryBuffer::getOpenFile(FD, Name.str().c_str(), Result, FileSize, - RequiresNullTerminator, IsVolatile); + ErrorOr> BufferOrErr = + MemoryBuffer::getOpenFile(FD, Name.str().c_str(), FileSize, + RequiresNullTerminator, IsVolatile); + if (std::error_code EC = BufferOrErr.getError()) + return EC; + Result = std::move(BufferOrErr.get()); + return std::error_code(); } // FIXME: This is terrible, we need this for ::close. @@ -1202,4 +1207,4 @@ recursive_directory_iterator::increment(std::error_code &EC) { State.reset(); // end iterator return *this; -} \ No newline at end of file +} diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 1e47a62..99bde6c 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -2794,8 +2794,9 @@ static bool IsUbuntu(enum Distro Distro) { } static Distro DetectDistro(llvm::Triple::ArchType Arch) { - std::unique_ptr File; - if (!llvm::MemoryBuffer::getFile("/etc/lsb-release", File)) { + llvm::ErrorOr> File = + llvm::MemoryBuffer::getFile("/etc/lsb-release"); + if (File) { StringRef Data = File.get()->getBuffer(); SmallVector Lines; Data.split(Lines, "\n"); @@ -2820,7 +2821,8 @@ static Distro DetectDistro(llvm::Triple::ArchType Arch) { return Version; } - if (!llvm::MemoryBuffer::getFile("/etc/redhat-release", File)) { + File = llvm::MemoryBuffer::getFile("/etc/redhat-release"); + if (File) { StringRef Data = File.get()->getBuffer(); if (Data.startswith("Fedora release")) return Fedora; @@ -2836,7 +2838,8 @@ static Distro DetectDistro(llvm::Triple::ArchType Arch) { return UnknownDistro; } - if (!llvm::MemoryBuffer::getFile("/etc/debian_version", File)) { + File = llvm::MemoryBuffer::getFile("/etc/debian_version"); + if (File) { StringRef Data = File.get()->getBuffer(); if (Data[0] == '5') return DebianLenny; diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 5cbad82..2ac5c9d 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -2082,13 +2082,14 @@ FormatStyle getStyle(StringRef StyleName, StringRef FileName, } if (IsFile) { - std::unique_ptr Text; - if (std::error_code ec = - llvm::MemoryBuffer::getFile(ConfigFile.c_str(), Text)) { - llvm::errs() << ec.message() << "\n"; + llvm::ErrorOr> Text = + llvm::MemoryBuffer::getFile(ConfigFile.c_str()); + if (std::error_code EC = Text.getError()) { + llvm::errs() << EC.message() << "\n"; break; } - if (std::error_code ec = parseConfiguration(Text->getBuffer(), &Style)) { + if (std::error_code ec = + parseConfiguration(Text.get()->getBuffer(), &Style)) { if (ec == ParseError::Unsuitable) { if (!UnsuitableConfigFiles.empty()) UnsuitableConfigFiles.append(", "); diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 93799c8..49918f4 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -683,11 +683,14 @@ bool CompilerInstance::InitializeSourceManager(const FrontendInputFile &Input, SourceMgr.setMainFileID( SourceMgr.createFileID(File, SourceLocation(), Kind)); } else { - std::unique_ptr SB; - if (std::error_code ec = llvm::MemoryBuffer::getSTDIN(SB)) { - Diags.Report(diag::err_fe_error_reading_stdin) << ec.message(); + llvm::ErrorOr> SBOrErr = + llvm::MemoryBuffer::getSTDIN(); + if (std::error_code EC = SBOrErr.getError()) { + Diags.Report(diag::err_fe_error_reading_stdin) << EC.message(); return false; } + std::unique_ptr SB = std::move(SBOrErr.get()); + const FileEntry *File = FileMgr.getVirtualFile(SB->getBufferIdentifier(), SB->getBufferSize(), 0); SourceMgr.setMainFileID( diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index d04d829..3d79ac7 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1957,14 +1957,16 @@ std::string CompilerInvocation::getModuleHash() const { // $sysroot/System/Library/CoreServices/SystemVersion.plist // as part of the module hash. if (!hsOpts.Sysroot.empty()) { - std::unique_ptr buffer; SmallString<128> systemVersionFile; systemVersionFile += hsOpts.Sysroot; llvm::sys::path::append(systemVersionFile, "System"); llvm::sys::path::append(systemVersionFile, "Library"); llvm::sys::path::append(systemVersionFile, "CoreServices"); llvm::sys::path::append(systemVersionFile, "SystemVersion.plist"); - if (!llvm::MemoryBuffer::getFile(systemVersionFile.str(), buffer)) { + + llvm::ErrorOr> buffer = + llvm::MemoryBuffer::getFile(systemVersionFile.str()); + if (buffer) { code = hash_combine(code, buffer.get()->getBuffer()); struct stat statBuf; @@ -2031,14 +2033,15 @@ createVFSFromCompilerInvocation(const CompilerInvocation &CI, Overlay(new vfs::OverlayFileSystem(vfs::getRealFileSystem())); // earlier vfs files are on the bottom for (const std::string &File : CI.getHeaderSearchOpts().VFSOverlayFiles) { - std::unique_ptr Buffer; - if (llvm::MemoryBuffer::getFile(File, Buffer)) { + llvm::ErrorOr> Buffer = + llvm::MemoryBuffer::getFile(File); + if (!Buffer) { Diags.Report(diag::err_missing_vfs_overlay_file) << File; return IntrusiveRefCntPtr(); } IntrusiveRefCntPtr FS = - vfs::getVFSFromYAML(Buffer.release(), /*DiagHandler*/nullptr); + vfs::getVFSFromYAML(Buffer->release(), /*DiagHandler*/ nullptr); if (!FS.get()) { Diags.Report(diag::err_invalid_vfs_overlay) << File; return IntrusiveRefCntPtr(); diff --git a/clang/lib/Lex/PTHLexer.cpp b/clang/lib/Lex/PTHLexer.cpp index 844d66a..d985aba 100644 --- a/clang/lib/Lex/PTHLexer.cpp +++ b/clang/lib/Lex/PTHLexer.cpp @@ -440,13 +440,15 @@ static void InvalidPTH(DiagnosticsEngine &Diags, const char *Msg) { PTHManager *PTHManager::Create(const std::string &file, DiagnosticsEngine &Diags) { // Memory map the PTH file. - std::unique_ptr File; + llvm::ErrorOr> FileOrErr = + llvm::MemoryBuffer::getFile(file); - if (llvm::MemoryBuffer::getFile(file, File)) { + if (!FileOrErr) { // FIXME: Add ec.message() to this diag. Diags.Report(diag::err_invalid_pth_file) << file; return nullptr; } + std::unique_ptr File = std::move(FileOrErr.get()); using namespace llvm::support; diff --git a/clang/lib/Serialization/GlobalModuleIndex.cpp b/clang/lib/Serialization/GlobalModuleIndex.cpp index a1bec89..9858122 100644 --- a/clang/lib/Serialization/GlobalModuleIndex.cpp +++ b/clang/lib/Serialization/GlobalModuleIndex.cpp @@ -239,9 +239,11 @@ GlobalModuleIndex::readIndex(StringRef Path) { IndexPath += Path; llvm::sys::path::append(IndexPath, IndexFileName); - std::unique_ptr Buffer; - if (llvm::MemoryBuffer::getFile(IndexPath.c_str(), Buffer)) + llvm::ErrorOr> BufferOrErr = + llvm::MemoryBuffer::getFile(IndexPath.c_str()); + if (!BufferOrErr) return std::make_pair(nullptr, EC_NotFound); + std::unique_ptr Buffer = std::move(BufferOrErr.get()); /// \brief The bitstream reader from which we'll read the AST file. llvm::BitstreamReader Reader((const unsigned char *)Buffer->getBufferStart(), diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp index 0a9ea69..2c10c11 100644 --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -106,9 +106,13 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type, // Open the AST file. std::error_code ec; if (FileName == "-") { - ec = llvm::MemoryBuffer::getSTDIN(New->Buffer); + llvm::ErrorOr> Buf = + llvm::MemoryBuffer::getSTDIN(); + ec = Buf.getError(); if (ec) ErrorStr = ec.message(); + else + New->Buffer = std::move(Buf.get()); } else { // Leave the FileEntry open so if it gets read again by another // ModuleManager it must be the same underlying file. diff --git a/clang/lib/Tooling/JSONCompilationDatabase.cpp b/clang/lib/Tooling/JSONCompilationDatabase.cpp index 94fdb5f..8b8bd29 100644 --- a/clang/lib/Tooling/JSONCompilationDatabase.cpp +++ b/clang/lib/Tooling/JSONCompilationDatabase.cpp @@ -144,15 +144,14 @@ volatile int JSONAnchorSource = 0; JSONCompilationDatabase * JSONCompilationDatabase::loadFromFile(StringRef FilePath, std::string &ErrorMessage) { - std::unique_ptr DatabaseBuffer; - std::error_code Result = - llvm::MemoryBuffer::getFile(FilePath, DatabaseBuffer); - if (Result) { + llvm::ErrorOr> DatabaseBuffer = + llvm::MemoryBuffer::getFile(FilePath); + if (std::error_code Result = DatabaseBuffer.getError()) { ErrorMessage = "Error while opening JSON database: " + Result.message(); return nullptr; } std::unique_ptr Database( - new JSONCompilationDatabase(DatabaseBuffer.release())); + new JSONCompilationDatabase(DatabaseBuffer->release())); if (!Database->parse(ErrorMessage)) return nullptr; return Database.release(); diff --git a/clang/tools/arcmt-test/arcmt-test.cpp b/clang/tools/arcmt-test/arcmt-test.cpp index 8a32992..27da45f 100644 --- a/clang/tools/arcmt-test/arcmt-test.cpp +++ b/clang/tools/arcmt-test/arcmt-test.cpp @@ -207,17 +207,15 @@ static bool performTransformations(StringRef resourcesPath, static bool filesCompareEqual(StringRef fname1, StringRef fname2) { using namespace llvm; - std::unique_ptr file1; - MemoryBuffer::getFile(fname1, file1); + ErrorOr> file1 = MemoryBuffer::getFile(fname1); if (!file1) return false; - std::unique_ptr file2; - MemoryBuffer::getFile(fname2, file2); + ErrorOr> file2 = MemoryBuffer::getFile(fname2); if (!file2) return false; - return file1->getBuffer() == file2->getBuffer(); + return file1.get()->getBuffer() == file2.get()->getBuffer(); } static bool verifyTransformedFiles(ArrayRef resultFiles) { @@ -238,18 +236,19 @@ static bool verifyTransformedFiles(ArrayRef resultFiles) { resultMap[sys::path::stem(fname)] = fname; } - std::unique_ptr inputBuf; + ErrorOr> inputBuf = std::error_code(); if (RemappingsFile.empty()) - MemoryBuffer::getSTDIN(inputBuf); + inputBuf = MemoryBuffer::getSTDIN(); else - MemoryBuffer::getFile(RemappingsFile, inputBuf); + inputBuf = MemoryBuffer::getFile(RemappingsFile); if (!inputBuf) { errs() << "error: could not read remappings input\n"; return true; } SmallVector strs; - inputBuf->getBuffer().split(strs, "\n", /*MaxSplit=*/-1, /*KeepEmpty=*/false); + inputBuf.get()->getBuffer().split(strs, "\n", /*MaxSplit=*/-1, + /*KeepEmpty=*/false); if (strs.empty()) { errs() << "error: no files to verify from stdin\n"; diff --git a/clang/tools/clang-format/ClangFormat.cpp b/clang/tools/clang-format/ClangFormat.cpp index 575ac7a..cebb275 100644 --- a/clang/tools/clang-format/ClangFormat.cpp +++ b/clang/tools/clang-format/ClangFormat.cpp @@ -209,11 +209,13 @@ static bool format(StringRef FileName) { IntrusiveRefCntPtr(new DiagnosticIDs), new DiagnosticOptions); SourceManager Sources(Diagnostics, Files); - std::unique_ptr Code; - if (std::error_code ec = MemoryBuffer::getFileOrSTDIN(FileName, Code)) { - llvm::errs() << ec.message() << "\n"; + ErrorOr> CodeOrErr = + MemoryBuffer::getFileOrSTDIN(FileName); + if (std::error_code EC = CodeOrErr.getError()) { + llvm::errs() << EC.message() << "\n"; return true; } + std::unique_ptr Code = std::move(CodeOrErr.get()); if (Code->getBufferSize() == 0) return false; // Empty files are formatted correctly. FileID ID = createInMemoryFile(FileName, Code.get(), Sources, Files); diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp index 2b4e97d..2393d19 100644 --- a/clang/tools/driver/cc1as_main.cpp +++ b/clang/tools/driver/cc1as_main.cpp @@ -281,17 +281,18 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, if (!TheTarget) return Diags.Report(diag::err_target_unknown_triple) << Opts.Triple; - std::unique_ptr Buffer; - if (std::error_code ec = - MemoryBuffer::getFileOrSTDIN(Opts.InputFile, Buffer)) { - Error = ec.message(); + ErrorOr> Buffer = + MemoryBuffer::getFileOrSTDIN(Opts.InputFile); + + if (std::error_code EC = Buffer.getError()) { + Error = EC.message(); return Diags.Report(diag::err_fe_error_reading) << Opts.InputFile; } SourceMgr SrcMgr; // Tell SrcMgr about this buffer, which is what the parser will pick up. - SrcMgr.AddNewSourceBuffer(Buffer.release(), SMLoc()); + SrcMgr.AddNewSourceBuffer(Buffer->release(), SMLoc()); // Record the location of the include directories so that the lexer can find // it later.