This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG2410fb4616b2: Support: Use Expected<T>::moveInto() in a few places (authored by dexonsmith).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112280/new/ https://reviews.llvm.org/D112280 Files: clang/lib/CodeGen/BackendUtil.cpp llvm/lib/Bitcode/Reader/BitcodeReader.cpp llvm/lib/DebugInfo/Symbolize/Symbolize.cpp llvm/lib/Object/ObjectFile.cpp llvm/lib/XRay/InstrumentationMap.cpp
Index: llvm/lib/XRay/InstrumentationMap.cpp =================================================================== --- llvm/lib/XRay/InstrumentationMap.cpp +++ llvm/lib/XRay/InstrumentationMap.cpp @@ -86,10 +86,8 @@ "Failed to find XRay instrumentation map.", std::make_error_code(std::errc::executable_format_error)); - if (Expected<StringRef> E = I->getContents()) - Contents = *E; - else - return E.takeError(); + if (Error E = I->getContents().moveInto(Contents)) + return E; RelocMap Relocs; if (ObjFile.getBinary()->isELF()) { Index: llvm/lib/Object/ObjectFile.cpp =================================================================== --- llvm/lib/Object/ObjectFile.cpp +++ llvm/lib/Object/ObjectFile.cpp @@ -55,14 +55,15 @@ } Expected<uint64_t> ObjectFile::getSymbolValue(DataRefImpl Ref) const { - if (Expected<uint32_t> FlagsOrErr = getSymbolFlags(Ref)) { - if (*FlagsOrErr & SymbolRef::SF_Undefined) - return 0; - if (*FlagsOrErr & SymbolRef::SF_Common) - return getCommonSymbolSize(Ref); - } else + uint32_t Flags; + if (Error E = getSymbolFlags(Ref).moveInto(Flags)) // TODO: Test this error. - return FlagsOrErr.takeError(); + return std::move(E); + + if (Flags & SymbolRef::SF_Undefined) + return 0; + if (Flags & SymbolRef::SF_Common) + return getCommonSymbolSize(Ref); return getSymbolValueImpl(Ref); } Index: llvm/lib/DebugInfo/Symbolize/Symbolize.cpp =================================================================== --- llvm/lib/DebugInfo/Symbolize/Symbolize.cpp +++ llvm/lib/DebugInfo/Symbolize/Symbolize.cpp @@ -280,10 +280,7 @@ return false; for (const SectionRef &Section : Obj->sections()) { StringRef Name; - if (Expected<StringRef> NameOrErr = Section.getName()) - Name = *NameOrErr; - else - consumeError(NameOrErr.takeError()); + consumeError(Section.getName().moveInto(Name)); Name = Name.substr(Name.find_first_not_of("._")); if (Name == "gnu_debuglink") { Index: llvm/lib/Bitcode/Reader/BitcodeReader.cpp =================================================================== --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -179,10 +179,8 @@ while (true) { BitstreamEntry Entry; - if (Expected<BitstreamEntry> Res = Stream.advance()) - Entry = Res.get(); - else - return Res.takeError(); + if (Error E = Stream.advance().moveInto(Entry)) + return std::move(E); switch (Entry.Kind) { default: @@ -226,10 +224,8 @@ return ""; BitstreamEntry Entry; - if (Expected<BitstreamEntry> Res = Stream.advance()) - Entry = std::move(Res.get()); - else - return Res.takeError(); + if (Error E = Stream.advance().moveInto(Entry)) + return std::move(E); switch (Entry.Kind) { case BitstreamEntry::EndBlock: @@ -305,10 +301,8 @@ // need to understand them all. while (true) { BitstreamEntry Entry; - if (Expected<BitstreamEntry> Res = Stream.advance()) - Entry = std::move(Res.get()); - else - return Res.takeError(); + if (Error E = Stream.advance().moveInto(Entry)) + return std::move(E); switch (Entry.Kind) { case BitstreamEntry::Error: Index: clang/lib/CodeGen/BackendUtil.cpp =================================================================== --- clang/lib/CodeGen/BackendUtil.cpp +++ clang/lib/CodeGen/BackendUtil.cpp @@ -1657,16 +1657,17 @@ // If we are performing a ThinLTO importing compile, load the function index // into memory and pass it into runThinLTOBackend, which will run the // function importer and invoke LTO passes. - Expected<std::unique_ptr<ModuleSummaryIndex>> IndexOrErr = - llvm::getModuleSummaryIndexForFile(CGOpts.ThinLTOIndexFile, - /*IgnoreEmptyThinLTOIndexFile*/true); - if (!IndexOrErr) { - logAllUnhandledErrors(IndexOrErr.takeError(), errs(), + std::unique_ptr<ModuleSummaryIndex> CombinedIndex; + if (Error E = llvm::getModuleSummaryIndexForFile( + CGOpts.ThinLTOIndexFile, + /*IgnoreEmptyThinLTOIndexFile*/ true) + .moveInto(CombinedIndex)) { + logAllUnhandledErrors(std::move(E), errs(), "Error loading index file '" + CGOpts.ThinLTOIndexFile + "': "); return; } - std::unique_ptr<ModuleSummaryIndex> CombinedIndex = std::move(*IndexOrErr); + // A null CombinedIndex means we should skip ThinLTO compilation // (LLVM will optionally ignore empty index files, returning null instead // of an error).
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits