summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-08-24 23:29:28 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-08-24 23:29:28 +0000
commit228e6d4cf347820fce53e57c24b266f67a413d85 (patch)
treed2b63a5d9cee710515d33361e84ad0988d2c31fa /llvm/lib/Analysis/ValueTracking.cpp
parent3d91b43ad22b69408af224a8d67561038705ec55 (diff)
downloadbcm5719-llvm-228e6d4cf347820fce53e57c24b266f67a413d85.tar.gz
bcm5719-llvm-228e6d4cf347820fce53e57c24b266f67a413d85.zip
Fix integer undefined behavior due to signed left shift overflow in LLVM.
Reviewed offline by chandlerc. llvm-svn: 162623
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index cea34e16e7b..491224a4b69 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -1614,7 +1614,7 @@ Value *llvm::GetPointerBaseWithConstantOffset(Value *Ptr, int64_t &Offset,
// right.
unsigned PtrSize = TD.getPointerSizeInBits();
if (PtrSize < 64)
- Offset = (Offset << (64-PtrSize)) >> (64-PtrSize);
+ Offset = SignExtend64(Offset, PtrSize);
return GetPointerBaseWithConstantOffset(GEP->getPointerOperand(), Offset, TD);
}
OpenPOWER on IntegriCloud