[llvm] [SCEV] Improve code in SCEVLoopGuardRewriter (NFC) (PR #139257)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Sun May 11 02:55:39 PDT 2025
https://github.com/artagnon updated https://github.com/llvm/llvm-project/pull/139257
>From 95dc5b8bc77128fd985b80b50ef887bf56764dfb Mon Sep 17 00:00:00 2001
From: Ramkumar Ramachandra <ramkumar.ramachandra at codasip.com>
Date: Fri, 9 May 2025 13:54:12 +0100
Subject: [PATCH 1/2] [SCEV] Improve code in SCEVLoopGuardRewriter (NFC)
Prefer DenseMap::lookup over DenseMap::find.
---
llvm/lib/Analysis/ScalarEvolution.cpp | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 3f9614254ae7a..38071c0714e82 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -15867,8 +15867,8 @@ const SCEV *ScalarEvolution::LoopGuards::rewrite(const SCEV *Expr) const {
}
const SCEV *visitZeroExtendExpr(const SCEVZeroExtendExpr *Expr) {
- auto I = Map.find(Expr);
- if (I == Map.end()) {
+ const SCEV *S = Map.lookup(Expr);
+ if (!S) {
// If we didn't find the extact ZExt expr in the map, check if there's
// an entry for a smaller ZExt we can use instead.
Type *Ty = Expr->getType();
@@ -15887,29 +15887,29 @@ const SCEV *ScalarEvolution::LoopGuards::rewrite(const SCEV *Expr) const {
return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitZeroExtendExpr(
Expr);
}
- return I->second;
+ return S;
}
const SCEV *visitSignExtendExpr(const SCEVSignExtendExpr *Expr) {
- auto I = Map.find(Expr);
- if (I == Map.end())
+ const SCEV *S = Map.lookup(Expr);
+ if (!S)
return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitSignExtendExpr(
Expr);
- return I->second;
+ return S;
}
const SCEV *visitUMinExpr(const SCEVUMinExpr *Expr) {
- auto I = Map.find(Expr);
- if (I == Map.end())
+ const SCEV *S = Map.lookup(Expr);
+ if (!S)
return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitUMinExpr(Expr);
- return I->second;
+ return S;
}
const SCEV *visitSMinExpr(const SCEVSMinExpr *Expr) {
- auto I = Map.find(Expr);
- if (I == Map.end())
+ const SCEV *S = Map.lookup(Expr);
+ if (!S)
return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitSMinExpr(Expr);
- return I->second;
+ return S;
}
const SCEV *visitAddExpr(const SCEVAddExpr *Expr) {
>From 1d6841ae7b51edcc65a101ebc9bc4bfbfc9adcdb Mon Sep 17 00:00:00 2001
From: Ramkumar Ramachandra <ramkumar.ramachandra at codasip.com>
Date: Sun, 11 May 2025 10:43:29 +0100
Subject: [PATCH 2/2] [SCEV] Fix nit
---
llvm/lib/Analysis/ScalarEvolution.cpp | 60 +++++++++++++--------------
1 file changed, 28 insertions(+), 32 deletions(-)
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 38071c0714e82..69714a112310e 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -15867,49 +15867,45 @@ const SCEV *ScalarEvolution::LoopGuards::rewrite(const SCEV *Expr) const {
}
const SCEV *visitZeroExtendExpr(const SCEVZeroExtendExpr *Expr) {
- const SCEV *S = Map.lookup(Expr);
- if (!S) {
- // If we didn't find the extact ZExt expr in the map, check if there's
- // an entry for a smaller ZExt we can use instead.
- Type *Ty = Expr->getType();
- const SCEV *Op = Expr->getOperand(0);
- unsigned Bitwidth = Ty->getScalarSizeInBits() / 2;
- while (Bitwidth % 8 == 0 && Bitwidth >= 8 &&
- Bitwidth > Op->getType()->getScalarSizeInBits()) {
- Type *NarrowTy = IntegerType::get(SE.getContext(), Bitwidth);
- auto *NarrowExt = SE.getZeroExtendExpr(Op, NarrowTy);
- auto I = Map.find(NarrowExt);
- if (I != Map.end())
- return SE.getZeroExtendExpr(I->second, Ty);
- Bitwidth = Bitwidth / 2;
- }
+ if (const SCEV *S = Map.lookup(Expr))
+ return S;
- return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitZeroExtendExpr(
- Expr);
+ // If we didn't find the extact ZExt expr in the map, check if there's
+ // an entry for a smaller ZExt we can use instead.
+ Type *Ty = Expr->getType();
+ const SCEV *Op = Expr->getOperand(0);
+ unsigned Bitwidth = Ty->getScalarSizeInBits() / 2;
+ while (Bitwidth % 8 == 0 && Bitwidth >= 8 &&
+ Bitwidth > Op->getType()->getScalarSizeInBits()) {
+ Type *NarrowTy = IntegerType::get(SE.getContext(), Bitwidth);
+ auto *NarrowExt = SE.getZeroExtendExpr(Op, NarrowTy);
+ auto I = Map.find(NarrowExt);
+ if (I != Map.end())
+ return SE.getZeroExtendExpr(I->second, Ty);
+ Bitwidth = Bitwidth / 2;
}
- return S;
+
+ return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitZeroExtendExpr(
+ Expr);
}
const SCEV *visitSignExtendExpr(const SCEVSignExtendExpr *Expr) {
- const SCEV *S = Map.lookup(Expr);
- if (!S)
- return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitSignExtendExpr(
- Expr);
- return S;
+ if (const SCEV *S = Map.lookup(Expr))
+ return S;
+ return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitSignExtendExpr(
+ Expr);
}
const SCEV *visitUMinExpr(const SCEVUMinExpr *Expr) {
- const SCEV *S = Map.lookup(Expr);
- if (!S)
- return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitUMinExpr(Expr);
- return S;
+ if (const SCEV *S = Map.lookup(Expr))
+ return S;
+ return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitUMinExpr(Expr);
}
const SCEV *visitSMinExpr(const SCEVSMinExpr *Expr) {
- const SCEV *S = Map.lookup(Expr);
- if (!S)
- return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitSMinExpr(Expr);
- return S;
+ if (const SCEV *S = Map.lookup(Expr))
+ return S;
+ return SCEVRewriteVisitor<SCEVLoopGuardRewriter>::visitSMinExpr(Expr);
}
const SCEV *visitAddExpr(const SCEVAddExpr *Expr) {
More information about the llvm-commits
mailing list