[llvm] a81e070 - [NFC][SCEV] `getBlockDisposition()`: deduplicate handling
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 22 06:49:11 PST 2023
Author: Roman Lebedev
Date: 2023-01-22T17:40:52+03:00
New Revision: a81e0700616f6f7bc98a086d0304158e3da94ca1
URL: https://github.com/llvm/llvm-project/commit/a81e0700616f6f7bc98a086d0304158e3da94ca1
DIFF: https://github.com/llvm/llvm-project/commit/a81e0700616f6f7bc98a086d0304158e3da94ca1.diff
LOG: [NFC][SCEV] `getBlockDisposition()`: deduplicate handling
Added:
Modified:
llvm/lib/Analysis/ScalarEvolution.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index f4fcaa9ecf84..3e2cdb3e66b3 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -13740,11 +13740,6 @@ ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) {
switch (S->getSCEVType()) {
case scConstant:
return ProperlyDominatesBlock;
- case scPtrToInt:
- case scTruncate:
- case scZeroExtend:
- case scSignExtend:
- return getBlockDisposition(cast<SCEVCastExpr>(S)->getOperand(), BB);
case scAddRecExpr: {
// This uses a "dominates" query instead of "properly dominates" query
// to test for proper dominance too, because the instruction which
@@ -13757,16 +13752,20 @@ ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) {
// Fall through into SCEVNAryExpr handling.
[[fallthrough]];
}
+ case scTruncate:
+ case scZeroExtend:
+ case scSignExtend:
+ case scPtrToInt:
case scAddExpr:
case scMulExpr:
+ case scUDivExpr:
case scUMaxExpr:
case scSMaxExpr:
case scUMinExpr:
case scSMinExpr:
case scSequentialUMinExpr: {
- const SCEVNAryExpr *NAry = cast<SCEVNAryExpr>(S);
bool Proper = true;
- for (const SCEV *NAryOp : NAry->operands()) {
+ for (const SCEV *NAryOp : S->operands()) {
BlockDisposition D = getBlockDisposition(NAryOp, BB);
if (D == DoesNotDominateBlock)
return DoesNotDominateBlock;
@@ -13775,18 +13774,6 @@ ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) {
}
return Proper ? ProperlyDominatesBlock : DominatesBlock;
}
- case scUDivExpr: {
- const SCEVUDivExpr *UDiv = cast<SCEVUDivExpr>(S);
- const SCEV *LHS = UDiv->getLHS(), *RHS = UDiv->getRHS();
- BlockDisposition LD = getBlockDisposition(LHS, BB);
- if (LD == DoesNotDominateBlock)
- return DoesNotDominateBlock;
- BlockDisposition RD = getBlockDisposition(RHS, BB);
- if (RD == DoesNotDominateBlock)
- return DoesNotDominateBlock;
- return (LD == ProperlyDominatesBlock && RD == ProperlyDominatesBlock) ?
- ProperlyDominatesBlock : DominatesBlock;
- }
case scUnknown:
if (Instruction *I =
dyn_cast<Instruction>(cast<SCEVUnknown>(S)->getValue())) {
More information about the llvm-commits
mailing list