diff --git a/flang/lib/Semantics/check-omp-atomic.cpp b/flang/lib/Semantics/check-omp-atomic.cpp index 515121af04d56..2707921ca1dfa 100644 --- a/flang/lib/Semantics/check-omp-atomic.cpp +++ b/flang/lib/Semantics/check-omp-atomic.cpp @@ -286,7 +286,7 @@ static std::optional AnalyzeConditionalStmt( // Extract the evaluate::Expr from ScalarLogicalExpr. auto getFromLogical{[](const parser::ScalarLogicalExpr &logical) { // ScalarLogicalExpr is Scalar>> - const parser::Expr &expr{logical.thing.thing.value()}; + auto &expr{parser::UnwrapRef(logical)}; return GetEvaluateExpr(expr); }}; diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp index 7067ed3d99286..8fe5fd83ee6d8 100644 --- a/flang/lib/Semantics/resolve-directives.cpp +++ b/flang/lib/Semantics/resolve-directives.cpp @@ -560,7 +560,7 @@ class OmpAttributeVisitor : DirectiveAttributeVisitor { auto getArgument{[&](auto &&maybeClause) { if (maybeClause) { // Scalar>>> - auto &parserExpr{maybeClause->v.thing.thing.thing.value()}; + auto &parserExpr{parser::UnwrapRef(*maybeClause)}; evaluate::ExpressionAnalyzer ea{context_}; if (auto &&maybeExpr{ea.Analyze(parserExpr)}) { if (auto v{omp::GetLogicalValue(*maybeExpr)}) {