mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:40:38 +00:00
Fix for llvm-dis/llvm-bcanalyzer overflows
Summary: These tools failed for a very large bitcode file produced by LTO due to 64-bit values being assigned to 32-bit types. For the BitstreamReader.h fix, the value initially fit into the 32-bit unsigned, but there was an overflow when multiplying by 32 furter below to compute the bit offset. No test case in the patch as this requires a huge bitcode file. Reviewers: pcc, george.karpenkov Subscribers: mehdi_amini, a.sidorin, llvm-commits Differential Revision: https://reviews.llvm.org/D47731 llvm-svn: 333942
This commit is contained in:
parent
936cf94651
commit
6b92d64b27
@ -429,7 +429,7 @@ public:
|
||||
// don't care what code widths are used inside of it.
|
||||
ReadVBR(bitc::CodeLenWidth);
|
||||
SkipToFourByteBoundary();
|
||||
unsigned NumFourBytes = Read(bitc::BlockSizeWidth);
|
||||
size_t NumFourBytes = Read(bitc::BlockSizeWidth);
|
||||
|
||||
// Check that the block wasn't partially defined, and that the offset isn't
|
||||
// bogus.
|
||||
|
@ -602,7 +602,7 @@ static bool ParseBlock(BitstreamCursor &Stream, BitstreamBlockInfo &BlockInfo,
|
||||
++BlockStats.NumRecords;
|
||||
|
||||
StringRef Blob;
|
||||
unsigned CurrentRecordPos = Stream.GetCurrentBitNo();
|
||||
uint64_t CurrentRecordPos = Stream.GetCurrentBitNo();
|
||||
unsigned Code = Stream.readRecord(Entry.ID, Record, &Blob);
|
||||
|
||||
// Increment the # occurrences of this code.
|
||||
|
Loading…
Reference in New Issue
Block a user