@@ -522,47 +522,49 @@ class OmpAttributeVisitor : DirectiveAttributeVisitor<llvm::omp::Directive> {
522
522
const auto &objList{std::get<parser::OmpObjectList>(x.v .t )};
523
523
ResolveOmpObjectList (objList, Symbol::Flag::OmpReduction);
524
524
525
- if (auto &modifiers{OmpGetModifiers (x.v )}) {
526
- auto createDummyProcSymbol = [&](const parser::Name *name) {
527
- // If name resolution failed, create a dummy symbol
528
- const auto namePair{currScope ().try_emplace (
529
- name->source , Attrs{}, ProcEntityDetails{})};
530
- auto &newSymbol{*namePair.first ->second };
531
- if (context_.intrinsics ().IsIntrinsic (name->ToString ())) {
532
- newSymbol.attrs ().set (Attr::INTRINSIC);
533
- }
534
- name->symbol = &newSymbol;
535
- };
525
+ auto &modifiers{OmpGetModifiers (x.v )};
526
+ if (!modifiers) {
527
+ return false ;
528
+ }
536
529
537
- for (auto &mod : *modifiers) {
538
- if (!std::holds_alternative<parser::OmpReductionIdentifier>(mod.u )) {
539
- continue ;
540
- }
541
- auto &opr{std::get<parser::OmpReductionIdentifier>(mod.u )};
542
- if (auto *procD{parser::Unwrap<parser::ProcedureDesignator>(opr.u )}) {
543
- if (auto *name{parser::Unwrap<parser::Name>(procD->u )}) {
544
- if (!name->symbol ) {
545
- if (!ResolveName (name)) {
546
- createDummyProcSymbol (name);
547
- }
530
+ auto createDummyProcSymbol = [&](const parser::Name *name) {
531
+ // If name resolution failed, create a dummy symbol
532
+ const auto namePair{
533
+ currScope ().try_emplace (name->source , Attrs{}, ProcEntityDetails{})};
534
+ auto &newSymbol{*namePair.first ->second };
535
+ if (context_.intrinsics ().IsIntrinsic (name->ToString ())) {
536
+ newSymbol.attrs ().set (Attr::INTRINSIC);
537
+ }
538
+ name->symbol = &newSymbol;
539
+ };
540
+
541
+ for (auto &mod : *modifiers) {
542
+ if (!std::holds_alternative<parser::OmpReductionIdentifier>(mod.u )) {
543
+ continue ;
544
+ }
545
+ auto &opr{std::get<parser::OmpReductionIdentifier>(mod.u )};
546
+ if (auto *procD{parser::Unwrap<parser::ProcedureDesignator>(opr.u )}) {
547
+ if (auto *name{parser::Unwrap<parser::Name>(procD->u )}) {
548
+ if (!name->symbol ) {
549
+ if (!ResolveName (name)) {
550
+ createDummyProcSymbol (name);
548
551
}
549
552
}
550
- if (auto *procRef{
551
- parser::Unwrap<parser::ProcComponentRef>(procD->u )}) {
552
- if (!procRef->v .thing .component .symbol ) {
553
- if (!ResolveName (&procRef->v .thing .component )) {
554
- createDummyProcSymbol (&procRef->v .thing .component );
555
- }
553
+ }
554
+ if (auto *procRef{parser::Unwrap<parser::ProcComponentRef>(procD->u )}) {
555
+ if (!procRef->v .thing .component .symbol ) {
556
+ if (!ResolveName (&procRef->v .thing .component )) {
557
+ createDummyProcSymbol (&procRef->v .thing .component );
556
558
}
557
559
}
558
560
}
559
561
}
560
- using ReductionModifier = parser::OmpReductionModifier;
561
- if ( auto *maybeModifier{
562
- OmpGetUniqueModifier<ReductionModifier>(modifiers)}) {
563
- if (maybeModifier-> v == ReductionModifier::Value::Inscan ) {
564
- ResolveOmpObjectList (objList, Symbol::Flag::OmpInScanReduction);
565
- }
562
+ }
563
+ using ReductionModifier = parser::OmpReductionModifier;
564
+ if ( auto *maybeModifier {
565
+ OmpGetUniqueModifier< ReductionModifier>(modifiers)} ) {
566
+ if (maybeModifier-> v == ReductionModifier::Value::Inscan) {
567
+ ResolveOmpObjectList (objList, Symbol::Flag::OmpInScanReduction);
566
568
}
567
569
}
568
570
return false ;
0 commit comments