[flang-commits] [flang] [flang][OpenMP] Add semantics test: named COMMON + member with firstprivate+lastprivate is valid (PR #162234)
via flang-commits
flang-commits at lists.llvm.org
Wed Oct 15 12:46:11 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
@llvm/pr-subscribers-flang-openmp
Author: Krish Gupta (KrxGu)
<details>
<summary>Changes</summary>
This adds a positive semantics test showing that:
- A named COMMON block in a clause is equivalent to listing all explicit members.
- The same list item may appear in both firstprivate and lastprivate on the same construct.
The reporter example in #<!-- -->162033 therefore conforms to OpenMP and Flang is correct to accept it. This test documents and locks in that behavior to avoid regressions.
<img width="1606" height="350" alt="image" src="https://github.com/user-attachments/assets/0b464c58-b9cc-43e0-8d1f-1c5a5b993bf6" />
---
Full diff: https://github.com/llvm/llvm-project/pull/162234.diff
1 Files Affected:
- (added) flang/test/Semantics/OpenMP/omp-common-fp-lp.f90 (+21)
``````````diff
diff --git a/flang/test/Semantics/OpenMP/omp-common-fp-lp.f90 b/flang/test/Semantics/OpenMP/omp-common-fp-lp.f90
new file mode 100644
index 0000000000000..ed52e76ca62ce
--- /dev/null
+++ b/flang/test/Semantics/OpenMP/omp-common-fp-lp.f90
@@ -0,0 +1,21 @@
+! RUN: %flang_fc1 -fopenmp -fopenmp-version=51 -fsyntax-only %s 2>&1 | FileCheck %s --allow-empty
+! CHECK-NOT: error:
+! CHECK-NOT: warning:
+
+! Regression test for issue #162033.
+! Verify that a named COMMON block can appear in a data-sharing clause together
+! with one of its members in another clause on the same construct. This is valid
+! in OpenMP >= 5.1 because:
+! - A named COMMON in a clause is equivalent to listing all its explicit members
+! - A list item may appear in both FIRSTPRIVATE and LASTPRIVATE on the same directive
+! OpenMP 5.0 explicitly forbade this combination.
+
+subroutine sub1()
+ common /com/ j
+ j = 10
+!$omp parallel do firstprivate(j) lastprivate(/com/)
+ do i = 1, 10
+ j = j + 1
+ end do
+!$omp end parallel do
+end
``````````
</details>
https://github.com/llvm/llvm-project/pull/162234
More information about the flang-commits
mailing list