From 7d0ee794926fbb258a5383bf6795f5bd9dd02dad Mon Sep 17 00:00:00 2001 From: Krish Gupta Date: Tue, 7 Oct 2025 12:55:14 +0530 Subject: [PATCH] [flang][OpenMP] Add test: named COMMON + member with firstprivate+lastprivate is valid Gate test to OpenMP 5.1+ and add explanatory comment per review feedback. --- .../Semantics/OpenMP/omp-common-fp-lp.f90 | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 flang/test/Semantics/OpenMP/omp-common-fp-lp.f90 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..c995aa2c83503 --- /dev/null +++ b/flang/test/Semantics/OpenMP/omp-common-fp-lp.f90 @@ -0,0 +1,20 @@ +! RUN: %flang_fc1 -fopenmp -fopenmp-version=51 -fsyntax-only %s 2>&1 | FileCheck %s --allow-empty +! CHECK-NOT: error: + +! 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