diff --git a/clang/lib/Analysis/RegionStore.cpp b/clang/lib/Analysis/RegionStore.cpp index 747b16d7b6d9..e2dd176139d3 100644 --- a/clang/lib/Analysis/RegionStore.cpp +++ b/clang/lib/Analysis/RegionStore.cpp @@ -262,7 +262,8 @@ SVal RegionStoreManager::getLValueElement(const GRState* St, if (CI2->getValue().isUnsigned() || CI2->getValue().getBitWidth() < CI1->getValue().getBitWidth()) { llvm::APSInt SI = CI2->getValue(); - SI.extend(CI1->getValue().getBitWidth()); + if (CI2->getValue().getBitWidth() < CI1->getValue().getBitWidth()) + SI.extend(CI1->getValue().getBitWidth()); SI.setIsSigned(true); SignedInt = nonloc::ConcreteInt(getBasicVals().getValue(SI)); CI2 = cast(&SignedInt);