Author: Amit Tiwari
Date: 2026-09-21T12:04:23+05:30
New Revision: c64686f1f0cce966ac00480dc4d1a91702536145

URL: 
https://github.com/llvm/llvm-project/commit/c64686f1f0cce966ac00480dc4d1a91702536145
DIFF: 
https://github.com/llvm/llvm-project/commit/c64686f1f0cce966ac00480dc4d1a91702536145.diff

LOG: [Clang][OpenMP][NFC] Use `getLimitedValue` for loop transform counts  
(#224940)

Use `getLimitedValue()` when reading integer counts for `unroll, split,
interchange, fuse` transforms.

It avoids direct `getZExtValue()` calls and follows the existing OpenMP
count handling style.

Added: 
    

Modified: 
    clang/lib/CodeGen/CGStmtOpenMP.cpp
    clang/lib/Sema/SemaOpenMP.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/CodeGen/CGStmtOpenMP.cpp 
b/clang/lib/CodeGen/CGStmtOpenMP.cpp
index 7c3b30c6cedc0..1a805b05b401e 100644
--- a/clang/lib/CodeGen/CGStmtOpenMP.cpp
+++ b/clang/lib/CodeGen/CGStmtOpenMP.cpp
@@ -3281,7 +3281,8 @@ void CodeGenFunction::EmitOMPUnrollDirective(const 
OMPUnrollDirective &S) {
     } else if (auto *PartialClause = S.getSingleClause<OMPPartialClause>()) {
       uint64_t Factor = 0;
       if (Expr *FactorExpr = PartialClause->getFactor()) {
-        Factor = 
FactorExpr->EvaluateKnownConstInt(getContext()).getZExtValue();
+        Factor =
+            FactorExpr->EvaluateKnownConstInt(getContext()).getLimitedValue();
         assert(Factor >= 1 && "Only positive factors are valid");
       }
       OMPBuilder.unrollLoopPartial(DL, CLI, Factor,
@@ -3310,7 +3311,7 @@ void CodeGenFunction::EmitOMPUnrollDirective(const 
OMPUnrollDirective &S) {
   } else if (auto *PartialClause = S.getSingleClause<OMPPartialClause>()) {
     if (Expr *FactorExpr = PartialClause->getFactor()) {
       uint64_t Factor =
-          FactorExpr->EvaluateKnownConstInt(getContext()).getZExtValue();
+          FactorExpr->EvaluateKnownConstInt(getContext()).getLimitedValue();
       assert(Factor >= 1 && "Only positive factors are valid");
       LoopStack.setUnrollCount(Factor);
     }

diff  --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 6c46cd547592a..ae3d6653442d2 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -15940,7 +15940,7 @@ StmtResult 
SemaOpenMP::ActOnOpenMPUnrollDirective(ArrayRef<OMPClause *> Clauses,
   SourceLocation FactorLoc;
   if (Expr *FactorVal = PartialClause->getFactor();
       FactorVal && !FactorVal->containsErrors()) {
-    Factor = FactorVal->getIntegerConstantExpr(Context)->getZExtValue();
+    Factor = FactorVal->getIntegerConstantExpr(Context)->getLimitedValue();
     FactorLoc = FactorVal->getExprLoc();
   } else {
     // TODO: Use a better profitability model.
@@ -16366,7 +16366,7 @@ StmtResult 
SemaOpenMP::ActOnOpenMPSplitDirective(ArrayRef<OMPClause *> Clauses,
     if (!OptVal || OptVal->isNegative())
       return OMPSplitDirective::Create(Context, StartLoc, EndLoc, Clauses,
                                        NumLoops, AStmt, nullptr, nullptr);
-    CountValues[I] = OptVal->getZExtValue();
+    CountValues[I] = OptVal->getLimitedValue();
   }
 
   Expr *NumIterExpr = LoopHelper.NumIterations;
@@ -16566,7 +16566,7 @@ StmtResult SemaOpenMP::ActOnOpenMPInterchangeDirective(
           PermArg->getIntegerConstantExpr(Context);
       if (!PermCstExpr)
         continue;
-      uint64_t PermInt = PermCstExpr->getZExtValue();
+      uint64_t PermInt = PermCstExpr->getLimitedValue();
       assert(1 <= PermInt && PermInt <= NumLoops &&
              "Must be a permutation; diagnostic emitted in "
              "ActOnOpenMPPermutationClause");
@@ -16757,8 +16757,8 @@ StmtResult 
SemaOpenMP::ActOnOpenMPFuseDirective(ArrayRef<OMPClause *> Clauses,
                                                uint64_t &CountVal) {
     llvm::APSInt FirstInt = First->EvaluateKnownConstInt(Context);
     llvm::APSInt CountInt = Count->EvaluateKnownConstInt(Context);
-    FirstVal = FirstInt.getZExtValue();
-    CountVal = CountInt.getZExtValue();
+    FirstVal = FirstInt.getLimitedValue();
+    CountVal = CountInt.getLimitedValue();
   };
 
   // OpenMP [6.0, Restrictions]


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to