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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264546 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith
2016-03-27 22:45:25 +00:00
parent f05c78c2b2
commit 2e87e9ef90
3 changed files with 79 additions and 3 deletions
+1 -3
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) {