aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2023-01-22 17:15:16 +0300
committerRoman Lebedev <lebedev.ri@gmail.com>2023-01-22 17:40:52 +0300
commitc0081c13a0e4b6b12dcbfed8e3f24cb38f62f538 (patch)
treed843b2de2277295892724c7ea97492019ea4c8ae /llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
parenta81e0700616f6f7bc98a086d0304158e3da94ca1 (diff)
downloadllvm-c0081c13a0e4b6b12dcbfed8e3f24cb38f62f538.zip
llvm-c0081c13a0e4b6b12dcbfed8e3f24cb38f62f538.tar.gz
llvm-c0081c13a0e4b6b12dcbfed8e3f24cb38f62f538.tar.bz2
[NFC][SCEV] `getRelevantLoop()`: deduplicate handling
Diffstat (limited to 'llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp18
1 files changed, 4 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp b/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
index abb1496..5a0292a 100644
--- a/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
+++ b/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
@@ -684,32 +684,22 @@ const Loop *SCEVExpander::getRelevantLoop(const SCEV *S) {
case scTruncate:
case scZeroExtend:
case scSignExtend:
- case scPtrToInt: {
- const SCEVCastExpr *C = cast<SCEVCastExpr>(S);
- const Loop *Result = getRelevantLoop(C->getOperand());
- return RelevantLoops[C] = Result;
- }
- case scUDivExpr: {
- const SCEVUDivExpr *D = cast<SCEVUDivExpr>(S);
- const Loop *Result = PickMostRelevantLoop(
- getRelevantLoop(D->getLHS()), getRelevantLoop(D->getRHS()), SE.DT);
- return RelevantLoops[D] = Result;
- }
+ case scPtrToInt:
case scAddExpr:
case scMulExpr:
+ case scUDivExpr:
case scAddRecExpr:
case scUMaxExpr:
case scSMaxExpr:
case scUMinExpr:
case scSMinExpr:
case scSequentialUMinExpr: {
- const SCEVNAryExpr *N = cast<SCEVNAryExpr>(S);
const Loop *L = nullptr;
if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S))
L = AR->getLoop();
- for (const SCEV *Op : N->operands())
+ for (const SCEV *Op : S->operands())
L = PickMostRelevantLoop(L, getRelevantLoop(Op), SE.DT);
- return RelevantLoops[N] = L;
+ return RelevantLoops[S] = L;
}
case scUnknown: {
const SCEVUnknown *U = cast<SCEVUnknown>(S);