From 91fcb7f42099f11f8ea298c4b231d801998bf2dd Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Tue, 21 Aug 2012 13:47:25 +0000 Subject: PVS-Studio noticed that EmitVBR64 would perform undefined behaviour if the number of bits was bigger than 32. I checked every use of this function that I could find and it looks like the maximum number of bits is 32, so I've added an assertion checking this property, and a type cast to (hopefully) stop PVS-Studio from warning about this in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162277 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Bitcode/BitstreamWriter.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/llvm/Bitcode/BitstreamWriter.h b/include/llvm/Bitcode/BitstreamWriter.h index 475da13..65933a2 100644 --- a/include/llvm/Bitcode/BitstreamWriter.h +++ b/include/llvm/Bitcode/BitstreamWriter.h @@ -155,6 +155,7 @@ public: } void EmitVBR(uint32_t Val, unsigned NumBits) { + assert(NumBits <= 32 && "Too many bits to emit!"); uint32_t Threshold = 1U << (NumBits-1); // Emit the bits with VBR encoding, NumBits-1 bits at a time. @@ -167,10 +168,11 @@ public: } void EmitVBR64(uint64_t Val, unsigned NumBits) { + assert(NumBits <= 32 && "Too many bits to emit!"); if ((uint32_t)Val == Val) return EmitVBR((uint32_t)Val, NumBits); - uint64_t Threshold = 1U << (NumBits-1); + uint64_t Threshold = uint64_t(1U << (NumBits-1)); // Emit the bits with VBR encoding, NumBits-1 bits at a time. while (Val >= Threshold) { -- cgit v1.1