compute this value correctly
authorChris Lattner <sabre@nondot.org>
Sun, 29 Apr 2007 19:49:58 +0000 (19:49 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 29 Apr 2007 19:49:58 +0000 (19:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36575 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Bitcode/BitstreamReader.h

index f41c4f0ec3b91ef3b31ffc4efa2dcc3f27ea2a90..c6394b6c99a539109f55dfe7564838005f9f48a1 100644 (file)
@@ -48,9 +48,11 @@ class BitstreamReader {
   /// BlockScope - This tracks the codesize of parent blocks.
   SmallVector<Block, 8> BlockScope;
 
+  /// FirstChar - This remembers the first byte of the stream.
+  const unsigned char *FirstChar;
 public:
   BitstreamReader(const unsigned char *Start, const unsigned char *End)
-    : NextChar(Start), LastChar(End) {
+    : NextChar(Start), LastChar(End), FirstChar(Start) {
     assert(((End-Start) & 3) == 0 &&"Bitcode stream not a multiple of 4 bytes");
     CurWord = 0;
     BitsInCurWord = 0;
@@ -74,7 +76,7 @@ public:
   
   /// GetCurrentBitNo - Return the bit # of the bit we are reading.
   uint64_t GetCurrentBitNo() const {
-    return CurWord * 32ULL + (32-CurCodeSize);
+    return (NextChar-FirstChar)*8 + (32-BitsInCurWord);
   }