[llvm] [DA] Remove `DependenceInfo::unifySubscriptType` (PR #181607)
Ryotaro Kasuga via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 18 04:55:24 PST 2026
https://github.com/kasuga-fj updated https://github.com/llvm/llvm-project/pull/181607
>From e16fde12b6f35efad5ca1fe260cfd1ccba0a3224 Mon Sep 17 00:00:00 2001
From: Ryotaro Kasuga <kasuga.ryotaro at fujitsu.com>
Date: Mon, 16 Feb 2026 02:38:43 +0000
Subject: [PATCH] [DA] Remove `DependenceInfo::unifySubscriptType`
---
.../llvm/Analysis/DependenceAnalysis.h | 6 --
llvm/lib/Analysis/DependenceAnalysis.cpp | 57 ++-----------------
2 files changed, 4 insertions(+), 59 deletions(-)
diff --git a/llvm/include/llvm/Analysis/DependenceAnalysis.h b/llvm/include/llvm/Analysis/DependenceAnalysis.h
index 528478ced1d9f..d4167bba6f1ac 100644
--- a/llvm/include/llvm/Analysis/DependenceAnalysis.h
+++ b/llvm/include/llvm/Analysis/DependenceAnalysis.h
@@ -472,12 +472,6 @@ class DependenceInfo {
/// in LoopNest.
bool isLoopInvariant(const SCEV *Expression, const Loop *LoopNest) const;
- /// Makes sure all subscript pairs share the same integer type by
- /// sign-extending as necessary.
- /// Sign-extending a subscript is safe because getelementptr assumes the
- /// array subscripts are signed.
- void unifySubscriptType(ArrayRef<Subscript *> Pairs);
-
/// collectCommonLoops - Finds the set of loops from the LoopNest that
/// have a level <= CommonLevels and are referred to by the SCEV Expression.
void collectCommonLoops(const SCEV *Expression, const Loop *LoopNest,
diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index f9eec7dfec169..465e745ec0367 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -1070,58 +1070,6 @@ void DependenceInfo::collectCommonLoops(const SCEV *Expression,
}
}
-void DependenceInfo::unifySubscriptType(ArrayRef<Subscript *> Pairs) {
-
- unsigned widestWidthSeen = 0;
- Type *widestType;
-
- // Go through each pair and find the widest bit to which we need
- // to extend all of them.
- for (Subscript *Pair : Pairs) {
- const SCEV *Src = Pair->Src;
- const SCEV *Dst = Pair->Dst;
- IntegerType *SrcTy = dyn_cast<IntegerType>(Src->getType());
- IntegerType *DstTy = dyn_cast<IntegerType>(Dst->getType());
- if (SrcTy == nullptr || DstTy == nullptr) {
- assert(SrcTy == DstTy &&
- "This function only unify integer types and "
- "expect Src and Dst share the same type otherwise.");
- continue;
- }
- if (SrcTy->getBitWidth() > widestWidthSeen) {
- widestWidthSeen = SrcTy->getBitWidth();
- widestType = SrcTy;
- }
- if (DstTy->getBitWidth() > widestWidthSeen) {
- widestWidthSeen = DstTy->getBitWidth();
- widestType = DstTy;
- }
- }
-
- assert(widestWidthSeen > 0);
-
- // Now extend each pair to the widest seen.
- for (Subscript *Pair : Pairs) {
- const SCEV *Src = Pair->Src;
- const SCEV *Dst = Pair->Dst;
- IntegerType *SrcTy = dyn_cast<IntegerType>(Src->getType());
- IntegerType *DstTy = dyn_cast<IntegerType>(Dst->getType());
- if (SrcTy == nullptr || DstTy == nullptr) {
- assert(SrcTy == DstTy &&
- "This function only unify integer types and "
- "expect Src and Dst share the same type otherwise.");
- continue;
- }
- if (SrcTy->getBitWidth() < widestWidthSeen)
- // Sign-extend Src to widestType
- Pair->Src = SE->getSignExtendExpr(Src, widestType);
- if (DstTy->getBitWidth() < widestWidthSeen) {
- // Sign-extend Dst to widestType
- Pair->Dst = SE->getSignExtendExpr(Dst, widestType);
- }
- }
-}
-
// Examine the scev and return true iff it's affine.
// Collect any loops mentioned in the set of "Loops".
bool DependenceInfo::checkSubscript(const SCEV *Expr, const Loop *LoopNest,
@@ -3263,7 +3211,10 @@ bool DependenceInfo::tryDelinearize(Instruction *Src, Instruction *Dst,
for (int I = 0; I < Size; ++I) {
Pair[I].Src = SrcSubscripts[I];
Pair[I].Dst = DstSubscripts[I];
- unifySubscriptType(&Pair[I]);
+
+ // TODO: Is this check necessary?
+ if (Pair[I].Src->getType() != Pair[I].Dst->getType())
+ return false;
if (EnableMonotonicityCheck) {
if (MonChecker.checkMonotonicity(Pair[I].Src, OutermostLoop).isUnknown())
More information about the llvm-commits
mailing list