diff --git a/llvm/include/llvm/Bitstream/BitstreamReader.h b/llvm/include/llvm/Bitstream/BitstreamReader.h --- a/llvm/include/llvm/Bitstream/BitstreamReader.h +++ b/llvm/include/llvm/Bitstream/BitstreamReader.h @@ -115,7 +115,7 @@ /// Return the bit # of the bit we are reading. uint64_t GetCurrentBitNo() const { - return NextChar*CHAR_BIT - BitsInCurWord; + return uint64_t(NextChar)*CHAR_BIT - BitsInCurWord; } // Return the byte # of the current bit. diff --git a/llvm/include/llvm/Bitstream/BitstreamWriter.h b/llvm/include/llvm/Bitstream/BitstreamWriter.h --- a/llvm/include/llvm/Bitstream/BitstreamWriter.h +++ b/llvm/include/llvm/Bitstream/BitstreamWriter.h @@ -111,7 +111,7 @@ /// valid. Flushing only occurs at (sub)block boundaries. BitstreamWriter(SmallVectorImpl &O, raw_fd_stream *FS = nullptr, uint32_t FlushThreshold = 512) - : Out(O), FS(FS), FlushThreshold(FlushThreshold << 20), CurBit(0), + : Out(O), FS(FS), FlushThreshold(uint64_t(FlushThreshold) << 20), CurBit(0), CurValue(0), CurCodeSize(2) {} ~BitstreamWriter() {