Bitcode: Add SimpleBitstreamCursor::getPointerToByte, etc.

Add API to SimpleBitstreamCursor to allow users to translate between
byte addresses and pointers.

  - jumpToPointer: move the bit position to a particular pointer.
  - getPointerToByte: get the pointer for a particular byte.
  - getPointerToBit: get the pointer for the byte of the current bit.
  - getCurrentByteNo: convenience function for assertions and tests.

Mainly adds unit tests (getPointerToBit/Byte already has a use), but
also preparation for eventually using jumpToPointer.

llvm-svn: 264546
This commit is contained in:
Duncan P. N. Exon Smith
2016-03-27 22:45:25 +00:00
parent d766d136ce
commit d3be62ddf2
3 changed files with 79 additions and 3 deletions

View File

@@ -261,9 +261,7 @@ unsigned BitstreamCursor::readRecord(unsigned AbbrevID,
}
// Otherwise, inform the streamer that we need these bytes in memory.
const char *Ptr =
(const char *)getBitStreamReader()->getBitcodeBytes().getPointer(
CurBitPos / 8, NumElts);
const char *Ptr = (const char *)getPointerToBit(CurBitPos, NumElts);
// If we can return a reference to the data, do so to avoid copying it.
if (Blob) {