Bitcode: Use Expected<T>::takeError() and moveInto() more, NFC

Avoid naming some Expected<T> values in the Bitcode reader by using
takeError() and moveInto() more often. This follows the smaller set of
changes included in 2410fb4616.
This commit is contained in:
Duncan P. N. Exon Smith 2021-10-25 13:56:43 -07:00
parent df05babc96
commit b12a864c29
3 changed files with 73 additions and 97 deletions

View File

@ -529,10 +529,9 @@ Error BitcodeAnalyzer::decodeMetadataStringsBlob(StringRef Indent,
if (R.AtEndOfStream())
return reportError("bad length");
Expected<uint32_t> MaybeSize = R.ReadVBR(6);
if (!MaybeSize)
return MaybeSize.takeError();
uint32_t Size = MaybeSize.get();
uint32_t Size;
if (Error E = R.ReadVBR(6).moveInto(Size))
return E;
if (Strings.size() < Size)
return reportError("truncated chars");
@ -555,11 +554,8 @@ BitcodeAnalyzer::BitcodeAnalyzer(StringRef Buffer,
Error BitcodeAnalyzer::analyze(Optional<BCDumpOptions> O,
Optional<StringRef> CheckHash) {
Expected<CurStreamTypeType> MaybeType = analyzeHeader(O, Stream);
if (!MaybeType)
return MaybeType.takeError();
else
CurStreamType = *MaybeType;
if (Error E = analyzeHeader(O, Stream).moveInto(CurStreamType))
return E;
Stream.setBlockInfo(&BlockInfo);
@ -567,9 +563,8 @@ Error BitcodeAnalyzer::analyze(Optional<BCDumpOptions> O,
// The block info must be a top-level block.
if (BlockInfoStream) {
BitstreamCursor BlockInfoCursor(*BlockInfoStream);
Expected<CurStreamTypeType> H = analyzeHeader(O, BlockInfoCursor);
if (!H)
return H.takeError();
if (Error E = analyzeHeader(O, BlockInfoCursor).takeError())
return E;
while (!BlockInfoCursor.AtEndOfStream()) {
Expected<unsigned> MaybeCode = BlockInfoCursor.ReadCode();
@ -582,12 +577,11 @@ Error BitcodeAnalyzer::analyze(Optional<BCDumpOptions> O,
if (!MaybeBlockID)
return MaybeBlockID.takeError();
if (MaybeBlockID.get() == bitc::BLOCKINFO_BLOCK_ID) {
Expected<Optional<BitstreamBlockInfo>> MaybeNewBlockInfo =
BlockInfoCursor.ReadBlockInfoBlock(/*ReadBlockInfoNames=*/true);
if (!MaybeNewBlockInfo)
return MaybeNewBlockInfo.takeError();
Optional<BitstreamBlockInfo> NewBlockInfo =
std::move(MaybeNewBlockInfo.get());
Optional<BitstreamBlockInfo> NewBlockInfo;
if (Error E =
BlockInfoCursor.ReadBlockInfoBlock(/*ReadBlockInfoNames=*/true)
.moveInto(NewBlockInfo))
return E;
if (!NewBlockInfo)
return reportError("Malformed BlockInfoBlock in block info file");
BlockInfo = std::move(*NewBlockInfo);
@ -746,12 +740,10 @@ Error BitcodeAnalyzer::parseBlock(unsigned BlockID, unsigned IndentLevel,
if (BlockID == bitc::BLOCKINFO_BLOCK_ID) {
if (O && !O->DumpBlockinfo)
O->OS << Indent << "<BLOCKINFO_BLOCK/>\n";
Expected<Optional<BitstreamBlockInfo>> MaybeNewBlockInfo =
Stream.ReadBlockInfoBlock(/*ReadBlockInfoNames=*/true);
if (!MaybeNewBlockInfo)
return MaybeNewBlockInfo.takeError();
Optional<BitstreamBlockInfo> NewBlockInfo =
std::move(MaybeNewBlockInfo.get());
Optional<BitstreamBlockInfo> NewBlockInfo;
if (Error E = Stream.ReadBlockInfoBlock(/*ReadBlockInfoNames=*/true)
.moveInto(NewBlockInfo))
return E;
if (!NewBlockInfo)
return reportError("Malformed BlockInfoBlock");
BlockInfo = std::move(*NewBlockInfo);
@ -796,11 +788,10 @@ Error BitcodeAnalyzer::parseBlock(unsigned BlockID, unsigned IndentLevel,
uint64_t RecordStartBit = Stream.GetCurrentBitNo();
Expected<BitstreamEntry> MaybeEntry =
Stream.advance(BitstreamCursor::AF_DontAutoprocessAbbrevs);
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E = Stream.advance(BitstreamCursor::AF_DontAutoprocessAbbrevs)
.moveInto(Entry))
return E;
switch (Entry.Kind) {
case BitstreamEntry::Error:
@ -847,10 +838,9 @@ Error BitcodeAnalyzer::parseBlock(unsigned BlockID, unsigned IndentLevel,
StringRef Blob;
uint64_t CurrentRecordPos = Stream.GetCurrentBitNo();
Expected<unsigned> MaybeCode = Stream.readRecord(Entry.ID, Record, &Blob);
if (!MaybeCode)
return MaybeCode.takeError();
unsigned Code = MaybeCode.get();
unsigned Code;
if (Error E = Stream.readRecord(Entry.ID, Record, &Blob).moveInto(Code))
return E;
// Increment the # occurrences of this code.
if (BlockStats.CodeFreq.size() <= Code)

View File

@ -241,10 +241,9 @@ static Expected<std::string> readIdentificationCode(BitstreamCursor &Stream) {
return std::move(Err);
continue;
case BitstreamEntry::Record:
if (Expected<unsigned> Skipped = Stream.skipRecord(Entry.ID))
continue;
else
return Skipped.takeError();
if (Error E = Stream.skipRecord(Entry.ID).takeError())
return std::move(E);
continue;
}
}
}
@ -320,10 +319,9 @@ static Expected<bool> hasObjCCategory(BitstreamCursor &Stream) {
continue;
case BitstreamEntry::Record:
if (Expected<unsigned> Skipped = Stream.skipRecord(Entry.ID))
continue;
else
return Skipped.takeError();
if (Error E = Stream.skipRecord(Entry.ID).takeError())
return std::move(E);
continue;
}
}
}
@ -6772,10 +6770,9 @@ llvm::getBitcodeFileContents(MemoryBufferRef Buffer) {
continue;
}
case BitstreamEntry::Record:
if (Expected<unsigned> StreamFailed = Stream.skipRecord(Entry.ID))
continue;
else
return StreamFailed.takeError();
if (Error E = Stream.skipRecord(Entry.ID).takeError())
return std::move(E);
continue;
}
}
}
@ -6798,12 +6795,9 @@ BitcodeModule::getModuleImpl(LLVMContext &Context, bool MaterializeAll,
if (IdentificationBit != -1ull) {
if (Error JumpFailed = Stream.JumpToBit(IdentificationBit))
return std::move(JumpFailed);
Expected<std::string> ProducerIdentificationOrErr =
readIdentificationBlock(Stream);
if (!ProducerIdentificationOrErr)
return ProducerIdentificationOrErr.takeError();
ProducerIdentification = *ProducerIdentificationOrErr;
if (Error E =
readIdentificationBlock(Stream).moveInto(ProducerIdentification))
return std::move(E);
}
if (Error JumpFailed = Stream.JumpToBit(ModuleBit))
@ -6877,10 +6871,9 @@ static Expected<bool> getEnableSplitLTOUnitFlag(BitstreamCursor &Stream,
SmallVector<uint64_t, 64> Record;
while (true) {
Expected<BitstreamEntry> MaybeEntry = Stream.advanceSkippingSubblocks();
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E = Stream.advanceSkippingSubblocks().moveInto(Entry))
return std::move(E);
switch (Entry.Kind) {
case BitstreamEntry::SubBlock: // Handled for us already.
@ -6925,10 +6918,9 @@ Expected<BitcodeLTOInfo> BitcodeModule::getLTOInfo() {
return std::move(Err);
while (true) {
Expected<llvm::BitstreamEntry> MaybeEntry = Stream.advance();
if (!MaybeEntry)
return MaybeEntry.takeError();
llvm::BitstreamEntry Entry = MaybeEntry.get();
llvm::BitstreamEntry Entry;
if (Error E = Stream.advance().moveInto(Entry))
return std::move(E);
switch (Entry.Kind) {
case BitstreamEntry::Error:

View File

@ -697,11 +697,12 @@ MetadataLoader::MetadataLoaderImpl::lazyLoadModuleMetadataBlock() {
// Get the abbrevs, and preload record positions to make them lazy-loadable.
while (true) {
uint64_t SavedPos = IndexCursor.GetCurrentBitNo();
Expected<BitstreamEntry> MaybeEntry = IndexCursor.advanceSkippingSubblocks(
BitstreamCursor::AF_DontPopBlockAtEnd);
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E =
IndexCursor
.advanceSkippingSubblocks(BitstreamCursor::AF_DontPopBlockAtEnd)
.moveInto(Entry))
return std::move(E);
switch (Entry.Kind) {
case BitstreamEntry::SubBlock: // Handled for us already.
@ -714,10 +715,9 @@ MetadataLoader::MetadataLoaderImpl::lazyLoadModuleMetadataBlock() {
// The interesting case.
++NumMDRecordLoaded;
uint64_t CurrentPos = IndexCursor.GetCurrentBitNo();
Expected<unsigned> MaybeCode = IndexCursor.skipRecord(Entry.ID);
if (!MaybeCode)
return MaybeCode.takeError();
unsigned Code = MaybeCode.get();
unsigned Code;
if (Error E = IndexCursor.skipRecord(Entry.ID).moveInto(Code))
return std::move(E);
switch (Code) {
case bitc::METADATA_STRINGS: {
// Rewind and parse the strings.
@ -904,11 +904,12 @@ Expected<bool> MetadataLoader::MetadataLoaderImpl::loadGlobalDeclAttachments() {
if (Error Err = TempCursor.JumpToBit(GlobalDeclAttachmentPos))
return std::move(Err);
while (true) {
Expected<BitstreamEntry> MaybeEntry = TempCursor.advanceSkippingSubblocks(
BitstreamCursor::AF_DontPopBlockAtEnd);
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E =
TempCursor
.advanceSkippingSubblocks(BitstreamCursor::AF_DontPopBlockAtEnd)
.moveInto(Entry))
return std::move(E);
switch (Entry.Kind) {
case BitstreamEntry::SubBlock: // Handled for us already.
@ -1024,10 +1025,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseMetadata(bool ModuleLevel) {
// Read all the records.
while (true) {
Expected<BitstreamEntry> MaybeEntry = Stream.advanceSkippingSubblocks();
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E = Stream.advanceSkippingSubblocks().moveInto(Entry))
return E;
switch (Entry.Kind) {
case BitstreamEntry::SubBlock: // Handled for us already.
@ -1081,12 +1081,11 @@ void MetadataLoader::MetadataLoaderImpl::lazyLoadOneMetadata(
GlobalMetadataBitPosIndex[ID - MDStringRef.size()]))
report_fatal_error("lazyLoadOneMetadata failed jumping: " +
Twine(toString(std::move(Err))));
Expected<BitstreamEntry> MaybeEntry = IndexCursor.advanceSkippingSubblocks();
if (!MaybeEntry)
BitstreamEntry Entry;
if (Error E = IndexCursor.advanceSkippingSubblocks().moveInto(Entry))
// FIXME this drops the error on the floor.
report_fatal_error("lazyLoadOneMetadata failed advanceSkippingSubblocks: " +
Twine(toString(MaybeEntry.takeError())));
BitstreamEntry Entry = MaybeEntry.get();
Twine(toString(std::move(E))));
++NumMDRecordLoaded;
if (Expected<unsigned> MaybeCode =
IndexCursor.readRecord(Entry.ID, Record, &Blob)) {
@ -1193,10 +1192,8 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
// Read name of the named metadata.
SmallString<8> Name(Record.begin(), Record.end());
Record.clear();
Expected<unsigned> MaybeCode = Stream.ReadCode();
if (!MaybeCode)
return MaybeCode.takeError();
Code = MaybeCode.get();
if (Error E = Stream.ReadCode().moveInto(Code))
return E;
++NumMDRecordLoaded;
if (Expected<unsigned> MaybeNextBitCode = Stream.readRecord(Code, Record)) {
@ -2147,10 +2144,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseMetadataStrings(
if (R.AtEndOfStream())
return error("Invalid record: metadata strings bad length");
Expected<uint32_t> MaybeSize = R.ReadVBR(6);
if (!MaybeSize)
return MaybeSize.takeError();
uint32_t Size = MaybeSize.get();
uint32_t Size;
if (Error E = R.ReadVBR(6).moveInto(Size))
return E;
if (Strings.size() < Size)
return error("Invalid record: metadata strings truncated chars");
@ -2187,10 +2183,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseMetadataAttachment(
PlaceholderQueue Placeholders;
while (true) {
Expected<BitstreamEntry> MaybeEntry = Stream.advanceSkippingSubblocks();
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E = Stream.advanceSkippingSubblocks().moveInto(Entry))
return E;
switch (Entry.Kind) {
case BitstreamEntry::SubBlock: // Handled for us already.
@ -2291,10 +2286,9 @@ Error MetadataLoader::MetadataLoaderImpl::parseMetadataKinds() {
// Read all the records.
while (true) {
Expected<BitstreamEntry> MaybeEntry = Stream.advanceSkippingSubblocks();
if (!MaybeEntry)
return MaybeEntry.takeError();
BitstreamEntry Entry = MaybeEntry.get();
BitstreamEntry Entry;
if (Error E = Stream.advanceSkippingSubblocks().moveInto(Entry))
return E;
switch (Entry.Kind) {
case BitstreamEntry::SubBlock: // Handled for us already.