diff options
author | Micah Villmow <villmow@gmail.com> | 2012-10-11 17:21:41 +0000 |
---|---|---|
committer | Micah Villmow <villmow@gmail.com> | 2012-10-11 17:21:41 +0000 |
commit | 083189730e40a2da15e6b66e5b220b707febdb9e (patch) | |
tree | 6daffbfbb571af888a60f19b0933c443c8488107 /llvm/lib/Analysis/ValueTracking.cpp | |
parent | b1e3e5f553024fcdb5436081854f7d9c3f12852b (diff) | |
download | bcm5719-llvm-083189730e40a2da15e6b66e5b220b707febdb9e.tar.gz bcm5719-llvm-083189730e40a2da15e6b66e5b220b707febdb9e.zip |
Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.
llvm-svn: 165726
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 951b442b874..1d7f0692cbe 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -40,7 +40,8 @@ static unsigned getBitWidth(Type *Ty, const DataLayout *TD) { if (unsigned BitWidth = Ty->getScalarSizeInBits()) return BitWidth; assert(isa<PointerType>(Ty) && "Expected a pointer type!"); - return TD ? TD->getPointerSizeInBits() : 0; + return TD ? + TD->getPointerSizeInBits(cast<PointerType>(Ty)->getAddressSpace()) : 0; } static void ComputeMaskedBitsAddSub(bool Add, Value *Op0, Value *Op1, bool NSW, @@ -1621,7 +1622,8 @@ Value *llvm::GetPointerBaseWithConstantOffset(Value *Ptr, int64_t &Offset, // Re-sign extend from the pointer size if needed to get overflow edge cases // right. - unsigned PtrSize = TD.getPointerSizeInBits(); + unsigned AS = GEP->getPointerAddressSpace(); + unsigned PtrSize = TD.getPointerSizeInBits(AS); if (PtrSize < 64) Offset = SignExtend64(Offset, PtrSize); |