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

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 15 12:57:26 PST 2024


================
@@ -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)),
----------------
nikic wrote:

This doesn't make sense. NW is only meaningful on addrecs, while you're applying it to a mul.

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


More information about the llvm-commits mailing list