aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2020-10-05 13:45:27 +0100
committerSimon Pilgrim <llvm-dev@redking.me.uk>2020-10-05 13:45:27 +0100
commit2cd7b0e1305a71f4f9d89f25b140da641f2693f4 (patch)
tree8306aa104c7fd0c25d32a5fcf9c941d6c97e41bc /llvm/lib/Analysis/ValueTracking.cpp
parent007dd12d546814977519b33ca38b1cc8b31fee26 (diff)
downloadllvm-2cd7b0e1305a71f4f9d89f25b140da641f2693f4.zip
llvm-2cd7b0e1305a71f4f9d89f25b140da641f2693f4.tar.gz
llvm-2cd7b0e1305a71f4f9d89f25b140da641f2693f4.tar.bz2
[ValueTracking] canCreateUndefOrPoison - use APInt to check bounds instead of getZExtValue().
Fixes OSS Fuzz #26135
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 11eb5f3..e78beb04 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -4813,7 +4813,7 @@ static bool canCreateUndefOrPoison(const Operator *Op, bool PoisonOnly) {
bool Safe = llvm::all_of(ShiftAmounts, [](Constant *C) {
auto *CI = dyn_cast<ConstantInt>(C);
- return CI && CI->getZExtValue() < C->getType()->getIntegerBitWidth();
+ return CI && CI->getValue().ult(C->getType()->getIntegerBitWidth());
});
return !Safe;
}
@@ -4836,8 +4836,7 @@ static bool canCreateUndefOrPoison(const Operator *Op, bool PoisonOnly) {
auto *VTy = cast<VectorType>(Op->getOperand(0)->getType());
unsigned IdxOp = Op->getOpcode() == Instruction::InsertElement ? 2 : 1;
auto *Idx = dyn_cast<ConstantInt>(Op->getOperand(IdxOp));
- if (!Idx ||
- Idx->getZExtValue() >= VTy->getElementCount().getKnownMinValue())
+ if (!Idx || Idx->getValue().uge(VTy->getElementCount().getKnownMinValue()))
return true;
return false;
}