[flang-commits] [flang] 69c4e17 - [Flang][OpenMP] Add semantic tests for threadprivate variables with host assoc (#134680)
via flang-commits
flang-commits at lists.llvm.org
Tue Apr 8 04:22:09 PDT 2025
Author: Michael Klemm
Date: 2025-04-08T13:22:05+02:00
New Revision: 69c4e172d9838254f4e8ce4c78de9ecfbbabcae2
URL: https://github.com/llvm/llvm-project/commit/69c4e172d9838254f4e8ce4c78de9ecfbbabcae2
DIFF: https://github.com/llvm/llvm-project/commit/69c4e172d9838254f4e8ce4c78de9ecfbbabcae2.diff
LOG: [Flang][OpenMP] Add semantic tests for threadprivate variables with host assoc (#134680)
Added:
flang/test/Semantics/OpenMP/threadprivate09.f90
Modified:
flang/test/Semantics/OpenMP/default-none.f90
Removed:
################################################################################
diff --git a/flang/test/Semantics/OpenMP/default-none.f90 b/flang/test/Semantics/OpenMP/default-none.f90
index 761c2385466a0..a56657ccee467 100644
--- a/flang/test/Semantics/OpenMP/default-none.f90
+++ b/flang/test/Semantics/OpenMP/default-none.f90
@@ -58,3 +58,18 @@ subroutine sub( aaa)
ccc= aaa(ip)
end do
end subroutine sub
+
+! Test that threadprivate variables with host association
+! have a predetermined DSA
+subroutine host_assoc()
+ integer, save :: i
+ !$omp threadprivate(i)
+ real, save :: r
+ !$omp threadprivate(r)
+contains
+ subroutine internal()
+!$omp parallel default(none)
+ print *, i, r
+!$omp end parallel
+ end subroutine internal
+end subroutine host_assoc
diff --git a/flang/test/Semantics/OpenMP/threadprivate09.f90 b/flang/test/Semantics/OpenMP/threadprivate09.f90
new file mode 100644
index 0000000000000..64fe048fa3e60
--- /dev/null
+++ b/flang/test/Semantics/OpenMP/threadprivate09.f90
@@ -0,0 +1,33 @@
+! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
+! OpenMP Version 5.1
+! Check OpenMP construct validity for the following directives:
+! 2.21.2 Threadprivate Directive
+
+subroutine host_assoc_fail()
+ integer :: i
+ ! ERROR: A variable that appears in a THREADPRIVATE directive must be declared in the scope of a module or have the SAVE attribute, either explicitly or implicitly
+ !$omp threadprivate(i)
+ real :: r
+ ! ERROR: A variable that appears in a THREADPRIVATE directive must be declared in the scope of a module or have the SAVE attribute, either explicitly or implicitly
+ !$omp threadprivate(r)
+contains
+ subroutine internal()
+!$omp parallel
+ print *, i, r
+!$omp end parallel
+ end subroutine internal
+end subroutine host_assoc_fail
+
+! This sub-test is not supposed to emit a compiler error.
+subroutine host_assoc()
+ integer, save :: i
+ !$omp threadprivate(i)
+ real, save :: r
+ !$omp threadprivate(r)
+contains
+ subroutine internal()
+!$omp parallel
+ print *, i, r
+!$omp end parallel
+ end subroutine internal
+end subroutine host_assoc
More information about the flang-commits
mailing list