llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: David Pagan (ddpagan)
<details>
<summary>Changes</summary>
The variable-category 'allocatable' is explicitly noted as applying only to
Fortran. If specified in C/C++ it should generate an error. NOTE: Issue will be
filed against OpenMP 6.0 specification that restriction is missing from
'default' clause section.
>From the OpenMP 6.0 specification:
Section 7.5.1 default Clause
Semantics, under Fortran only, L18-19, pg. 223
The allocatable variable-category specifies variables with the ALLOCATABLE
attribute.
Section 7.9.9 defaultmap Clause
Semantics, under Fortran only, L9-10, pg. 292
The allocatable variable-category specifies variables with the ALLOCATABLE
attribute.
Restrictions, C/C++
L1, pg. 293
The specified variable-category must not be allocatable.
---
Full diff: https://github.com/llvm/llvm-project/pull/167735.diff
3 Files Affected:
- (modified) clang/include/clang/Basic/OpenMPKinds.def (-1)
- (modified) clang/lib/Sema/SemaOpenMP.cpp (-11)
- (modified) clang/test/OpenMP/parallel_default_messages.cpp (+5)
``````````diff
diff --git a/clang/include/clang/Basic/OpenMPKinds.def
b/clang/include/clang/Basic/OpenMPKinds.def
index 166b80314f687..da0cbafd05a5b 100644
--- a/clang/include/clang/Basic/OpenMPKinds.def
+++ b/clang/include/clang/Basic/OpenMPKinds.def
@@ -127,7 +127,6 @@ OPENMP_DEVICE_MODIFIER(device_num)
// Variable-category attributes for 'default' clause.
OPENMP_DEFAULT_VARIABLE_CATEGORY(aggregate)
OPENMP_DEFAULT_VARIABLE_CATEGORY(all)
-OPENMP_DEFAULT_VARIABLE_CATEGORY(allocatable)
OPENMP_DEFAULT_VARIABLE_CATEGORY(pointer)
OPENMP_DEFAULT_VARIABLE_CATEGORY(scalar)
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 2ab2fd10a942e..06cc7ec28ae90 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -80,7 +80,6 @@ enum DefaultDataSharingAttributes {
enum DefaultDataSharingVCAttributes {
DSA_VC_all = 0, /// for all variables.
DSA_VC_aggregate, /// for aggregate variables.
- DSA_VC_allocatable, /// for allocatable variables.
DSA_VC_pointer, /// for pointer variables.
DSA_VC_scalar, /// for scalar variables.
};
@@ -760,11 +759,6 @@ class DSAStackTy {
getTopOfStack().DefaultVCAttr = DSA_VC_all;
getTopOfStack().DefaultAttrVCLoc = VCLoc;
}
- /// Set default data sharing variable category attribute to allocatable.
- void setDefaultDSAVCAllocatable(SourceLocation VCLoc) {
- getTopOfStack().DefaultVCAttr = DSA_VC_allocatable;
- getTopOfStack().DefaultAttrVCLoc = VCLoc;
- }
/// Set default data sharing variable category attribute to pointer.
void setDefaultDSAVCPointer(SourceLocation VCLoc) {
getTopOfStack().DefaultVCAttr = DSA_VC_pointer;
@@ -1373,11 +1367,6 @@ DSAStackTy::DSAVarData DSAStackTy::getDSA(const_iterator
&Iter,
if (!VD->getType()->isAggregateType())
IterDA = DSA_none;
break;
- case DSA_VC_allocatable:
- if (!(VD->getType()->isPointerType() ||
- VD->getType()->isVariableArrayType()))
- IterDA = DSA_none;
- break;
case DSA_VC_pointer:
if (!VD->getType()->isPointerType())
IterDA = DSA_none;
diff --git a/clang/test/OpenMP/parallel_default_messages.cpp
b/clang/test/OpenMP/parallel_default_messages.cpp
index 842b1ac5a96b8..b1d62118e0440 100644
--- a/clang/test/OpenMP/parallel_default_messages.cpp
+++ b/clang/test/OpenMP/parallel_default_messages.cpp
@@ -64,6 +64,11 @@ int main(int argc, char **argv) {
++x;
++y;
}
+#pragma omp parallel default(private: allocatable) private(x,y) //
expected-error {{wrong variable category specified with modifier private in the
default clause}}
+ {
+ ++x;
+ ++y;
+ }
#endif
return 0;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/167735
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits