aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Semantics/openmp-utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'flang/lib/Semantics/openmp-utils.cpp')
-rw-r--r--flang/lib/Semantics/openmp-utils.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/flang/lib/Semantics/openmp-utils.cpp b/flang/lib/Semantics/openmp-utils.cpp
index 6b304b6..4a40d6e 100644
--- a/flang/lib/Semantics/openmp-utils.cpp
+++ b/flang/lib/Semantics/openmp-utils.cpp
@@ -186,6 +186,23 @@ bool IsExtendedListItem(const Symbol &sym) {
return IsVariableListItem(sym) || sym.IsSubprogram();
}
+bool IsTypeParamInquiry(const Symbol &sym) {
+ return common::visit( //
+ common::visitors{
+ [&](const MiscDetails &d) {
+ return d.kind() == MiscDetails::Kind::KindParamInquiry ||
+ d.kind() == MiscDetails::Kind::LenParamInquiry;
+ },
+ [&](const TypeParamDetails &s) { return true; },
+ [&](auto &&) { return false; },
+ },
+ sym.details());
+}
+
+bool IsStructureComponent(const Symbol &sym) {
+ return sym.owner().kind() == Scope::Kind::DerivedType;
+}
+
bool IsVarOrFunctionRef(const MaybeExpr &expr) {
if (expr) {
return evaluate::UnwrapProcedureRef(*expr) != nullptr ||