aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ScalarEvolution.cpp
diff options
context:
space:
mode:
authorv01dXYZ <14996868+v01dXYZ@users.noreply.github.com>2024-07-09 09:14:33 +0200
committerGitHub <noreply@github.com>2024-07-09 09:14:33 +0200
commitcff8d716bdf017a2af8eb8623257fd33ee43f30e (patch)
treeff1c0ff9bc2edd8b1f578a1f50d108a18668353c /llvm/lib/Analysis/ScalarEvolution.cpp
parentbe7239e5a60927f5b4932f995dc4b57423ea8534 (diff)
downloadllvm-cff8d716bdf017a2af8eb8623257fd33ee43f30e.zip
llvm-cff8d716bdf017a2af8eb8623257fd33ee43f30e.tar.gz
llvm-cff8d716bdf017a2af8eb8623257fd33ee43f30e.tar.bz2
[SCEV] forgetValue: support (with-overflow-inst op0, op1) (#98015)
The use-def walk in forgetValue() was skipping instructions with non-SCEVable types. However, SCEV may look past with.overflow intrinsics returning aggregates. Fixes #97586.
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r--llvm/lib/Analysis/ScalarEvolution.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 430e1c6..51cffac 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -8412,7 +8412,7 @@ void ScalarEvolution::visitAndClearUsers(
SmallVectorImpl<const SCEV *> &ToForget) {
while (!Worklist.empty()) {
Instruction *I = Worklist.pop_back_val();
- if (!isSCEVable(I->getType()))
+ if (!isSCEVable(I->getType()) && !isa<WithOverflowInst>(I))
continue;
ValueExprMapType::iterator It =