[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