llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-flang-semantics Author: Krzysztof Parzyszek (kparzysz) <details> <summary>Changes</summary> 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. --- Patch is 21.27 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/117784.diff 10 Files Affected: - (modified) flang/include/flang/Parser/dump-parse-tree.h (+4-4) - (modified) flang/include/flang/Parser/parse-tree.h (+93-37) - (modified) flang/lib/Lower/OpenMP/Clauses.cpp (+5-4) - (modified) flang/lib/Parser/openmp-parsers.cpp (+15-14) - (modified) flang/lib/Parser/unparse.cpp (+5-4) - (modified) flang/lib/Semantics/check-omp-structure.cpp (+2-2) - (modified) flang/lib/Semantics/resolve-directives.cpp (+4-4) - (modified) flang/test/Parser/OpenMP/declare_target-device_type.f90 (+3-3) - (modified) flang/test/Parser/OpenMP/proc-bind.f90 (+1-1) - (modified) flang/test/Parser/OpenMP/target-loop-unparse.f90 (+1-1) ``````````diff 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-... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/117784 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits