aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/DependenceAnalysis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Analysis/DependenceAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/DependenceAnalysis.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index a572eef..84ee8c0 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -1131,9 +1131,14 @@ bool DependenceInfo::haveSameSD(const Loop *SrcLoop,
if (SE->hasLoopInvariantBackedgeTakenCount(DstLoop))
DstUP = SE->getBackedgeTakenCount(DstLoop);
- if (SrcUB != nullptr && DstUP != nullptr &&
- SE->isKnownPredicate(ICmpInst::ICMP_EQ, SrcUB, DstUP))
- return true;
+ if (SrcUB != nullptr && DstUP != nullptr) {
+ Type *WiderType = SE->getWiderType(SrcUB->getType(), DstUP->getType());
+ SrcUB = SE->getNoopOrZeroExtend(SrcUB, WiderType);
+ DstUP = SE->getNoopOrZeroExtend(DstUP, WiderType);
+
+ if (SE->isKnownPredicate(ICmpInst::ICMP_EQ, SrcUB, DstUP))
+ return true;
+ }
return false;
}