Lines Matching full:semantics

43 #include "flang/Semantics/runtime-type-info.h"
44 #include "flang/Semantics/tools.h"
77 const Fortran::semantics::Symbol &sym) {
78 if (sym.has<Fortran::semantics::ObjectEntityDetails>() && sym.size())
79 if (!Fortran::semantics::IsAllocatableOrPointer(sym))
80 if (const Fortran::semantics::DeclTypeSpec *declTypeSpec = sym.GetType())
81 if (const Fortran::semantics::DerivedTypeSpec *derivedTypeSpec =
93 const bool ignorePointer = Fortran::semantics::IsIntentOut(sym);
101 static bool hasFinalization(const Fortran::semantics::Symbol &sym) {
102 if (sym.has<Fortran::semantics::ObjectEntityDetails>())
103 if (const Fortran::semantics::DeclTypeSpec *declTypeSpec = sym.GetType())
104 if (const Fortran::semantics::DerivedTypeSpec *derivedTypeSpec =
106 return Fortran::semantics::IsFinalizable(*derivedTypeSpec);
112 hasAllocatableDirectComponent(const Fortran::semantics::Symbol &sym) {
113 if (sym.has<Fortran::semantics::ObjectEntityDetails>())
114 if (const Fortran::semantics::DeclTypeSpec *declTypeSpec = sym.GetType())
115 if (const Fortran::semantics::DerivedTypeSpec *derivedTypeSpec =
117 return Fortran::semantics::HasAllocatableDirectComponent(
142 static bool isConstant(const Fortran::semantics::Symbol &sym) {
143 return sym.attrs().test(Fortran::semantics::Attr::PARAMETER) ||
144 sym.test(Fortran::semantics::Symbol::Flag::ReadOnly);
154 const Fortran::semantics::Symbol &sym) {
157 if (!sym.test(Fortran::semantics::Symbol::Flag::CompilerCreated))
170 const Fortran::semantics::Symbol &sym = var.getSymbol();
182 const Fortran::semantics::Symbol &ultimate = sym.GetUltimate();
183 if (!ultimate.has<Fortran::semantics::ObjectEntityDetails>() &&
184 !Fortran::semantics::IsProcedurePointer(ultimate))
194 hasDerivedTypeWithLengthParameters(const Fortran::semantics::Symbol &sym) {
195 if (const Fortran::semantics::DeclTypeSpec *declTy = sym.GetType())
196 if (const Fortran::semantics::DerivedTypeSpec *derived =
198 return Fortran::semantics::CountLenParameters(*derived) > 0;
208 if (const Fortran::semantics::Symbol *sym =
280 const Fortran::semantics::Symbol *sym =
323 const Fortran::semantics::Symbol &sym, mlir::Type symTy,
331 const Fortran::semantics::Symbol &component, fir::RecordType recTy,
339 component.detailsIf<Fortran::semantics::ObjectEntityDetails>()}) {
342 if (Fortran::semantics::IsPointer(component))
350 } else if (Fortran::semantics::IsAllocatableOrPointer(component)) {
369 .detailsIf<Fortran::semantics::ProcEntityDetails>()}) {
396 const Fortran::semantics::Symbol &sym, mlir::Type symTy,
409 const Fortran::semantics::DeclTypeSpec *declTy = sym.GetType();
416 const Fortran::semantics::Symbol &typeSymbol =
418 const Fortran::semantics::Scope *derivedScope =
422 typeSymbol.get<Fortran::semantics::DerivedTypeDetails>()
427 const Fortran::semantics::Symbol &component = scopeIter->second.get();
432 Fortran::semantics::OrderedComponentIterator components(
437 if (component.test(Fortran::semantics::Symbol::Flag::ParentComp))
502 const Fortran::semantics::Symbol &sym = var.getSymbol();
512 Fortran::semantics::IsProcedurePointer(sym))
520 !Fortran::semantics::IsAllocatableOrPointer(sym)) {
525 sym.detailsIf<Fortran::semantics::ObjectEntityDetails>();
541 if (Fortran::semantics::IsAllocatableOrPointer(sym) &&
542 !Fortran::semantics::IsProcedure(sym)) {
544 sym.detailsIf<Fortran::semantics::ObjectEntityDetails>();
565 sym.detailsIf<Fortran::semantics::ObjectEntityDetails>()) {
588 } else if (Fortran::semantics::IsProcedurePointer(sym)) {
589 const auto *details{sym.detailsIf<Fortran::semantics::ProcEntityDetails>()};
617 } else if (sym.has<Fortran::semantics::CommonBlockDetails>()) {
634 if (sym.attrs().test(Fortran::semantics::Attr::BIND_C))
675 const Fortran::semantics::Symbol &sym = var.getSymbol();
716 const Fortran::semantics::Symbol &ultimateSymbol =
725 if (ultimateSymbol.test(Fortran::semantics::Symbol::Flag::CrayPointee))
728 if (Fortran::semantics::NeedCUDAAlloc(ultimateSymbol)) {
746 if (!Fortran::semantics::IsProcedurePointer(ultimateSymbol))
761 const Fortran::semantics::Symbol &sym = var.getSymbol();
765 if (Fortran::semantics::IsDummy(sym) && !Fortran::semantics::IsIntentOut(sym))
769 if (Fortran::semantics::IsPolymorphic(sym) &&
770 Fortran::semantics::IsDummy(sym) &&
771 Fortran::semantics::IsIntentOut(sym) &&
772 !Fortran::semantics::IsAllocatable(sym) &&
773 !Fortran::semantics::IsPointer(sym))
783 const Fortran::semantics::Symbol &sym, Fortran::lower::SymMap &symMap) {
787 if (Fortran::semantics::IsOptional(sym)) {
808 const Fortran::semantics::Symbol &sym, Fortran::lower::SymMap &symMap) {
827 const Fortran::semantics::Symbol &sym = var.getSymbol();
828 const Fortran::semantics::Scope &owner = sym.owner();
829 if (owner.kind() == Fortran::semantics::Scope::Kind::MainProgram) {
833 if (!Fortran::semantics::IsPointer(sym) &&
834 !Fortran::semantics::IsDummy(sym) &&
835 !Fortran::semantics::IsFunctionResult(sym) &&
836 !Fortran::semantics::IsSaved(sym)) {
837 if (Fortran::semantics::IsAllocatable(sym))
861 const Fortran::semantics::Symbol &sym = var.getSymbol();
862 if (!Fortran::semantics::IsDummy(sym) ||
863 !Fortran::semantics::IsIntentOut(sym) ||
864 Fortran::semantics::IsAllocatable(sym) ||
865 Fortran::semantics::IsPointer(sym))
869 if (Fortran::semantics::IsPolymorphic(sym) ||
870 Fortran::semantics::IsUnlimitedPolymorphic(sym))
886 const Fortran::semantics::Symbol &sym = var.getSymbol();
888 if (Fortran::semantics::IsOptional(sym)) {
919 const Fortran::semantics::Symbol &sym = var.getSymbol();
920 if (Fortran::semantics::IsDummy(sym) &&
921 Fortran::semantics::IsIntentOut(sym) &&
922 Fortran::semantics::IsAllocatable(sym)) {
936 if (Fortran::semantics::IsOptional(sym)) {
966 if (Fortran::semantics::NeedCUDAAlloc(var.getSymbol())) {
1044 if (const Fortran::semantics::Symbol *initSym = st.getInitialValueSymbol())
1073 if (const Fortran::semantics::Symbol *initSym =
1076 initSym->detailsIf<Fortran::semantics::ObjectEntityDetails>())
1184 const Fortran::semantics::Symbol &sym = var.getSymbol();
1216 commonBlockHasInit(const Fortran::semantics::MutableSymbolVector &cmnBlkMems) {
1217 for (const Fortran::semantics::MutableSymbolRef &mem : cmnBlkMems) {
1219 mem->detailsIf<Fortran::semantics::ObjectEntityDetails>())
1232 const Fortran::semantics::MutableSymbolVector &cmnBlkMems,
1237 for (const Fortran::semantics::MutableSymbolRef &mem : cmnBlkMems) {
1239 mem->detailsIf<Fortran::semantics::ObjectEntityDetails>()) {
1270 static Fortran::semantics::MutableSymbolVector
1271 getCommonMembersWithInitAliases(const Fortran::semantics::Symbol &common) {
1273 common.get<Fortran::semantics::CommonBlockDetails>();
1279 for (const Fortran::semantics::EquivalenceSet &set :
1281 for (const Fortran::semantics::EquivalenceObject &obj : set) {
1282 if (!obj.symbol.test(Fortran::semantics::Symbol::Flag::CompilerCreated)) {
1285 .detailsIf<Fortran::semantics::ObjectEntityDetails>()) {
1286 const Fortran::semantics::Symbol *com =
1306 const Fortran::semantics::Symbol &common) {
1323 fir::GlobalOp, Fortran::semantics::MutableSymbolVector, mlir::Location>>
1325 const Fortran::semantics::Symbol &common,
1332 Fortran::semantics::MutableSymbolVector cmnBlkMems =
1337 common.detailsIf<Fortran::semantics::CommonBlockDetails>();
1357 // accepted as an extension by semantics). Sort members by offset before
1375 const Fortran::semantics::MutableSymbolVector &cmnBlkMems) {
1384 for (const Fortran::semantics::MutableSymbolRef &mem : cmnBlkMems) {
1386 mem->detailsIf<Fortran::semantics::ObjectEntityDetails>()) {
1397 Fortran::semantics::IsPointer(*mem)
1419 const Fortran::semantics::CommonBlockList &commonBlocks) {
1423 std::vector<std::tuple<fir::GlobalOp, Fortran::semantics::MutableSymbolVector,
1435 const Fortran::semantics::Symbol &sym, mlir::Value commonValue) {
1450 return Fortran::semantics::FindEquivalenceSet(sym) != nullptr
1459 const Fortran::semantics::Symbol &common,
1463 const Fortran::semantics::Symbol &varSym = var.getSymbol();
1488 static bool lowerToBoxValue(const Fortran::semantics::Symbol &sym,
1501 Fortran::semantics::IsOptional(sym))
1505 if (const Fortran::semantics::DeclTypeSpec *type = sym.GetType())
1538 for (const Fortran::semantics::ShapeSpec *spec : box.dynamicBound()) {
1644 mlir::MLIRContext *mlirContext, const Fortran::semantics::Symbol &sym,
1647 if (sym.test(Fortran::semantics::Symbol::Flag::CrayPointee)) {
1653 if (attrs.test(Fortran::semantics::Attr::ALLOCATABLE))
1655 if (attrs.test(Fortran::semantics::Attr::ASYNCHRONOUS))
1657 if (attrs.test(Fortran::semantics::Attr::BIND_C))
1659 if (attrs.test(Fortran::semantics::Attr::CONTIGUOUS))
1661 if (attrs.test(Fortran::semantics::Attr::INTENT_IN))
1663 if (attrs.test(Fortran::semantics::Attr::INTENT_INOUT))
1665 if (attrs.test(Fortran::semantics::Attr::INTENT_OUT))
1667 if (attrs.test(Fortran::semantics::Attr::OPTIONAL))
1669 if (attrs.test(Fortran::semantics::Attr::PARAMETER))
1671 if (attrs.test(Fortran::semantics::Attr::POINTER))
1673 if (attrs.test(Fortran::semantics::Attr::TARGET))
1675 if (attrs.test(Fortran::semantics::Attr::VALUE))
1677 if (attrs.test(Fortran::semantics::Attr::VOLATILE))
1685 mlir::MLIRContext *mlirContext, const Fortran::semantics::Symbol &sym) {
1687 Fortran::semantics::GetCUDADataAttr(&sym.GetUltimate());
1693 const Fortran::semantics::Symbol &sym) {
1705 if (const auto *equivSet = Fortran::semantics::FindEquivalenceSet(sym))
1706 for (const Fortran::semantics::EquivalenceObject &eqObj : *equivSet)
1717 const Fortran::semantics::Symbol &sym,
1731 (!Fortran::semantics::IsProcedure(sym) ||
1732 Fortran::semantics::IsPointer(sym)) &&
1733 !sym.detailsIf<Fortran::semantics::CommonBlockDetails>()) {
1757 if (sym.test(Fortran::semantics::Symbol::Flag::CrayPointee)) {
1763 Fortran::semantics::GetCUDADataAttr(&sym.GetUltimate()));
1830 Fortran::lower::SymMap &symMap, const Fortran::semantics::Symbol &sym,
1834 (!Fortran::semantics::IsProcedure(sym) ||
1835 Fortran::semantics::IsPointer(sym)) &&
1836 !sym.detailsIf<Fortran::semantics::CommonBlockDetails>()) {
1868 const Fortran::semantics::Symbol &sym,
1892 const Fortran::semantics::Symbol &sym,
1903 const Fortran::semantics::Symbol &sym,
1919 static unsigned getAllocatorIdx(const Fortran::semantics::Symbol &sym) {
1921 Fortran::semantics::GetCUDADataAttr(&sym.GetUltimate());
1945 const Fortran::semantics::Symbol &sym = var.getSymbol();
1948 const bool isDeclaredDummy = Fortran::semantics::IsDummy(sym);
1953 const bool isResult = Fortran::semantics::IsFunctionResult(sym);
1957 if (Fortran::semantics::IsProcedure(sym)) {
1968 if (Fortran::semantics::IsPointer(sym)) {
1992 if (Fortran::semantics::IsAllocatableOrPointer(sym)) {
2010 else if (Fortran::semantics::IsAssumedLengthCharacter(sym))
2014 } else if (const Fortran::semantics::DeclTypeSpec *declTy = sym.GetType()) {
2015 if (const Fortran::semantics::DerivedTypeSpec *derived =
2017 if (Fortran::semantics::CountLenParameters(*derived) != 0)
2051 if (Fortran::semantics::IsOptional(sym)) {
2122 assert(!Fortran::semantics::IsAllocatableOrPointer(sym) &&
2324 const bool isCptrByVal = Fortran::semantics::IsBuiltinCPtr(sym) &&
2376 const Fortran::semantics::Symbol &sym = var.getSymbol();
2377 if (const Fortran::semantics::Symbol *common =
2378 Fortran::semantics::FindCommonBlockContaining(var.getSymbol())) {
2408 else if (const Fortran::semantics::Symbol *common =
2409 Fortran::semantics::FindCommonBlockContaining(
2421 mapCallInterfaceSymbol(const Fortran::semantics::Symbol &interfaceSymbol,
2432 const Fortran::semantics::Symbol &sym = var.getSymbol();
2436 sym.detailsIf<Fortran::semantics::HostAssocDetails>();
2454 if (Fortran::semantics::IsDummy(sym) &&
2472 const Fortran::semantics::Symbol &result = caller.getResultSymbol();
2478 SymMap &symMap, const Fortran::semantics::Symbol &dummySymbol) {
2483 AbstractConverter &converter, const Fortran::semantics::SymbolRef &symbol,
2498 const Fortran::semantics::Symbol &typeInfoSym) {