diff --git a/flang/lib/Evaluate/shape.cpp b/flang/lib/Evaluate/shape.cpp --- a/flang/lib/Evaluate/shape.cpp +++ b/flang/lib/Evaluate/shape.cpp @@ -490,16 +490,10 @@ [&](const semantics::ProcBindingDetails &binding) { return (*this)(binding.symbol()); }, - [&](const semantics::UseDetails &use) { - return (*this)(use.symbol()); - }, - [&](const semantics::HostAssocDetails &assoc) { - return (*this)(assoc.symbol()); - }, [](const semantics::TypeParamDetails &) { return ScalarShape(); }, [](const auto &) { return Result{}; }, }, - symbol.details()); + symbol.GetUltimate().details()); } auto GetShapeHelper::operator()(const Component &component) const -> Result { diff --git a/flang/lib/Evaluate/variable.cpp b/flang/lib/Evaluate/variable.cpp --- a/flang/lib/Evaluate/variable.cpp +++ b/flang/lib/Evaluate/variable.cpp @@ -269,7 +269,7 @@ return len; } else if (IsDescriptor(ultimate) && !ultimate.owner().IsDerivedType()) { return Expr{DescriptorInquiry{ - NamedEntity{ultimate}, DescriptorInquiry::Field::Len}}; + NamedEntity{symbol}, DescriptorInquiry::Field::Len}}; } } return std::nullopt;