[flang-commits] [flang] [flang][OpenMP][Semantics] Modify a semantic check which was tightly checking list items in IS_DEVICE_PTR to be only dummy arguments. (PR #74370)
Raghu Maddhipatla via flang-commits
flang-commits at lists.llvm.org
Mon Dec 4 13:11:03 PST 2023
https://github.com/raghavendhra created https://github.com/llvm/llvm-project/pull/74370
Modifying https://github.com/llvm/llvm-project/pull/71255
Changed semantic check to only check for, "Variable in IS_DEVICE_PTR clause must be a dummy argument that does not have the ALLOCATABLE, POINTER or VALUE attribute." Earlier there was an additional semantic check "Variable in IS_DEVICE_PTR clause must be a dummy argument" which might be incorrect.
>From f3ac7647a52b50d2679056b3d722c7de7afcad8b Mon Sep 17 00:00:00 2001
From: Raghu Maddhipatla <Raghu.Maddhipatla at amd.com>
Date: Mon, 4 Dec 2023 15:05:44 -0600
Subject: [PATCH] [flang][OpenMP][Semantics] Modify a semantic check which was
tightly checking list items in IS_DEVICE_PTR to be only dummy arguments.
---
flang/lib/Semantics/check-omp-structure.cpp | 7 ++-----
flang/test/Semantics/OpenMP/target01.f90 | 1 -
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp
index 2f4eb9a854270..c2362d225130d 100644
--- a/flang/lib/Semantics/check-omp-structure.cpp
+++ b/flang/lib/Semantics/check-omp-structure.cpp
@@ -2994,11 +2994,8 @@ void OmpStructureChecker::Enter(const parser::OmpClause::IsDevicePtr &x) {
context_.Say(itr->second->source,
"Variable '%s' in IS_DEVICE_PTR clause must be of type C_PTR"_err_en_US,
source.ToString());
- } else if (!(IsDummy(*symbol))) {
- context_.Say(itr->second->source,
- "Variable '%s' in IS_DEVICE_PTR clause must be a dummy argument"_err_en_US,
- source.ToString());
- } else if (IsAllocatableOrPointer(*symbol) || IsValue(*symbol)) {
+ } else if (IsDummy(*symbol) &&
+ (IsAllocatableOrPointer(*symbol) || IsValue(*symbol))) {
context_.Say(itr->second->source,
"Variable '%s' in IS_DEVICE_PTR clause must be a dummy argument that does not have the ALLOCATABLE, POINTER or VALUE attribute."_err_en_US,
source.ToString());
diff --git a/flang/test/Semantics/OpenMP/target01.f90 b/flang/test/Semantics/OpenMP/target01.f90
index 485fa1f2530c3..2ce9a1af7cc80 100644
--- a/flang/test/Semantics/OpenMP/target01.f90
+++ b/flang/test/Semantics/OpenMP/target01.f90
@@ -39,7 +39,6 @@ subroutine bar(b1, b2, b3)
type(c_ptr), pointer :: b2
type(c_ptr), value :: b3
- !ERROR: Variable 'c' in IS_DEVICE_PTR clause must be a dummy argument
!$omp target is_device_ptr(c)
y = y + 1
!$omp end target
More information about the flang-commits
mailing list