diff options
| author | Mehdi Amini <mehdi.amini@apple.com> | 2017-01-04 22:54:14 +0000 |
|---|---|---|
| committer | Mehdi Amini <mehdi.amini@apple.com> | 2017-01-04 22:54:14 +0000 |
| commit | 867aad13594af2cf09e977260eae8b186eb41bce (patch) | |
| tree | 2e52c2965effbb4543b17e1af53050e1d959bed5 | |
| parent | 6796d7ea8b8d7bfb17adf70de12ff78036f6a0d5 (diff) | |
| download | bcm5719-llvm-867aad13594af2cf09e977260eae8b186eb41bce.tar.gz bcm5719-llvm-867aad13594af2cf09e977260eae8b186eb41bce.zip | |
Change BitstreamCursor::skipRecord to return the record code (NFC)
llvm-svn: 291026
| -rw-r--r-- | llvm/include/llvm/Bitcode/BitstreamReader.h | 4 | ||||
| -rw-r--r-- | llvm/lib/Bitcode/Reader/BitstreamReader.cpp | 18 |
2 files changed, 16 insertions, 6 deletions
diff --git a/llvm/include/llvm/Bitcode/BitstreamReader.h b/llvm/include/llvm/Bitcode/BitstreamReader.h index 3118a2fd6d9..fc06eeefbf2 100644 --- a/llvm/include/llvm/Bitcode/BitstreamReader.h +++ b/llvm/include/llvm/Bitcode/BitstreamReader.h @@ -477,8 +477,8 @@ public: return CurAbbrevs[AbbrevNo].get(); } - /// Read the current record and discard it. - void skipRecord(unsigned AbbrevID); + /// Read the current record and discard it, returning the code for the record. + unsigned skipRecord(unsigned AbbrevID); unsigned readRecord(unsigned AbbrevID, SmallVectorImpl<uint64_t> &Vals, StringRef *Blob = nullptr); diff --git a/llvm/lib/Bitcode/Reader/BitstreamReader.cpp b/llvm/lib/Bitcode/Reader/BitstreamReader.cpp index 0c45b4b4cde..771cf3d927b 100644 --- a/llvm/lib/Bitcode/Reader/BitstreamReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitstreamReader.cpp @@ -93,20 +93,29 @@ static void skipAbbreviatedField(BitstreamCursor &Cursor, } /// skipRecord - Read the current record and discard it. -void BitstreamCursor::skipRecord(unsigned AbbrevID) { +unsigned BitstreamCursor::skipRecord(unsigned AbbrevID) { // Skip unabbreviated records by reading past their entries. if (AbbrevID == bitc::UNABBREV_RECORD) { unsigned Code = ReadVBR(6); - (void)Code; unsigned NumElts = ReadVBR(6); for (unsigned i = 0; i != NumElts; ++i) (void)ReadVBR64(6); - return; + return Code; } const BitCodeAbbrev *Abbv = getAbbrev(AbbrevID); + const BitCodeAbbrevOp &CodeOp = Abbv->getOperandInfo(0); + unsigned Code; + if (CodeOp.isLiteral()) + Code = CodeOp.getLiteralValue(); + else { + if (CodeOp.getEncoding() == BitCodeAbbrevOp::Array || + CodeOp.getEncoding() == BitCodeAbbrevOp::Blob) + report_fatal_error("Abbreviation starts with an Array or a Blob"); + Code = readAbbreviatedField(*this, CodeOp); + } - for (unsigned i = 0, e = Abbv->getNumOperandInfos(); i != e; ++i) { + for (unsigned i = 1, e = Abbv->getNumOperandInfos(); i < e; ++i) { const BitCodeAbbrevOp &Op = Abbv->getOperandInfo(i); if (Op.isLiteral()) continue; @@ -164,6 +173,7 @@ void BitstreamCursor::skipRecord(unsigned AbbrevID) { // Skip over the blob. JumpToBit(NewEnd); } + return Code; } unsigned BitstreamCursor::readRecord(unsigned AbbrevID, |

