[flang-commits] [flang] [flang][OpenMP] Rename GetRequiredCount to GetMinimumSequenceCount (PR #191465)

via flang-commits flang-commits at lists.llvm.org
Fri Apr 10 09:56:23 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-openmp

Author: Krzysztof Parzyszek (kparzysz)

<details>
<summary>Changes</summary>

The new name better describes the calculated value.

Also adjust a diagnostic message to say that *at least* N loops are expected in the sequence.

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


5 Files Affected:

- (modified) flang/include/flang/Semantics/openmp-utils.h (+5-4) 
- (modified) flang/lib/Semantics/check-omp-loop.cpp (+2-2) 
- (modified) flang/lib/Semantics/openmp-utils.cpp (+5-5) 
- (modified) flang/test/Semantics/OpenMP/fuse1.f90 (+1-1) 
- (modified) flang/test/Semantics/OpenMP/loop-transformation-clauses01.f90 (+1-1) 


``````````diff
diff --git a/flang/include/flang/Semantics/openmp-utils.h b/flang/include/flang/Semantics/openmp-utils.h
index fad6f0db34f3a..13c05739041e0 100644
--- a/flang/include/flang/Semantics/openmp-utils.h
+++ b/flang/include/flang/Semantics/openmp-utils.h
@@ -229,11 +229,12 @@ WithReason<int64_t> GetRectangularNestDepthWithReason(
     const parser::OmpDirectiveSpecification &spec, unsigned version,
     SemanticsContext *semaCtx = nullptr);
 
-// Count the required loop count from range. If count == -1, return -1,
-// indicating all loops in the sequence.
-std::optional<int64_t> GetRequiredCount(
+/// Calculate the minimum length of a sequence that contains the specified
+/// range. If the range's count is -1, return -1 indicating all loops in the
+/// sequence.
+std::optional<int64_t> GetMinimumSequenceCount(
     std::optional<int64_t> first, std::optional<int64_t> count);
-std::optional<int64_t> GetRequiredCount(
+std::optional<int64_t> GetMinimumSequenceCount(
     std::optional<std::pair<int64_t, int64_t>> range);
 
 struct LoopSequence {
diff --git a/flang/lib/Semantics/check-omp-loop.cpp b/flang/lib/Semantics/check-omp-loop.cpp
index 3fc9f4c97b411..1299686a99ad2 100644
--- a/flang/lib/Semantics/check-omp-loop.cpp
+++ b/flang/lib/Semantics/check-omp-loop.cpp
@@ -364,10 +364,10 @@ void OmpStructureChecker::CheckNestedConstruct(
         auto &msg{context_.Say(beginSource, MsgRequiresCanonical, "sequence")};
         whyNot.AttachTo(msg);
       }
-      if (auto requiredCount{GetRequiredCount(needRange.value)}) {
+      if (auto requiredCount{GetMinimumSequenceCount(needRange.value)}) {
         if (*requiredCount > 0 && haveLength.value < *requiredCount) {
           auto &msg{context_.Say(beginSource,
-              "This construct requires a sequence of %" PRId64
+              "This construct requires a sequence of at least %" PRId64
               " loops, but the loop sequence has a length of %" PRId64
               ""_err_en_US,
               *requiredCount, *haveLength.value)};
diff --git a/flang/lib/Semantics/openmp-utils.cpp b/flang/lib/Semantics/openmp-utils.cpp
index 01f5df9b67898..218f84cda75f8 100644
--- a/flang/lib/Semantics/openmp-utils.cpp
+++ b/flang/lib/Semantics/openmp-utils.cpp
@@ -1139,7 +1139,7 @@ WithReason<int64_t> GetRectangularNestDepthWithReason(
   return {0, Reason()};
 }
 
-std::optional<int64_t> GetRequiredCount(
+std::optional<int64_t> GetMinimumSequenceCount(
     std::optional<int64_t> first, std::optional<int64_t> count) {
   if (first && count && *first > 0) {
     if (*count > 0) {
@@ -1151,12 +1151,12 @@ std::optional<int64_t> GetRequiredCount(
   return std::nullopt;
 }
 
-std::optional<int64_t> GetRequiredCount(
+std::optional<int64_t> GetMinimumSequenceCount(
     std::optional<std::pair<int64_t, int64_t>> range) {
   if (range) {
-    return GetRequiredCount(range->first, range->second);
+    return GetMinimumSequenceCount(range->first, range->second);
   }
-  return GetRequiredCount(std::nullopt, std::nullopt);
+  return GetMinimumSequenceCount(std::nullopt, std::nullopt);
 }
 
 #ifdef EXPENSIVE_CHECKS
@@ -1482,7 +1482,7 @@ LoopSequence::Depth LoopSequence::calculateDepths() const {
       if (value && nestedLength.value) {
         auto range{
             GetAffectedLoopRangeWithReason(beginSpec, version_, semaCtx_)};
-        if (auto required{GetRequiredCount(range.value)}) {
+        if (auto required{GetMinimumSequenceCount(range.value)}) {
           if (*required == -1 || *required == *nestedLength.value) {
             return Depth{value, value};
           }
diff --git a/flang/test/Semantics/OpenMP/fuse1.f90 b/flang/test/Semantics/OpenMP/fuse1.f90
index 8c6576b74a247..40ac1a75a0bb7 100644
--- a/flang/test/Semantics/OpenMP/fuse1.f90
+++ b/flang/test/Semantics/OpenMP/fuse1.f90
@@ -7,7 +7,7 @@ subroutine f
   integer :: i
 
   !$omp do
-  !ERROR: This construct requires a sequence of 2 loops, but the loop sequence has a length of 1
+  !ERROR: This construct requires a sequence of at least 2 loops, but the loop sequence has a length of 1
   !BECAUSE: LOOPRANGE clause was specified with a count of 2 starting at loop 1
   !$omp fuse looprange(1, 2)
   !BECAUSE: LOOPRANGE clause was not specified, the entire loop sequence is assumed
diff --git a/flang/test/Semantics/OpenMP/loop-transformation-clauses01.f90 b/flang/test/Semantics/OpenMP/loop-transformation-clauses01.f90
index 8e7398fdaaecf..7ac513add4b16 100644
--- a/flang/test/Semantics/OpenMP/loop-transformation-clauses01.f90
+++ b/flang/test/Semantics/OpenMP/loop-transformation-clauses01.f90
@@ -20,7 +20,7 @@ subroutine loop_transformation_construct1
   end do
   !$omp end fuse
 
-  !ERROR: This construct requires a sequence of 6 loops, but the loop sequence has a length of 2
+  !ERROR: This construct requires a sequence of at least 6 loops, but the loop sequence has a length of 2
   !BECAUSE: LOOPRANGE clause was specified with a count of 2 starting at loop 5
   !$omp fuse looprange(5,2)
   do x = 1, i

``````````

</details>


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


More information about the flang-commits mailing list