diff options
author | Nikita Popov <npopov@redhat.com> | 2022-07-13 12:18:40 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-07-14 14:41:51 +0200 |
commit | dcf4b733ef8e8e876e55b85c0d67c9b32c4fde0e (patch) | |
tree | f512bf0ec980c9acabf782999bd76d029d387d63 /llvm/lib/Transforms/Utils/SimplifyIndVar.cpp | |
parent | 69b312cde428056186928a3c1b6ad84e45de0353 (diff) | |
download | llvm-dcf4b733ef8e8e876e55b85c0d67c9b32c4fde0e.zip llvm-dcf4b733ef8e8e876e55b85c0d67c9b32c4fde0e.tar.gz llvm-dcf4b733ef8e8e876e55b85c0d67c9b32c4fde0e.tar.bz2 |
[SCEVExpander] Make CanonicalMode handing in isSafeToExpand() more robust (PR50506)
isSafeToExpand() for addrecs depends on whether the SCEVExpander
will be used in CanonicalMode. At least one caller currently gets
this wrong, resulting in PR50506.
Fix this by a) making the CanonicalMode argument on the freestanding
functions required and b) adding member functions on SCEVExpander
that automatically take the SCEVExpander mode into account. We can
use the latter variant nearly everywhere, and thus make sure that
there is no chance of CanonicalMode mismatch.
Fixes https://github.com/llvm/llvm-project/issues/50506.
Differential Revision: https://reviews.llvm.org/D129630
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyIndVar.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyIndVar.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp b/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp index dde5ecc..0ede270 100644 --- a/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp @@ -660,7 +660,7 @@ bool SimplifyIndvar::replaceIVUserWithLoopInvariant(Instruction *I) { auto *IP = GetLoopInvariantInsertPosition(L, I); - if (!isSafeToExpandAt(S, IP, *SE)) { + if (!Rewriter.isSafeToExpandAt(S, IP)) { LLVM_DEBUG(dbgs() << "INDVARS: Can not replace IV user: " << *I << " with non-speculable loop invariant: " << *S << '\n'); return false; |