diff options
| author | Dan Gohman <gohman@apple.com> | 2009-06-22 22:02:32 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2009-06-22 22:02:32 +0000 |
| commit | 2636693a3c574a8acfc430e4236d1f34d760cbe2 (patch) | |
| tree | 00cd6ed1c7f23ad5f0d2509796ed3c6db1956a61 /llvm/lib/Analysis | |
| parent | 04052ec5975724dad228e50a7580672d94941b69 (diff) | |
| download | bcm5719-llvm-2636693a3c574a8acfc430e4236d1f34d760cbe2.tar.gz bcm5719-llvm-2636693a3c574a8acfc430e4236d1f34d760cbe2.zip | |
Fix llvm::ComputeNumSignBits to handle pointer types
conservatively correctly, instead of aborting.
llvm-svn: 73908
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 17ffa2d2de6..7509e91bdc8 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -624,8 +624,12 @@ bool llvm::MaskedValueIsZero(Value *V, const APInt &Mask, /// 'Op' must have a scalar integer type. /// unsigned llvm::ComputeNumSignBits(Value *V, TargetData *TD, unsigned Depth) { + assert((TD || V->getType()->isIntOrIntVector()) && + "ComputeNumSignBits requires a TargetData object to operate " + "on non-integer values!"); const Type *Ty = V->getType(); - unsigned TyBits = Ty->getScalarSizeInBits(); + unsigned TyBits = TD ? TD->getTypeSizeInBits(V->getType()->getScalarType()) : + Ty->getScalarSizeInBits(); unsigned Tmp, Tmp2; unsigned FirstAnswer = 1; |

