[flang-commits] [flang] [flang][OpenMP] Simplify unpacking directive arguments, NFC (PR #194952)
Krzysztof Parzyszek via flang-commits
flang-commits at lists.llvm.org
Wed Apr 29 13:47:14 PDT 2026
https://github.com/kparzysz created https://github.com/llvm/llvm-project/pull/194952
Use GetArgumentObject in a few places instead of doing the unpacking by hand.
>From 79ccd85c2edad87a65f4d80a0b8dafb6f025998d Mon Sep 17 00:00:00 2001
From: Krzysztof Parzyszek <Krzysztof.Parzyszek at amd.com>
Date: Wed, 29 Apr 2026 15:45:21 -0500
Subject: [PATCH] [flang][OpenMP] Simplify unpacking directive arguments, NFC
Use GetArgumentObject in a few places instead of doing the unpacking
by hand.
---
flang/lib/Semantics/resolve-directives.cpp | 28 +++++++++-------------
1 file changed, 11 insertions(+), 17 deletions(-)
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;
More information about the flang-commits
mailing list