forked from OSchip/llvm-project
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:
parent
df05babc96
commit
b12a864c29
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue