[flang-commits] [flang] 44d33f3 - [Flang][OpenMP] Do not consider procedure names for data-sharing
Kiran Chandramohan via flang-commits
flang-commits at lists.llvm.org
Thu Feb 9 10:33:21 PST 2023
Author: Kiran Chandramohan
Date: 2023-02-09T18:33:01Z
New Revision: 44d33f3aa30cf6ac3e3790859735a643b08de91b
URL: https://github.com/llvm/llvm-project/commit/44d33f3aa30cf6ac3e3790859735a643b08de91b
DIFF: https://github.com/llvm/llvm-project/commit/44d33f3aa30cf6ac3e3790859735a643b08de91b.diff
LOG: [Flang][OpenMP] Do not consider procedure names for data-sharing
An incorrect error was issued for procedure names occuring in OpenMP
regions with default clause set to NONE. Fix is to ignore all cases
where names are various kinds of procedures.
Fixes issue https://github.com/flang-compiler/f18-llvm-project/issues/1350
Reviewed By: peixin
Differential Revision: https://reviews.llvm.org/D143384
Added:
flang/test/Semantics/OpenMP/omp-default-none.f90
Modified:
flang/lib/Semantics/resolve-directives.cpp
Removed:
################################################################################
diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp
index 98821c0ebdd2b..6c876ec69db60 100644
--- a/flang/lib/Semantics/resolve-directives.cpp
+++ b/flang/lib/Semantics/resolve-directives.cpp
@@ -1497,7 +1497,7 @@ void OmpAttributeVisitor::Post(const parser::OpenMPExecutableAllocate &x) {
void OmpAttributeVisitor::Post(const parser::Name &name) {
auto *symbol{name.symbol};
if (symbol && !dirContext_.empty() && GetContext().withinConstruct) {
- if (!symbol->owner().IsDerivedType() && !symbol->has<ProcEntityDetails>() &&
+ if (!symbol->owner().IsDerivedType() && !IsProcedure(*symbol) &&
!IsObjectWithDSA(*symbol) && !IsNamedConstant(*symbol)) {
// TODO: create a separate function to go through the rules for
// predetermined, explicitly determined, and implicitly
diff --git a/flang/test/Semantics/OpenMP/omp-default-none.f90 b/flang/test/Semantics/OpenMP/omp-default-none.f90
new file mode 100644
index 0000000000000..d027f46f00584
--- /dev/null
+++ b/flang/test/Semantics/OpenMP/omp-default-none.f90
@@ -0,0 +1,41 @@
+!RUN: %python %S/../test_errors.py %s %flang -fopenmp
+! Positive tests for default(none)
+subroutine sb2(x)
+ real :: x
+end subroutine
+
+subroutine sb1
+ integer :: i
+ real :: a(10), b(10), k
+ inc(x) = x + 1.0
+ abstract interface
+ function iface(a, b)
+ real, intent(in) :: a, b
+ real :: iface
+ end function
+ end interface
+ procedure(iface) :: compute
+ procedure(iface), pointer :: ptr => NULL()
+ ptr => fn2
+ !$omp parallel default(none) shared(a,b,k) private(i)
+ do i = 1, 10
+ b(i) = k + sin(a(i)) + inc(a(i)) + fn1(a(i)) + compute(a(i),k) + add(k, k)
+ call sb3(b(i))
+ call sb2(a(i))
+ end do
+ !$omp end parallel
+contains
+ function fn1(x)
+ real :: x, fn1
+ fn1 = x
+ end function
+ function fn2(x, y)
+ real, intent(in) :: x, y
+ real :: fn2
+ fn2 = x + y
+ end function
+ subroutine sb3(x)
+ real :: x
+ print *, x
+ end subroutine
+end subroutine
More information about the flang-commits
mailing list