diff options
Diffstat (limited to 'llvm/lib/Bitstream/Reader/BitstreamReader.cpp')
-rw-r--r-- | llvm/lib/Bitstream/Reader/BitstreamReader.cpp | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/llvm/lib/Bitstream/Reader/BitstreamReader.cpp b/llvm/lib/Bitstream/Reader/BitstreamReader.cpp index a4a97ced5457..92d7c91a1d35 100644 --- a/llvm/lib/Bitstream/Reader/BitstreamReader.cpp +++ b/llvm/lib/Bitstream/Reader/BitstreamReader.cpp @@ -88,37 +88,6 @@ static Expected<uint64_t> readAbbreviatedField(BitstreamCursor &Cursor, llvm_unreachable("invalid abbreviation encoding"); } -static Error skipAbbreviatedField(BitstreamCursor &Cursor, - const BitCodeAbbrevOp &Op) { - assert(!Op.isLiteral() && "Not to be used with literals!"); - - // Decode the value as we are commanded. - switch (Op.getEncoding()) { - case BitCodeAbbrevOp::Array: - case BitCodeAbbrevOp::Blob: - llvm_unreachable("Should not reach here"); - case BitCodeAbbrevOp::Fixed: - assert((unsigned)Op.getEncodingData() <= Cursor.MaxChunkSize); - if (Expected<unsigned> Res = Cursor.Read((unsigned)Op.getEncodingData())) - break; - else - return Res.takeError(); - case BitCodeAbbrevOp::VBR: - assert((unsigned)Op.getEncodingData() <= Cursor.MaxChunkSize); - if (Expected<uint64_t> Res = - Cursor.ReadVBR64((unsigned)Op.getEncodingData())) - break; - else - return Res.takeError(); - case BitCodeAbbrevOp::Char6: - if (Expected<unsigned> Res = Cursor.Read(6)) - break; - else - return Res.takeError(); - } - return ErrorSuccess(); -} - /// skipRecord - Read the current record and discard it. Expected<unsigned> BitstreamCursor::skipRecord(unsigned AbbrevID) { // Skip unabbreviated records by reading past their entries. @@ -163,9 +132,10 @@ Expected<unsigned> BitstreamCursor::skipRecord(unsigned AbbrevID) { if (Op.getEncoding() != BitCodeAbbrevOp::Array && Op.getEncoding() != BitCodeAbbrevOp::Blob) { - if (Error Err = skipAbbreviatedField(*this, Op)) - return std::move(Err); - continue; + if (Expected<uint64_t> MaybeField = readAbbreviatedField(*this, Op)) + continue; + else + return MaybeField.takeError(); } if (Op.getEncoding() == BitCodeAbbrevOp::Array) { |