[flang-commits] [flang] [flang][OpenMP] Simplify unpacking directive arguments, NFC (PR #194952)
via flang-commits
flang-commits at lists.llvm.org
Wed Apr 29 13:48:00 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Krzysztof Parzyszek (kparzysz)
<details>
<summary>Changes</summary>
Use GetArgumentObject in a few places instead of doing the unpacking by hand.
---
Full diff: https://github.com/llvm/llvm-project/pull/194952.diff
1 Files Affected:
- (modified) flang/lib/Semantics/resolve-directives.cpp (+11-17)
``````````diff
diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp
index 8712c361965cb..22c2ca082ff22 100644
--- a/flang/lib/Semantics/resolve-directives.cpp
+++ b/flang/lib/Semantics/resolve-directives.cpp
@@ -610,10 +610,8 @@ class OmpAttributeVisitor : DirectiveAttributeVisitor<llvm::omp::Directive> {
bool Pre(const parser::OpenMPDepobjConstruct &x) {
PushContext(x.source, llvm::omp::Directive::OMPD_depobj);
for (auto &arg : x.v.Arguments().v) {
- if (auto *locator{std::get_if<parser::OmpLocator>(&arg.u)}) {
- if (auto *object{std::get_if<parser::OmpObject>(&locator->u)}) {
- ResolveOmpObject(*object, Symbol::Flag::OmpDependObject);
- }
+ if (auto *object{parser::omp::GetArgumentObject(arg)}) {
+ ResolveOmpObject(*object, Symbol::Flag::OmpDependObject);
}
}
return true;
@@ -623,15 +621,13 @@ class OmpAttributeVisitor : DirectiveAttributeVisitor<llvm::omp::Directive> {
bool Pre(const parser::OpenMPFlushConstruct &x) {
PushContext(x.source, llvm::omp::Directive::OMPD_flush);
for (auto &arg : x.v.Arguments().v) {
- if (auto *locator{std::get_if<parser::OmpLocator>(&arg.u)}) {
- if (auto *object{std::get_if<parser::OmpObject>(&locator->u)}) {
- if (auto *name{std::get_if<parser::Name>(&object->u)}) {
- // ResolveOmpCommonBlockName resolves the symbol as a side effect
- if (!ResolveOmpCommonBlockName(name)) {
- context_.Say(name->source, // 2.15.3
- "COMMON block must be declared in the same scoping unit "
- "in which the OpenMP directive or clause appears"_err_en_US);
- }
+ if (auto *object{parser::omp::GetArgumentObject(arg)}) {
+ if (auto *name{std::get_if<parser::Name>(&object->u)}) {
+ // ResolveOmpCommonBlockName resolves the symbol as a side effect
+ if (!ResolveOmpCommonBlockName(name)) {
+ context_.Say(name->source, // 2.15.3
+ "COMMON block must be declared in the same scoping unit "
+ "in which the OpenMP directive or clause appears"_err_en_US);
}
}
}
@@ -2150,10 +2146,8 @@ void OmpAttributeVisitor::PrivatizeAssociatedLoopIndex(
bool OmpAttributeVisitor::Pre(const parser::OpenMPGroupprivate &x) {
PushContext(x.source, llvm::omp::Directive::OMPD_groupprivate);
for (const parser::OmpArgument &arg : x.v.Arguments().v) {
- if (auto *locator{std::get_if<parser::OmpLocator>(&arg.u)}) {
- if (auto *object{std::get_if<parser::OmpObject>(&locator->u)}) {
- ResolveOmpObject(*object, Symbol::Flag::OmpGroupPrivate);
- }
+ if (auto *object{parser::omp::GetArgumentObject(arg)}) {
+ ResolveOmpObject(*object, Symbol::Flag::OmpGroupPrivate);
}
}
return true;
``````````
</details>
https://github.com/llvm/llvm-project/pull/194952
More information about the flang-commits
mailing list