[llvm] [ScalarEvolutionExpander] Don't drop nowrap flags on addrec expansion (PR #78199)

William Moses via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 15 10:29:29 PST 2024


https://github.com/wsmoses updated https://github.com/llvm/llvm-project/pull/78199

>From ba0a556a3d3079181ce42404bdf149a4f96d12e7 Mon Sep 17 00:00:00 2001
From: "William S. Moses" <gh at wsmoses.com>
Date: Mon, 15 Jan 2024 13:20:15 -0500
Subject: [PATCH] [ScalarEvolutionExpander] Don't drop nowrap flags on addrec
 expansion

---
 llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp b/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
index a1d7f0f9ba0f74..17a43c80c39b05 100644
--- a/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
+++ b/llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
@@ -1250,11 +1250,11 @@ Value *SCEVExpander::visitAddRecExpr(const SCEVAddRecExpr *S) {
 
   // If this is a simple linear addrec, emit it now as a special case.
   if (S->isAffine())    // {0,+,F} --> i*F
-    return
-      expand(SE.getTruncateOrNoop(
-        SE.getMulExpr(SE.getUnknown(CanonicalIV),
-                      SE.getNoopOrAnyExtend(S->getOperand(1),
-                                            CanonicalIV->getType())),
+    return expand(SE.getTruncateOrNoop(
+        SE.getMulExpr(
+            SE.getUnknown(CanonicalIV),
+            SE.getNoopOrAnyExtend(S->getOperand(1), CanonicalIV->getType()),
+            S->getNoWrapFlags(SCEV::FlagNW)),
         Ty));
 
   // If this is a chain of recurrences, turn it into a closed form, using the



More information about the llvm-commits mailing list