From 965d114d8ccde72a40c63311caa6f8cbfb3ca511 Mon Sep 17 00:00:00 2001 From: Jean Perier Date: Wed, 31 Jul 2019 08:56:25 -0700 Subject: [PATCH] [flang] use newly added DEREF in component iterator Original-commit: flang-compiler/f18@2185f2000967b7d4b51bf2eba663ba3dcea43a4b Reviewed-on: https://github.com/flang-compiler/f18/pull/607 Tree-same-pre-rewrite: false --- flang/lib/semantics/tools.cc | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/flang/lib/semantics/tools.cc b/flang/lib/semantics/tools.cc index b0fdee8..1ca4184 100644 --- a/flang/lib/semantics/tools.cc +++ b/flang/lib/semantics/tools.cc @@ -831,8 +831,7 @@ void ComponentIterator::const_iterator::Increment() { : ComponentVisitState::Pre}; while (level >= 0) { bool descend{false}; - const Scope *scope{GetScope(componentPath_[level])}; - CHECK(scope); + const Scope &scope{DEREF(GetScope(componentPath_[level]))}; auto &levelIterator{GetIterator(componentPath_[level])}; const auto &levelEndIterator{GetTypeSymbol(componentPath_[level]) .template get() @@ -844,8 +843,7 @@ void ComponentIterator::const_iterator::Increment() { switch (state) { case ComponentVisitState::Resume: - CHECK(component); - if (StopAtComponentPre(*component)) { + if (StopAtComponentPre(DEREF(component))) { // The symbol was not yet considered for // traversal. descend = PlanComponentTraversal(*component); @@ -853,7 +851,7 @@ void ComponentIterator::const_iterator::Increment() { break; case ComponentVisitState::Pre: // Search iterator - if (auto iter{scope->find(*levelIterator)}; iter != scope->cend()) { + if (auto iter{scope.find(*levelIterator)}; iter != scope.cend()) { const Symbol *newComponent{iter->second}; SetComponentSymbol(componentPath_[level], newComponent); if (StopAtComponentPre(*newComponent)) { @@ -866,8 +864,7 @@ void ComponentIterator::const_iterator::Increment() { } break; case ComponentVisitState::Post: - CHECK(component); - if (StopAtComponentPost(*component)) { + if (StopAtComponentPost(DEREF(component))) { return; } break; @@ -910,11 +907,8 @@ template class ComponentIterator; UltimateComponentIterator::const_iterator FindCoarrayUltimateComponent( const DerivedTypeSpec &derived) { UltimateComponentIterator ultimates{derived}; - return std::find_if( - ultimates.begin(), ultimates.end(), [](const Symbol *component) { - CHECK(component); - return component->Corank() > 0; - }); + return std::find_if(ultimates.begin(), ultimates.end(), + [](const Symbol *component) { return DEREF(component).Corank() > 0; }); } PotentialComponentIterator::const_iterator FindEventOrLockPotentialComponent( @@ -922,8 +916,8 @@ PotentialComponentIterator::const_iterator FindEventOrLockPotentialComponent( PotentialComponentIterator potentials{derived}; return std::find_if( potentials.begin(), potentials.end(), [](const Symbol *component) { - CHECK(component); - if (const auto *details{component->detailsIf()}) { + if (const auto *details{ + DEREF(component).detailsIf()}) { const DeclTypeSpec *type{details->type()}; return type && IsEventTypeOrLockType(type->AsDerived()); } @@ -936,8 +930,7 @@ const Symbol *FindUltimateComponent(const DerivedTypeSpec &derived, UltimateComponentIterator ultimates{derived}; if (auto it{std::find_if(ultimates.begin(), ultimates.end(), [&predicate](const Symbol *component) -> bool { - CHECK(component); - return predicate(*component); + return predicate(DEREF(component)); })}) { return *it; } -- 2.7.4