From a12981c7769cc1e8660f8b5ff747d63d07af19ad Mon Sep 17 00:00:00 2001 From: Eric Schweitz Date: Fri, 8 Feb 2019 10:53:18 -0800 Subject: [PATCH] [flang] Fix for both issues 274 and 278 Original-commit: flang-compiler/f18@9bb54046c7ab1404533120eb3f321d6d911c0c4e Reviewed-on: https://github.com/flang-compiler/f18/pull/280 --- flang/lib/semantics/resolve-labels.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/flang/lib/semantics/resolve-labels.cc b/flang/lib/semantics/resolve-labels.cc index 7bbd3e7..b731c98 100644 --- a/flang/lib/semantics/resolve-labels.cc +++ b/flang/lib/semantics/resolve-labels.cc @@ -228,10 +228,13 @@ public: } // see 11.1.1 - bool Pre(const parser::ProgramUnit &) { return PushNewScope(); } - bool Pre(const parser::FunctionSubprogram &) { return PushSubscope(); } - bool Pre(const parser::SubroutineSubprogram &) { return PushSubscope(); } - bool Pre(const parser::SeparateModuleSubprogram &) { return PushSubscope(); } + bool Pre(const parser::ProgramUnit &) { return InitializeNewScopeContext(); } + bool Pre(const parser::InternalSubprogram &) { + return InitializeNewScopeContext(); + } + bool Pre(const parser::ModuleSubprogram &) { + return InitializeNewScopeContext(); + } bool Pre(const parser::AssociateConstruct &associateConstruct) { return PushConstructName(associateConstruct); } @@ -279,7 +282,6 @@ public: return PushConstructNameWithoutBlock(forallConstruct); } - void Post(const parser::ProgramUnit &) { PopScope(); } void Post(const parser::AssociateConstruct &associateConstruct) { PopConstructName(associateConstruct); } @@ -353,7 +355,6 @@ public: CheckOptionalName("FUNCTION", functionSubprogram, std::get>( functionSubprogram.t)); - PopScope(); } void Post(const parser::InterfaceBlock &interfaceBlock) { auto &interfaceStmt{ @@ -398,7 +399,6 @@ public: separateModuleSubprogram, std::get>( separateModuleSubprogram.t)); - PopScope(); } // C1401 @@ -433,7 +433,6 @@ public: subroutineSubprogram, std::get>( subroutineSubprogram.t)); - PopScope(); } // C739 @@ -495,8 +494,9 @@ private: currentScope_ = programUnits_.back().scopeModel.size() - 1; return true; } - bool PushNewScope() { + bool InitializeNewScopeContext() { programUnits_.emplace_back(UnitAnalysis{}); + currentScope_ = 0u; return PushSubscope(); } void PopScope() { @@ -758,7 +758,7 @@ private: std::vector programUnits_; parser::Messages &errorHandler_; parser::CharBlock currentPosition_{nullptr}; - ProxyForScope currentScope_{0}; + ProxyForScope currentScope_; std::vector constructNames_; }; -- 2.7.4