llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Kevin Sala Penades (kevinsala)

<details>
<summary>Changes</summary>

The condition to update upper-bound of number of threads was inverted. We now 
update the upper-bound with any constant value even if it we already found a 
non-constant value.

Test to be added.

---
Full diff: https://github.com/llvm/llvm-project/pull/218589.diff


1 Files Affected:

- (modified) clang/lib/CodeGen/CGOpenMPRuntime.cpp (+8-7) 


``````````diff
diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp 
b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
index 4b8b1de973407..4f5eb2d7160da 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -6712,8 +6712,8 @@ static void getNumThreads(CodeGenFunction &CGF, const 
CapturedStmt *CS,
       if (NTExpr->isIntegerConstantExpr(CGF.getContext()))
         if (auto Constant = NTExpr->getIntegerConstantExpr(CGF.getContext()))
           UpperBound =
-              UpperBound
-                  ? Constant->getZExtValue()
+              (UpperBound <= 0)
+                  ? static_cast<int32_t>(Constant->getZExtValue())
                   : std::min(UpperBound,
                              static_cast<int32_t>(Constant->getZExtValue()));
       // If we haven't found a upper bound, remember we saw a thread limiting
@@ -6757,12 +6757,13 @@ const Expr 
*CGOpenMPRuntime::getNumThreadsExprForTargetDirective(
   const Expr **NTPtr = UpperBoundOnly ? nullptr : &NT;
 
   auto CheckForConstExpr = [&](const Expr *E, const Expr **EPtr) {
-    if (E->isIntegerConstantExpr(CGF.getContext())) {
+    if (E->isIntegerConstantExpr(CGF.getContext()))
       if (auto Constant = E->getIntegerConstantExpr(CGF.getContext()))
-        UpperBound = UpperBound ? Constant->getZExtValue()
-                                : std::min(UpperBound,
-                                           int32_t(Constant->getZExtValue()));
-    }
+        UpperBound =
+            (UpperBound <= 0)
+                ? static_cast<int32_t>(Constant->getZExtValue())
+                : std::min(UpperBound,
+                           static_cast<int32_t>(Constant->getZExtValue()));
     // If we haven't found a upper bound, remember we saw a thread limiting
     // clause.
     if (UpperBound == -1)

``````````

</details>


https://github.com/llvm/llvm-project/pull/218589
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to