Lines Matching full:characteristics
29 getProcedureType(const Fortran::evaluate::characteristics::Procedure &proc,
42 const Fortran::evaluate::characteristics::Procedure *,
178 static Fortran::evaluate::characteristics::DummyDataObject
179 asImplicitArg(Fortran::evaluate::characteristics::DummyDataObject &&dummy) {
184 return Fortran::evaluate::characteristics::DummyDataObject(
185 Fortran::evaluate::characteristics::TypeAndShape(dummy.type.type(),
189 static Fortran::evaluate::characteristics::DummyArgument
190 asImplicitArg(Fortran::evaluate::characteristics::DummyArgument &&dummy) {
193 [&](Fortran::evaluate::characteristics::DummyDataObject &obj) {
194 return Fortran::evaluate::characteristics::DummyArgument(
197 [&](Fortran::evaluate::characteristics::DummyProcedure &proc) {
198 return Fortran::evaluate::characteristics::DummyArgument(
201 [](Fortran::evaluate::characteristics::AlternateReturn &x) {
202 return Fortran::evaluate::characteristics::DummyArgument(
216 Fortran::evaluate::characteristics::Procedure
220 std::optional<Fortran::evaluate::characteristics::Procedure> characteristic =
221 Fortran::evaluate::characteristics::Procedure::Characterize(
262 Fortran::evaluate::characteristics::AlternateReturn{});
268 std::optional<Fortran::evaluate::characteristics::DummyArgument>
270 Fortran::evaluate::characteristics::DummyArgument::FromActual(
320 const Fortran::evaluate::characteristics::TypeAndShape &typeAndShape,
342 const Fortran::evaluate::characteristics::FunctionResult &result =
344 const Fortran::evaluate::characteristics::TypeAndShape *typeAndShape =
352 if (!passedEntity.characteristics)
355 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
356 &passedEntity.characteristics->u))
415 const std::optional<Fortran::evaluate::characteristics::FunctionResult>
535 Fortran::evaluate::characteristics::Procedure
539 std::optional<Fortran::evaluate::characteristics::Procedure> characteristic =
540 Fortran::evaluate::characteristics::Procedure::Characterize(
631 std::optional<Fortran::evaluate::characteristics::Procedure>
798 getEntityContainer(const Fortran::evaluate::characteristics::Procedure &proc) {
804 getResultEntity(const Fortran::evaluate::characteristics::Procedure &proc) {
819 using TypeAndShape = Fortran::evaluate::characteristics::TypeAndShape;
821 Fortran::evaluate::characteristics::DummyArgument;
828 const Fortran::evaluate::characteristics::Procedure &procedure) {
830 if (const std::optional<Fortran::evaluate::characteristics::FunctionResult>
840 const Fortran::evaluate::characteristics::DummyArgument
848 [&](const Fortran::evaluate::characteristics::AlternateReturn &) {
857 const Fortran::evaluate::characteristics::Procedure &procedure) {
860 if (const std::optional<Fortran::evaluate::characteristics::FunctionResult>
874 const Fortran::evaluate::characteristics::DummyArgument
878 [&](const Fortran::evaluate::characteristics::DummyDataObject
887 [&](const Fortran::evaluate::characteristics::DummyProcedure
892 [&](const Fortran::evaluate::characteristics::AlternateReturn &) {
912 const Fortran::evaluate::characteristics::Procedure &procedure) {
913 if (const std::optional<Fortran::evaluate::characteristics::FunctionResult>
921 const Fortran::evaluate::characteristics::Procedure &procedure) {
947 const Fortran::evaluate::characteristics::FunctionResult &result,
956 const Fortran::evaluate::characteristics::TypeAndShape *typeAndShape =
1030 const Fortran::evaluate::characteristics::DummyDataObject &obj) {
1038 const DummyCharacteristics *characteristics,
1039 const Fortran::evaluate::characteristics::DummyDataObject &obj,
1049 addPassedArg(PassEntityBy::Value, entity, characteristics);
1056 addPassedArg(PassEntityBy::BaseAddress, entity, characteristics);
1066 addPassedArg(PassEntityBy::BoxChar, entity, characteristics);
1072 addPassedArg(PassEntityBy::BaseAddress, entity, characteristics);
1095 const DummyCharacteristics *characteristics,
1096 const Fortran::evaluate::characteristics::DummyDataObject &obj,
1098 using Attrs = Fortran::evaluate::characteristics::DummyDataObject::Attr;
1157 addPassedArg(PassEntityBy::MutableBox, entity, characteristics);
1164 addPassedArg(PassEntityBy::Box, entity, characteristics);
1172 addPassedArg(PassEntityBy::Value, entity, characteristics);
1181 entity, characteristics);
1212 addPassedArg(passBy, entity, characteristics);
1217 const DummyCharacteristics *characteristics,
1218 const Fortran::evaluate::characteristics::DummyProcedure &proc,
1222 Fortran::evaluate::characteristics::DummyProcedure::Attr::Pointer))
1225 const Fortran::evaluate::characteristics::Procedure &procedure =
1229 if (proc.attrs.test(Fortran::evaluate::characteristics::DummyProcedure::
1234 addPassedArg(PassEntityBy::BoxProcRef, entity, characteristics);
1251 addPassedArg(PassEntityBy::CharProcTuple, entity, characteristics);
1255 addPassedArg(PassEntityBy::BaseAddress, entity, characteristics);
1259 const Fortran::evaluate::characteristics::FunctionResult &result) {
1260 using Attr = Fortran::evaluate::characteristics::FunctionResult::Attr;
1269 const Fortran::evaluate::characteristics::TypeAndShape *typeAndShape =
1308 const Fortran::evaluate::characteristics::TypeAndShape &typeAndShape) {
1344 const DummyCharacteristics *characteristics) {
1346 PassedEntity{p, entity, emptyValue(), emptyValue(), characteristics});
1372 if (!characteristics)
1374 return characteristics->IsOptional();
1379 if (!characteristics)
1381 if (characteristics->GetIntent() == Fortran::common::Intent::In)
1387 if (!characteristics)
1389 return characteristics->GetIntent() != Fortran::common::Intent::Out;
1395 if (!characteristics)
1398 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
1399 &characteristics->u);
1407 if (!characteristics)
1409 return characteristics->GetIntent() == Fortran::common::Intent::Out;
1414 if (!characteristics)
1417 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
1418 &characteristics->u);
1422 using ShapeAttrs = Fortran::evaluate::characteristics::TypeAndShape::Attr;
1426 Fortran::evaluate::characteristics::DummyDataObject::Attr::Contiguous);
1435 if (!characteristics)
1438 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
1439 &characteristics->u);
1442 Fortran::evaluate::characteristics::DummyDataObject::Attr::Value);
1448 if (!characteristics)
1451 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
1452 &characteristics->u);
1453 using Attrs = Fortran::evaluate::characteristics::DummyDataObject::Attr;
1461 if (!characteristics)
1469 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
1470 &characteristics->u);
1475 using Attrs = Fortran::evaluate::characteristics::DummyDataObject::Attr;
1499 if (!characteristics || passBy != PassEntityBy::Box)
1502 std::get_if<Fortran::evaluate::characteristics::DummyDataObject>(
1503 &characteristics->u);
1510 const Fortran::evaluate::characteristics::Procedure &procedure) {
1564 // meaningless on calls since this is not part of Fortran characteristics
1591 /// Build signature from characteristics when there is no Fortran entity to
1604 /// help translating characteristics::Procedure to mlir::FunctionType using
1609 SignatureBuilder(const Fortran::evaluate::characteristics::Procedure &p,
1618 proc{Fortran::evaluate::characteristics::Procedure::Characterize(
1621 /// Does the procedure characteristics being translated have alternate
1624 for (const Fortran::evaluate::characteristics::DummyArgument &dummy :
1627 Fortran::evaluate::characteristics::AlternateReturn>(dummy.u))
1654 Fortran::evaluate::characteristics::Procedure characterize() const {
1660 /// Return the characteristics::Procedure that is being translated to
1662 const Fortran::evaluate::characteristics::Procedure &
1675 // Most unrestricted intrinsic characteristics have the Elemental attribute
1703 Fortran::evaluate::characteristics::Procedure proc;
1729 // Is it required to pass a dummy procedure with \p characteristics as a tuple
1732 const std::optional<Fortran::evaluate::characteristics::Procedure>
1733 &characteristics) {
1734 return characteristics &&
1736 mustPassLengthWithDummyProcedure(*characteristics);
1742 std::optional<Fortran::evaluate::characteristics::Procedure> characteristics =
1743 Fortran::evaluate::characteristics::Procedure::Characterize(
1745 return ::mustPassLengthWithDummyProcedure(characteristics);
1751 std::optional<Fortran::evaluate::characteristics::Procedure> iface =
1752 Fortran::evaluate::characteristics::Procedure::Characterize(
1768 getProcedureType(const Fortran::evaluate::characteristics::Procedure &proc,