llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-flang-semantics Author: None (llvmbot) <details> <summary>Changes</summary> Backport e0d922ee20e1948b2a1a2aa9689ceb14796d2a91 Requested by: @<!-- -->kparzysz --- Full diff: https://github.com/llvm/llvm-project/pull/180202.diff 2 Files Affected: - (modified) flang/lib/Lower/OpenMP/DataSharingProcessor.cpp (+1-2) - (modified) flang/lib/Semantics/resolve-names.cpp (+14-6) ``````````diff diff --git a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp index 83c2eda0a2dc7..a958ec9ba503c 100644 --- a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp +++ b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp @@ -479,8 +479,7 @@ void DataSharingProcessor::collectSymbols( for (const semantics::Scope &child : scope->children()) collectScopes(&child); }; - parser::CharBlock source = - clauses.empty() ? getSource(semaCtx, eval) : clauses.front().source; + parser::CharBlock source = getSource(semaCtx, eval); const semantics::Scope *curScope = nullptr; if (!source.empty()) { curScope = &semaCtx.FindScope(source); diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp index d2a3331710dba..a547e8ae40ed4 100644 --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -1567,6 +1567,8 @@ void AccVisitor::Post(const parser::OpenACCCombinedConstruct &x) { PopScope(); } class OmpVisitor : public virtual DeclarationVisitor { public: void AddOmpSourceRange(const parser::CharBlock &); + void PushScopeWithSource( + Scope::Kind kind, parser::CharBlock source, Symbol *symbol = nullptr); static bool NeedsScope(const parser::OmpBlockConstruct &); static bool NeedsScope(const parser::OmpClause &); @@ -1590,8 +1592,8 @@ class OmpVisitor : public virtual DeclarationVisitor { Post(static_cast<const parser::OmpDirectiveSpecification &>(x)); } - bool Pre(const parser::OpenMPLoopConstruct &) { - PushScope(Scope::Kind::OtherConstruct, nullptr); + bool Pre(const parser::OpenMPLoopConstruct &x) { + PushScopeWithSource(Scope::Kind::OtherConstruct, x.source); return true; } void Post(const parser::OpenMPLoopConstruct &) { PopScope(); } @@ -1635,8 +1637,8 @@ class OmpVisitor : public virtual DeclarationVisitor { } bool Pre(const parser::OmpMapClause &); - bool Pre(const parser::OpenMPSectionsConstruct &) { - PushScope(Scope::Kind::OtherConstruct, nullptr); + bool Pre(const parser::OpenMPSectionsConstruct &x) { + PushScopeWithSource(Scope::Kind::OtherConstruct, x.source); return true; } void Post(const parser::OpenMPSectionsConstruct &) { PopScope(); } @@ -1742,7 +1744,7 @@ class OmpVisitor : public virtual DeclarationVisitor { } bool Pre(const parser::OmpClause &x) { if (NeedsScope(x)) { - PushScope(Scope::Kind::OtherClause, nullptr); + PushScopeWithSource(Scope::Kind::OtherClause, x.source); } return true; } @@ -1811,9 +1813,15 @@ void OmpVisitor::AddOmpSourceRange(const parser::CharBlock &source) { currScope().AddSourceRange(source); } +void OmpVisitor::PushScopeWithSource( + Scope::Kind kind, parser::CharBlock source, Symbol *symbol) { + PushScope(kind, symbol); + currScope().AddSourceRange(source); +} + bool OmpVisitor::Pre(const parser::OmpBlockConstruct &x) { if (NeedsScope(x)) { - PushScope(Scope::Kind::OtherConstruct, nullptr); + PushScopeWithSource(Scope::Kind::OtherConstruct, x.source); } return true; } `````````` </details> https://github.com/llvm/llvm-project/pull/180202 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
