[llvm-branch-commits] [flang] [flang][OpenMP] Rename some `Type` members in OpenMP clauses (PR #117784)
Krzysztof Parzyszek via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Nov 26 14:04:16 PST 2024
https://github.com/kparzysz updated https://github.com/llvm/llvm-project/pull/117784
>From ee00ecdc5a8b342c80ef34a8e1a1c8bb91855ab8 Mon Sep 17 00:00:00 2001
From: Krzysztof Parzyszek <Krzysztof.Parzyszek at amd.com>
Date: Tue, 26 Nov 2024 09:01:49 -0600
Subject: [PATCH 1/2] [flang][OpenMP] Rename some `Type` members in OpenMP
clauses
The intent is to keep names in sync with the terminology from the OpenMP
spec:
OmpBindClause::Type -> Binding
OmpDefaultClause::Type -> DataSharingAttribute
OmpDeviceTypeClause::Type -> DeviceTypeDescription
OmpProcBindClause::Type -> AffinityPolicy
Add more comments with references to the OpenMP specs.
---
flang/include/flang/Parser/dump-parse-tree.h | 8 +-
flang/include/flang/Parser/parse-tree.h | 130 +++++++++++++-----
flang/lib/Lower/OpenMP/Clauses.cpp | 9 +-
flang/lib/Parser/openmp-parsers.cpp | 29 ++--
flang/lib/Parser/unparse.cpp | 9 +-
flang/lib/Semantics/check-omp-structure.cpp | 4 +-
flang/lib/Semantics/resolve-directives.cpp | 8 +-
.../OpenMP/declare_target-device_type.f90 | 6 +-
flang/test/Parser/OpenMP/proc-bind.f90 | 2 +-
.../Parser/OpenMP/target-loop-unparse.f90 | 2 +-
10 files changed, 133 insertions(+), 74 deletions(-)
diff --git a/flang/include/flang/Parser/dump-parse-tree.h b/flang/include/flang/Parser/dump-parse-tree.h
index d499b414827d50..e67b95ca61e8bf 100644
--- a/flang/include/flang/Parser/dump-parse-tree.h
+++ b/flang/include/flang/Parser/dump-parse-tree.h
@@ -513,7 +513,7 @@ class ParseTreeDumper {
NODE(parser, OmpDeclareTargetWithList)
NODE(parser, OmpDeclareMapperSpecifier)
NODE(parser, OmpDefaultClause)
- NODE_ENUM(OmpDefaultClause, Type)
+ NODE_ENUM(OmpDefaultClause, DataSharingAttribute)
NODE(parser, OmpVariableCategory)
NODE_ENUM(OmpVariableCategory, Value)
NODE(parser, OmpDefaultmapClause)
@@ -573,9 +573,9 @@ class ParseTreeDumper {
NODE(parser, OmpNumTasksClause)
NODE_ENUM(OmpNumTasksClause, Prescriptiveness)
NODE(parser, OmpBindClause)
- NODE_ENUM(OmpBindClause, Type)
+ NODE_ENUM(OmpBindClause, Binding)
NODE(parser, OmpProcBindClause)
- NODE_ENUM(OmpProcBindClause, Type)
+ NODE_ENUM(OmpProcBindClause, AffinityPolicy)
NODE(parser, OmpReductionModifier)
NODE_ENUM(OmpReductionModifier, Value)
NODE(parser, OmpReductionClause)
@@ -596,7 +596,7 @@ class ParseTreeDumper {
NODE(parser, OmpDeviceClause)
NODE_ENUM(OmpDeviceClause, DeviceModifier)
NODE(parser, OmpDeviceTypeClause)
- NODE_ENUM(OmpDeviceTypeClause, Type)
+ NODE_ENUM(OmpDeviceTypeClause, DeviceTypeDescription)
NODE(parser, OmpUpdateClause)
NODE(parser, OmpChunkModifier)
NODE_ENUM(OmpChunkModifier, Value)
diff --git a/flang/include/flang/Parser/parse-tree.h b/flang/include/flang/Parser/parse-tree.h
index e9a02a87812452..41b9ad1b7b0d61 100644
--- a/flang/include/flang/Parser/parse-tree.h
+++ b/flang/include/flang/Parser/parse-tree.h
@@ -3686,21 +3686,51 @@ struct OmpAllocateClause {
std::tuple<MODIFIERS(), OmpObjectList> t;
};
-// OMP 5.0 2.4 atomic-default-mem-order-clause ->
-// ATOMIC_DEFAULT_MEM_ORDER (SEQ_CST | ACQ_REL |
-// RELAXED)
+// Ref: [5.0:60-63], [5.1:83-86], [5.2:210-213]
+//
+// atomic-default-mem-order-clause ->
+// ATOMIC_DEFAULT_MEM_ORDER(memory-order) // since 5.0
+// memory-order ->
+// SEQ_CST | ACQ_REL | RELAXED | // since 5.0
+// ACQUIRE | RELEASE // since 5.2
struct OmpAtomicDefaultMemOrderClause {
- WRAPPER_CLASS_BOILERPLATE(
- OmpAtomicDefaultMemOrderClause, common::OmpAtomicDefaultMemOrderType);
+ using MemoryOrder = common::OmpAtomicDefaultMemOrderType;
+ WRAPPER_CLASS_BOILERPLATE(OmpAtomicDefaultMemOrderClause, MemoryOrder);
+};
+
+// Ref: [5.0:128-131], [5.1:151-154], [5.2:258-259]
+//
+// bind-clause ->
+// BIND(binding) // since 5.0
+// binding ->
+// TEAMS | PARALLEL | THREAD // since 5.0
+struct OmpBindClause {
+ ENUM_CLASS(Binding, Parallel, Teams, Thread)
+ WRAPPER_CLASS_BOILERPLATE(OmpBindClause, Binding);
};
-// 2.15.3.1 default-clause -> DEFAULT (PRIVATE | FIRSTPRIVATE | SHARED | NONE)
+// Ref: [4.5:46-50], [5.0:74-78], [5.1:92-96], [5.2:109]
+//
+// default-clause ->
+// DEFAULT(data-sharing-attribute) // since 4.5
+// data-sharing-attribute ->
+// SHARED | NONE | // since 4.5
+// PRIVATE | FIRSTPRIVATE // since 5.0
struct OmpDefaultClause {
- ENUM_CLASS(Type, Private, Firstprivate, Shared, None)
- WRAPPER_CLASS_BOILERPLATE(OmpDefaultClause, Type);
+ ENUM_CLASS(DataSharingAttribute, Private, Firstprivate, Shared, None)
+ WRAPPER_CLASS_BOILERPLATE(OmpDefaultClause, DataSharingAttribute);
};
-// 2.15.5.2 defaultmap -> DEFAULTMAP (implicit-behavior[:variable-category])
+// Ref: [4.5:103-107], [5.0:324-325], [5.1:357-358], [5.2:161-162]
+//
+// defaultmap-clause ->
+// DEFAULTMAP(implicit-behavior
+// [: variable-category]) // since 5.0
+// implicit-behavior ->
+// TOFROM | // since 4.5
+// ALLOC | TO | FROM | FIRSTPRIVATE | NONE |
+// DEFAULT | // since 5.0
+// PRESENT // since 5.1
struct OmpDefaultmapClause {
TUPLE_CLASS_BOILERPLATE(OmpDefaultmapClause);
ENUM_CLASS(
@@ -3709,23 +3739,35 @@ struct OmpDefaultmapClause {
std::tuple<ImplicitBehavior, MODIFIERS()> t;
};
-// 2.13.9 iteration-offset -> +/- non-negative-constant
+// Ref: [4.5:169-172], [5.0:255-259], [5.1:288-292], [5.2:91-93]
+//
+// iteration-offset ->
+// +|- non-negative-constant // since 4.5
struct OmpIterationOffset {
TUPLE_CLASS_BOILERPLATE(OmpIterationOffset);
std::tuple<DefinedOperator, ScalarIntConstantExpr> t;
};
-// 2.13.9 iteration -> induction-variable [iteration-offset]
+// Ref: [4.5:169-172], [5.0:255-259], [5.1:288-292], [5.2:91-93]
+//
+// iteration ->
+// induction-variable [iteration-offset] // since 4.5
struct OmpIteration {
TUPLE_CLASS_BOILERPLATE(OmpIteration);
std::tuple<Name, std::optional<OmpIterationOffset>> t;
};
+// Ref: [4.5:169-172], [5.0:255-259], [5.1:288-292], [5.2:91-93]
+//
+// iteration-vector ->
+// [iteration...] // since 4.5
WRAPPER_CLASS(OmpIterationVector, std::list<OmpIteration>);
// Extract this into a separate structure (instead of having it directly in
// OmpDoacrossClause), so that the context in TYPE_CONTEXT_PARSER can be set
// separately for OmpDependClause and OmpDoacrossClause.
+//
+// See: depend-clause, doacross-clause
struct OmpDoacross {
OmpDependenceType::Value GetDepType() const;
@@ -3735,15 +3777,15 @@ struct OmpDoacross {
std::variant<Sink, Source> u;
};
-// Ref: [4.5:169-170], [5.0:255-256], [5.1:288-289], [5.2:323-324]
+// Ref: [4.5:169-172], [5.0:255-259], [5.1:288-292], [5.2:323-326]
//
// depend-clause ->
-// DEPEND(SOURCE) | // since 4.5, until 5.1
-// DEPEND(SINK: iteration-vector) | // since 4.5, until 5.1
+// DEPEND(SOURCE) | // since 4.5, until 5.1
+// DEPEND(SINK: iteration-vector) | // since 4.5, until 5.1
// DEPEND([depend-modifier,]
-// task-dependence-type: locator-list) // since 4.5
+// task-dependence-type: locator-list) // since 4.5
//
-// depend-modifier -> iterator-modifier // since 5.0
+// depend-modifier -> iterator-modifier // since 5.0
struct OmpDependClause {
UNION_CLASS_BOILERPLATE(OmpDependClause);
struct TaskDep {
@@ -3755,6 +3797,10 @@ struct OmpDependClause {
std::variant<TaskDep, OmpDoacross> u;
};
+// Ref: [5.2:326-328]
+//
+// doacross-clause ->
+// DOACROSS(dependence-type: iteration-vector) // since 5.2
WRAPPER_CLASS(OmpDoacrossClause, OmpDoacross);
// Ref: [5.0:254-255], [5.1:287-288], [5.2:73]
@@ -3764,25 +3810,41 @@ WRAPPER_CLASS(OmpDoacrossClause, OmpDoacross);
// DESTROY(variable) // since 5.2
WRAPPER_CLASS(OmpDestroyClause, OmpObject);
-// device([ device-modifier :] scalar-integer-expression)
+// Ref: [5.0:135-140], [5.1:161-166], [5.2:265-266]
+//
+// detach-clause ->
+// DETACH(event-handle) // since 5.0
+struct OmpDetachClause {
+ WRAPPER_CLASS_BOILERPLATE(OmpDetachClause, OmpObject);
+};
+
+// Ref: [4.5:103-107], [5.0:170-176], [5.1:197-205], [5.2:276-277]
+//
+// device-clause ->
+// DEVICE(scalar-integer-expression) | // since 4.5
+// DEVICE([device-modifier:]
+// scalar-integer-expression) // since 5.0
struct OmpDeviceClause {
TUPLE_CLASS_BOILERPLATE(OmpDeviceClause);
ENUM_CLASS(DeviceModifier, Ancestor, Device_Num)
std::tuple<std::optional<DeviceModifier>, ScalarIntExpr> t;
};
-// device_type(any | host | nohost)
+// Ref: [5.0:180-185], [5.1:210-216], [5.2:275]
+//
+// device-type-clause ->
+// DEVICE_TYPE(ANY | HOST | NOHOST) // since 5.0
struct OmpDeviceTypeClause {
- ENUM_CLASS(Type, Any, Host, Nohost)
- WRAPPER_CLASS_BOILERPLATE(OmpDeviceTypeClause, Type);
+ ENUM_CLASS(DeviceTypeDescription, Any, Host, Nohost)
+ WRAPPER_CLASS_BOILERPLATE(OmpDeviceTypeClause, DeviceTypeDescription);
};
// Ref: [4.5:107-109], [5.0:176-180], [5.1:205-210], [5.2:167-168]
//
// from-clause ->
// FROM(locator-list) |
-// FROM(mapper-modifier: locator-list) | // since 5.0
-// FROM(motion-modifier[,] ...: locator-list) // since 5.1
+// FROM(mapper-modifier: locator-list) | // since 5.0
+// FROM(motion-modifier[,] ...: locator-list) // since 5.1
// motion-modifier ->
// PRESENT | mapper-modifier | iterator-modifier
struct OmpFromClause {
@@ -3806,11 +3868,6 @@ struct OmpIfClause {
std::tuple<std::optional<DirectiveNameModifier>, ScalarLogicalExpr> t;
};
-// OpenMPv5.2 12.5.2 detach-clause -> DETACH (event-handle)
-struct OmpDetachClause {
- WRAPPER_CLASS_BOILERPLATE(OmpDetachClause, OmpObject);
-};
-
// OMP 5.0 2.19.5.6 in_reduction-clause -> IN_REDUCTION (reduction-identifier:
// variable-name-list)
struct OmpInReductionClause {
@@ -3878,10 +3935,16 @@ struct OmpOrderClause {
std::tuple<MODIFIERS(), Ordering> t;
};
-// 2.5 proc-bind-clause -> PROC_BIND (MASTER | CLOSE | SPREAD)
+// Ref: [4.5:46-50], [5.0:74-78], [5.1:92-96], [5.2:229-230]
+//
+// proc-bind-clause ->
+// PROC_BIND(affinity-policy) // since 4.5
+// affinity-policy ->
+// CLOSE | PRIMARY | SPREAD | // since 4.5
+// MASTER // since 4.5, until 5.2
struct OmpProcBindClause {
- ENUM_CLASS(Type, Close, Master, Spread, Primary)
- WRAPPER_CLASS_BOILERPLATE(OmpProcBindClause, Type);
+ ENUM_CLASS(AffinityPolicy, Close, Master, Spread, Primary)
+ WRAPPER_CLASS_BOILERPLATE(OmpProcBindClause, AffinityPolicy);
};
// Ref: [4.5:201-207], [5.0:300-302], [5.1:332-334], [5.2:134-137]
@@ -3945,13 +4008,6 @@ struct OmpUpdateClause {
std::variant<OmpDependenceType, OmpTaskDependenceType> u;
};
-// OMP 5.2 11.7.1 bind-clause ->
-// BIND( PARALLEL | TEAMS | THREAD )
-struct OmpBindClause {
- ENUM_CLASS(Type, Parallel, Teams, Thread)
- WRAPPER_CLASS_BOILERPLATE(OmpBindClause, Type);
-};
-
// OpenMP Clauses
struct OmpClause {
UNION_CLASS_BOILERPLATE(OmpClause);
diff --git a/flang/lib/Lower/OpenMP/Clauses.cpp b/flang/lib/Lower/OpenMP/Clauses.cpp
index ddc91ef2030bd7..6d09cab700fd6f 100644
--- a/flang/lib/Lower/OpenMP/Clauses.cpp
+++ b/flang/lib/Lower/OpenMP/Clauses.cpp
@@ -478,7 +478,7 @@ Bind make(const parser::OmpClause::Bind &inp,
using wrapped = parser::OmpBindClause;
CLAUSET_ENUM_CONVERT( //
- convert, wrapped::Type, Bind::Binding,
+ convert, wrapped::Binding, Bind::Binding,
// clang-format off
MS(Teams, Teams)
MS(Parallel, Parallel)
@@ -523,7 +523,7 @@ Default make(const parser::OmpClause::Default &inp,
using wrapped = parser::OmpDefaultClause;
CLAUSET_ENUM_CONVERT( //
- convert, wrapped::Type, Default::DataSharingAttribute,
+ convert, wrapped::DataSharingAttribute, Default::DataSharingAttribute,
// clang-format off
MS(Firstprivate, Firstprivate)
MS(None, None)
@@ -680,7 +680,8 @@ DeviceType make(const parser::OmpClause::DeviceType &inp,
using wrapped = parser::OmpDeviceTypeClause;
CLAUSET_ENUM_CONVERT( //
- convert, wrapped::Type, DeviceType::DeviceTypeDescription,
+ convert, wrapped::DeviceTypeDescription,
+ DeviceType::DeviceTypeDescription,
// clang-format off
MS(Any, Any)
MS(Host, Host)
@@ -1142,7 +1143,7 @@ ProcBind make(const parser::OmpClause::ProcBind &inp,
using wrapped = parser::OmpProcBindClause;
CLAUSET_ENUM_CONVERT( //
- convert, wrapped::Type, ProcBind::AffinityPolicy,
+ convert, wrapped::AffinityPolicy, ProcBind::AffinityPolicy,
// clang-format off
MS(Close, Close)
MS(Master, Master)
diff --git a/flang/lib/Parser/openmp-parsers.cpp b/flang/lib/Parser/openmp-parsers.cpp
index f231290932c122..873f7e93cd15e4 100644
--- a/flang/lib/Parser/openmp-parsers.cpp
+++ b/flang/lib/Parser/openmp-parsers.cpp
@@ -255,17 +255,18 @@ TYPE_PARSER(construct<OmpAffinityClause>(
// 2.15.3.1 DEFAULT (PRIVATE | FIRSTPRIVATE | SHARED | NONE)
TYPE_PARSER(construct<OmpDefaultClause>(
- "PRIVATE" >> pure(OmpDefaultClause::Type::Private) ||
- "FIRSTPRIVATE" >> pure(OmpDefaultClause::Type::Firstprivate) ||
- "SHARED" >> pure(OmpDefaultClause::Type::Shared) ||
- "NONE" >> pure(OmpDefaultClause::Type::None)))
+ "PRIVATE" >> pure(OmpDefaultClause::DataSharingAttribute::Private) ||
+ "FIRSTPRIVATE" >>
+ pure(OmpDefaultClause::DataSharingAttribute::Firstprivate) ||
+ "SHARED" >> pure(OmpDefaultClause::DataSharingAttribute::Shared) ||
+ "NONE" >> pure(OmpDefaultClause::DataSharingAttribute::None)))
// 2.5 PROC_BIND (MASTER | CLOSE | PRIMARY | SPREAD)
TYPE_PARSER(construct<OmpProcBindClause>(
- "CLOSE" >> pure(OmpProcBindClause::Type::Close) ||
- "MASTER" >> pure(OmpProcBindClause::Type::Master) ||
- "PRIMARY" >> pure(OmpProcBindClause::Type::Primary) ||
- "SPREAD" >> pure(OmpProcBindClause::Type::Spread)))
+ "CLOSE" >> pure(OmpProcBindClause::AffinityPolicy::Close) ||
+ "MASTER" >> pure(OmpProcBindClause::AffinityPolicy::Master) ||
+ "PRIMARY" >> pure(OmpProcBindClause::AffinityPolicy::Primary) ||
+ "SPREAD" >> pure(OmpProcBindClause::AffinityPolicy::Spread)))
TYPE_PARSER(construct<OmpMapClause>(
applyFunction<OmpMapClause>(makeMobClause<true>,
@@ -311,9 +312,9 @@ TYPE_PARSER(construct<OmpDeviceClause>(
// device_type(any | host | nohost)
TYPE_PARSER(construct<OmpDeviceTypeClause>(
- "ANY" >> pure(OmpDeviceTypeClause::Type::Any) ||
- "HOST" >> pure(OmpDeviceTypeClause::Type::Host) ||
- "NOHOST" >> pure(OmpDeviceTypeClause::Type::Nohost)))
+ "ANY" >> pure(OmpDeviceTypeClause::DeviceTypeDescription::Any) ||
+ "HOST" >> pure(OmpDeviceTypeClause::DeviceTypeDescription::Host) ||
+ "NOHOST" >> pure(OmpDeviceTypeClause::DeviceTypeDescription::Nohost)))
// 2.12 IF (directive-name-modifier: scalar-logical-expr)
TYPE_PARSER(construct<OmpIfClause>(
@@ -432,9 +433,9 @@ TYPE_PARSER(construct<OmpLastprivateClause>(
// OMP 5.2 11.7.1 BIND ( PARALLEL | TEAMS | THREAD )
TYPE_PARSER(construct<OmpBindClause>(
- "PARALLEL" >> pure(OmpBindClause::Type::Parallel) ||
- "TEAMS" >> pure(OmpBindClause::Type::Teams) ||
- "THREAD" >> pure(OmpBindClause::Type::Thread)))
+ "PARALLEL" >> pure(OmpBindClause::Binding::Parallel) ||
+ "TEAMS" >> pure(OmpBindClause::Binding::Teams) ||
+ "THREAD" >> pure(OmpBindClause::Binding::Thread)))
TYPE_PARSER(
"ACQUIRE" >> construct<OmpClause>(construct<OmpClause::Acquire>()) ||
diff --git a/flang/lib/Parser/unparse.cpp b/flang/lib/Parser/unparse.cpp
index 192917512c17a2..58aaeb64d7ebc1 100644
--- a/flang/lib/Parser/unparse.cpp
+++ b/flang/lib/Parser/unparse.cpp
@@ -2820,9 +2820,9 @@ class UnparseVisitor {
WALK_NESTED_ENUM(InquireSpec::LogVar, Kind)
WALK_NESTED_ENUM(ProcedureStmt, Kind) // R1506
WALK_NESTED_ENUM(UseStmt, ModuleNature) // R1410
- WALK_NESTED_ENUM(OmpProcBindClause, Type) // OMP PROC_BIND
- WALK_NESTED_ENUM(OmpDefaultClause, Type) // OMP DEFAULT
- WALK_NESTED_ENUM(OmpDefaultmapClause, ImplicitBehavior) // OMP DEFAULTMAP
+ WALK_NESTED_ENUM(OmpProcBindClause, AffinityPolicy) // OMP proc_bind
+ WALK_NESTED_ENUM(OmpDefaultClause, DataSharingAttribute) // OMP default
+ WALK_NESTED_ENUM(OmpDefaultmapClause, ImplicitBehavior) // OMP defaultmap
WALK_NESTED_ENUM(OmpVariableCategory, Value) // OMP variable-category
WALK_NESTED_ENUM(
OmpLastprivateClause, LastprivateModifier) // OMP lastprivate-modifier
@@ -2832,7 +2832,8 @@ class UnparseVisitor {
WALK_NESTED_ENUM(OmpTaskDependenceType, Value) // OMP task-dependence-type
WALK_NESTED_ENUM(OmpScheduleClause, Kind) // OMP schedule-kind
WALK_NESTED_ENUM(OmpDeviceClause, DeviceModifier) // OMP device modifier
- WALK_NESTED_ENUM(OmpDeviceTypeClause, Type) // OMP DEVICE_TYPE
+ WALK_NESTED_ENUM(
+ OmpDeviceTypeClause, DeviceTypeDescription) // OMP device_type
WALK_NESTED_ENUM(OmpReductionModifier, Value) // OMP reduction-modifier
WALK_NESTED_ENUM(OmpExpectation, Value) // OMP motion-expectation
WALK_NESTED_ENUM(OmpIfClause, DirectiveNameModifier) // OMP directive-modifier
diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp
index b49258da506ce6..013dcbaf0b0daa 100644
--- a/flang/lib/Semantics/check-omp-structure.cpp
+++ b/flang/lib/Semantics/check-omp-structure.cpp
@@ -428,7 +428,7 @@ void OmpStructureChecker::HasInvalidLoopBinding(
for (const auto &clause : clauseList.v) {
if (const auto *bindClause{
std::get_if<parser::OmpClause::Bind>(&clause.u)}) {
- if (bindClause->v.v != parser::OmpBindClause::Type::Teams) {
+ if (bindClause->v.v != parser::OmpBindClause::Binding::Teams) {
context_.Say(beginDir.source, msg);
}
}
@@ -1644,7 +1644,7 @@ void OmpStructureChecker::Leave(const parser::OpenMPDeclareTargetConstruct &x) {
[&](const parser::OmpClause::DeviceType &deviceTypeClause) {
deviceTypeClauseFound = true;
if (deviceTypeClause.v.v !=
- parser::OmpDeviceTypeClause::Type::Host) {
+ parser::OmpDeviceTypeClause::DeviceTypeDescription::Host) {
// Function / subroutine explicitly marked as runnable by the
// target device.
deviceConstructFound_ = true;
diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp
index 4f56356d879a40..573f216b848ad8 100644
--- a/flang/lib/Semantics/resolve-directives.cpp
+++ b/flang/lib/Semantics/resolve-directives.cpp
@@ -2023,16 +2023,16 @@ bool OmpAttributeVisitor::Pre(const parser::OpenMPAllocatorsConstruct &x) {
void OmpAttributeVisitor::Post(const parser::OmpDefaultClause &x) {
if (!dirContext_.empty()) {
switch (x.v) {
- case parser::OmpDefaultClause::Type::Private:
+ case parser::OmpDefaultClause::DataSharingAttribute::Private:
SetContextDefaultDSA(Symbol::Flag::OmpPrivate);
break;
- case parser::OmpDefaultClause::Type::Firstprivate:
+ case parser::OmpDefaultClause::DataSharingAttribute::Firstprivate:
SetContextDefaultDSA(Symbol::Flag::OmpFirstPrivate);
break;
- case parser::OmpDefaultClause::Type::Shared:
+ case parser::OmpDefaultClause::DataSharingAttribute::Shared:
SetContextDefaultDSA(Symbol::Flag::OmpShared);
break;
- case parser::OmpDefaultClause::Type::None:
+ case parser::OmpDefaultClause::DataSharingAttribute::None:
SetContextDefaultDSA(Symbol::Flag::OmpNone);
break;
}
diff --git a/flang/test/Parser/OpenMP/declare_target-device_type.f90 b/flang/test/Parser/OpenMP/declare_target-device_type.f90
index 40eb1c2fa4caee..b6903614a628ee 100644
--- a/flang/test/Parser/OpenMP/declare_target-device_type.f90
+++ b/flang/test/Parser/OpenMP/declare_target-device_type.f90
@@ -31,7 +31,7 @@ subroutine openmp_declare_target
end do
!PARSE-TREE: OpenMPDeclarativeConstruct -> OpenMPDeclareTargetConstruct
-!PARSE-TREE: OmpDeclareTargetSpecifier -> OmpDeclareTargetWithClause -> OmpClauseList -> OmpClause -> DeviceType -> OmpDeviceTypeClause -> Type = Host
-!PARSE-TREE: OmpDeclareTargetSpecifier -> OmpDeclareTargetWithClause -> OmpClauseList -> OmpClause -> DeviceType -> OmpDeviceTypeClause -> Type = Nohost
-!PARSE-TREE: OmpDeclareTargetSpecifier -> OmpDeclareTargetWithClause -> OmpClauseList -> OmpClause -> DeviceType -> OmpDeviceTypeClause -> Type = Any
+!PARSE-TREE: OmpDeclareTargetSpecifier -> OmpDeclareTargetWithClause -> OmpClauseList -> OmpClause -> DeviceType -> OmpDeviceTypeClause -> DeviceTypeDescription = Host
+!PARSE-TREE: OmpDeclareTargetSpecifier -> OmpDeclareTargetWithClause -> OmpClauseList -> OmpClause -> DeviceType -> OmpDeviceTypeClause -> DeviceTypeDescription = Nohost
+!PARSE-TREE: OmpDeclareTargetSpecifier -> OmpDeclareTargetWithClause -> OmpClauseList -> OmpClause -> DeviceType -> OmpDeviceTypeClause -> DeviceTypeDescription = Any
END subroutine openmp_declare_target
diff --git a/flang/test/Parser/OpenMP/proc-bind.f90 b/flang/test/Parser/OpenMP/proc-bind.f90
index 08bcf69e5e765d..3115b3771f27d6 100644
--- a/flang/test/Parser/OpenMP/proc-bind.f90
+++ b/flang/test/Parser/OpenMP/proc-bind.f90
@@ -6,7 +6,7 @@
! PARSE-TREE: ExecutionPartConstruct -> ExecutableConstruct -> OpenMPConstruct -> OpenMPBlockConstruct
! PARSE-TREE: OmpBeginBlockDirective
! PARSE-TREE: OmpBlockDirective -> llvm::omp::Directive = parallel
-! PARSE-TREE: OmpClauseList -> OmpClause -> ProcBind -> OmpProcBindClause -> Type = Primary
+! PARSE-TREE: OmpClauseList -> OmpClause -> ProcBind -> OmpProcBindClause -> AffinityPolicy = Primary
subroutine sb1
!$omp parallel proc_bind(primary)
print *, "Hello"
diff --git a/flang/test/Parser/OpenMP/target-loop-unparse.f90 b/flang/test/Parser/OpenMP/target-loop-unparse.f90
index b2047070496527..ee0013f6134030 100644
--- a/flang/test/Parser/OpenMP/target-loop-unparse.f90
+++ b/flang/test/Parser/OpenMP/target-loop-unparse.f90
@@ -19,7 +19,7 @@ subroutine test_loop
!PARSE-TREE: OmpBeginLoopDirective
!PARSE-TREE-NEXT: OmpLoopDirective -> llvm::omp::Directive = loop
- !PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> Bind -> OmpBindClause -> Type = Thread
+ !PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> Bind -> OmpBindClause -> Binding = Thread
!CHECK: !$omp loop
!$omp loop bind(thread)
do i=1,10
>From d520f1e23c72190ce807306f05f899f106be3070 Mon Sep 17 00:00:00 2001
From: Krzysztof Parzyszek <Krzysztof.Parzyszek at amd.com>
Date: Tue, 26 Nov 2024 16:03:56 -0600
Subject: [PATCH 2/2] fix examples
---
flang/examples/FeatureList/FeatureList.cpp | 6 +++---
flang/examples/FlangOmpReport/FlangOmpReportVisitor.cpp | 8 +++++---
flang/examples/FlangOmpReport/FlangOmpReportVisitor.h | 6 +++---
3 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/flang/examples/FeatureList/FeatureList.cpp b/flang/examples/FeatureList/FeatureList.cpp
index f7086b9e82b8d0..ab309b15e45416 100644
--- a/flang/examples/FeatureList/FeatureList.cpp
+++ b/flang/examples/FeatureList/FeatureList.cpp
@@ -465,7 +465,7 @@ struct NodeVisitor {
READ_FEATURE(OmpDeclareTargetWithClause)
READ_FEATURE(OmpDeclareTargetWithList)
READ_FEATURE(OmpDefaultClause)
- READ_FEATURE(OmpDefaultClause::Type)
+ READ_FEATURE(OmpDefaultClause::DataSharingAttribute)
READ_FEATURE(OmpDefaultmapClause)
READ_FEATURE(OmpDefaultmapClause::ImplicitBehavior)
READ_FEATURE(OmpVariableCategory::Value)
@@ -508,7 +508,7 @@ struct NodeVisitor {
READ_FEATURE(OmpOrderModifier)
READ_FEATURE(OmpOrderModifier::Value)
READ_FEATURE(OmpProcBindClause)
- READ_FEATURE(OmpProcBindClause::Type)
+ READ_FEATURE(OmpProcBindClause::AffinityPolicy)
READ_FEATURE(OmpReductionClause)
READ_FEATURE(OmpInReductionClause)
READ_FEATURE(OmpReductionCombiner)
@@ -526,7 +526,7 @@ struct NodeVisitor {
READ_FEATURE(OmpDeviceClause)
READ_FEATURE(OmpDeviceClause::DeviceModifier)
READ_FEATURE(OmpDeviceTypeClause)
- READ_FEATURE(OmpDeviceTypeClause::Type)
+ READ_FEATURE(OmpDeviceTypeClause::DeviceTypeDescription)
READ_FEATURE(OmpChunkModifier)
READ_FEATURE(OmpChunkModifier::Value)
READ_FEATURE(OmpOrderingModifier)
diff --git a/flang/examples/FlangOmpReport/FlangOmpReportVisitor.cpp b/flang/examples/FlangOmpReport/FlangOmpReportVisitor.cpp
index 5bd8c761992781..afabd564ad5bdc 100644
--- a/flang/examples/FlangOmpReport/FlangOmpReportVisitor.cpp
+++ b/flang/examples/FlangOmpReport/FlangOmpReportVisitor.cpp
@@ -190,15 +190,17 @@ void OpenMPCounterVisitor::PostConstructsCommon() {
delete curConstruct;
}
-void OpenMPCounterVisitor::Post(const OmpProcBindClause::Type &c) {
+void OpenMPCounterVisitor::Post(const OmpProcBindClause::AffinityPolicy &c) {
clauseDetails +=
"type=" + std::string{OmpProcBindClause::EnumToString(c)} + ";";
}
-void OpenMPCounterVisitor::Post(const OmpDefaultClause::Type &c) {
+void OpenMPCounterVisitor::Post(
+ const OmpDefaultClause::DataSharingAttribute &c) {
clauseDetails +=
"type=" + std::string{OmpDefaultClause::EnumToString(c)} + ";";
}
-void OpenMPCounterVisitor::Post(const OmpDeviceTypeClause::Type &c) {
+void OpenMPCounterVisitor::Post(
+ const OmpDeviceTypeClause::DeviceTypeDescription &c) {
clauseDetails +=
"type=" + std::string{OmpDeviceTypeClause::EnumToString(c)} + ";";
}
diff --git a/flang/examples/FlangOmpReport/FlangOmpReportVisitor.h b/flang/examples/FlangOmpReport/FlangOmpReportVisitor.h
index 7e9ae94bef2973..ed202e8ed2a4c7 100644
--- a/flang/examples/FlangOmpReport/FlangOmpReportVisitor.h
+++ b/flang/examples/FlangOmpReport/FlangOmpReportVisitor.h
@@ -66,11 +66,11 @@ struct OpenMPCounterVisitor {
void Post(const OpenMPConstruct &);
void PostConstructsCommon();
- void Post(const OmpProcBindClause::Type &c);
- void Post(const OmpDefaultClause::Type &c);
+ void Post(const OmpProcBindClause::AffinityPolicy &c);
+ void Post(const OmpDefaultClause::DataSharingAttribute &c);
void Post(const OmpDefaultmapClause::ImplicitBehavior &c);
void Post(const OmpVariableCategory::Value &c);
- void Post(const OmpDeviceTypeClause::Type &c);
+ void Post(const OmpDeviceTypeClause::DeviceTypeDescription &c);
void Post(const OmpChunkModifier::Value &c);
void Post(const OmpLinearModifier::Value &c);
void Post(const OmpOrderingModifier::Value &c);
More information about the llvm-branch-commits
mailing list