diff options
author | v01dXYZ <14996868+v01dXYZ@users.noreply.github.com> | 2024-07-09 09:14:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-09 09:14:33 +0200 |
commit | cff8d716bdf017a2af8eb8623257fd33ee43f30e (patch) | |
tree | ff1c0ff9bc2edd8b1f578a1f50d108a18668353c /llvm/lib/Analysis/ScalarEvolution.cpp | |
parent | be7239e5a60927f5b4932f995dc4b57423ea8534 (diff) | |
download | llvm-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.cpp | 2 |
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 = |