Skip to content

Commit 4a794d8

Browse files
committed
[Bitstream] Improve error propagation from ReadVBR
Differential Revision: https://reviews.llvm.org/D119307
1 parent 6280c29 commit 4a794d8

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

llvm/lib/Bitstream/Reader/BitstreamReader.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,9 @@ Expected<unsigned> BitstreamCursor::readRecord(unsigned AbbrevID,
220220
uint32_t Code = MaybeCode.get();
221221
Expected<uint32_t> MaybeNumElts = ReadVBR(6);
222222
if (!MaybeNumElts)
223-
return MaybeNumElts.takeError();
223+
return error(("Failed to read size: " +
224+
toString(std::move(MaybeNumElts.takeError())))
225+
.c_str());
224226
uint32_t NumElts = MaybeNumElts.get();
225227
if (!isSizePlausible(NumElts))
226228
return error("Size is not plausible");
@@ -275,7 +277,9 @@ Expected<unsigned> BitstreamCursor::readRecord(unsigned AbbrevID,
275277
// Array case. Read the number of elements as a vbr6.
276278
Expected<uint32_t> MaybeNumElts = ReadVBR(6);
277279
if (!MaybeNumElts)
278-
return MaybeNumElts.takeError();
280+
return error(("Failed to read size: " +
281+
toString(std::move(MaybeNumElts.takeError())))
282+
.c_str());
279283
uint32_t NumElts = MaybeNumElts.get();
280284
if (!isSizePlausible(NumElts))
281285
return error("Size is not plausible");

llvm/test/Bitcode/invalid.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ INVALID-VALUE-SYMBOL-TABLE: Invalid value reference in symbol table
275275
RUN: not llvm-dis -disable-output %p/Inputs/unterminated-vbr.bc 2>&1 | \
276276
RUN: FileCheck --check-prefix=UNTERMINATED-VBR %s
277277

278-
UNTERMINATED-VBR: Unterminated VBR
278+
UNTERMINATED-VBR: Failed to read size: Unterminated VBR
279279

280280
RUN: not llvm-dis -disable-output %p/Inputs/comdat-name-too-large.bc 2>&1 | \
281281
RUN: FileCheck --check-prefix=COMDAT-NAME-TOO-LARGE %s

0 commit comments

Comments
 (0)