summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
index 7455a02b06d..29e2bc32dfb 100644
--- a/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
@@ -2117,9 +2117,10 @@ CleanupAndExit:
Value *CmpA = Builder.CreateICmpULT(LowA, HighA);
Value *Cond = CmpA;
- // Check for distance between pointers.
- Value *Dist = Builder.CreateSub(HighA, LowA);
- Value *CmpD = Builder.CreateICmpSLT(NumBytes, Dist);
+ // Check for distance between pointers. Since the case LowA < HighA
+ // is checked for above, assume LowA >= HighA.
+ Value *Dist = Builder.CreateSub(LowA, HighA);
+ Value *CmpD = Builder.CreateICmpSLE(NumBytes, Dist);
Value *CmpEither = Builder.CreateOr(Cond, CmpD);
Cond = CmpEither;
OpenPOWER on IntegriCloud