stripAndComputeConstantOffsets is only called on pointers; check this

with an assert instead of failing and requiring callers to check for failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173998 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2013-01-31 00:12:20 +00:00
parent ee1841cdda
commit f2335dcb17

View File

@ -665,8 +665,7 @@ Value *llvm::SimplifyAddInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
/// no constant offsets applied.
static Constant *stripAndComputeConstantOffsets(const DataLayout &TD,
Value *&V) {
if (!V->getType()->isPointerTy())
return 0;
assert(V->getType()->isPointerTy());
unsigned IntPtrWidth = TD.getPointerSizeInBits();
APInt Offset = APInt::getNullValue(IntPtrWidth);
@ -701,11 +700,7 @@ static Constant *stripAndComputeConstantOffsets(const DataLayout &TD,
static Constant *computePointerDifference(const DataLayout &TD,
Value *LHS, Value *RHS) {
Constant *LHSOffset = stripAndComputeConstantOffsets(TD, LHS);
if (!LHSOffset)
return 0;
Constant *RHSOffset = stripAndComputeConstantOffsets(TD, RHS);
if (!RHSOffset)
return 0;
// If LHS and RHS are not related via constant offsets to the same base
// value, there is nothing we can do here.
@ -1710,11 +1705,7 @@ static Constant *computePointerICmp(const DataLayout &TD,
}
Constant *LHSOffset = stripAndComputeConstantOffsets(TD, LHS);
if (!LHSOffset)
return 0;
Constant *RHSOffset = stripAndComputeConstantOffsets(TD, RHS);
if (!RHSOffset)
return 0;
// If LHS and RHS are not related via constant offsets to the same base
// value, there is nothing we can do here.