[flang-commits] [flang] [llvm] [mlir] [Flang][OpenMP] Add nsw flags to OMPIRBuilder loop IV arithmetic (PR #214165)

Kaviya Rajendiran via flang-commits flang-commits at lists.llvm.org
Fri Aug 7 04:03:57 PDT 2026


================
@@ -5807,9 +5807,18 @@ CanonicalLoopInfo *OpenMPIRBuilder::createLoopSkeleton(
   Builder.CreateBr(Latch);
 
   Builder.SetInsertPoint(Latch);
-  Value *Next = Builder.CreateAdd(IndVarPHI, ConstantInt::get(IndVarTy, 1),
-                                  "omp_" + Name + ".next", /*HasNUW=*/true,
-                                  /*HasNSW=*/Config.hasNoSignedWrap());
+  bool HasNSW = Config.hasNoSignedWrap();
+  if (HasNSW) {
+    if (auto *CI = dyn_cast<ConstantInt>(TripCount)) {
+      unsigned BitWidth = CI->getType()->getIntegerBitWidth();
+      APInt SignedMax = APInt::getSignedMaxValue(BitWidth);
+      if (CI->getValue().ugt(SignedMax))
+        HasNSW = false;
+    }
----------------
kaviya2510 wrote:

I agree your point on disallowing `nsw` for collapsed loops having dynamic bounds  and I had updated the changes as well. Could you please take a look at the recent commit?

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


More information about the flang-commits mailing list