Lines Matching defs:intrinsic

42     "use-hlfir-intrinsic-ops", llvm::cl::init(true),
43 llvm::cl::desc("Lower via HLFIR transformational intrinsic operations such "
918 // CHAR() intrinsic and BIND(C) procedures returning CHARACTER(1)
1834 /// Lower calls to intrinsic procedures with custom optional handling where the
1838 const Fortran::evaluate::SpecificIntrinsic *intrinsic,
1842 assert(intrinsic &&
1844 callContext.procRef, *intrinsic, callContext.converter));
1881 /// Lower calls to intrinsic procedures with actual arguments that have been
1885 const Fortran::evaluate::SpecificIntrinsic *intrinsic,
1889 if (intrinsic && Fortran::lower::intrinsicRequiresCustomOptionalHandling(
1890 callContext.procRef, *intrinsic, converter))
1891 return genCustomIntrinsicRefCore(loweredActuals, intrinsic, callContext);
2036 // Let the intrinsic library lower the intrinsic procedure call.
2051 "expect intrinsic scalar results to not be in memory");
2054 // (this is the only intrinsic implemented in that way so far). The
2067 /// Lower calls to intrinsic procedures with actual arguments that have been
2071 const Fortran::evaluate::SpecificIntrinsic *intrinsic,
2074 // Try lowering transformational intrinsic ops to HLFIR ops if enabled
2090 // fallback to calling the intrinsic via fir.call
2091 return genIntrinsicRefCore(loweredActuals, intrinsic, intrinsicEntry,
2349 const Fortran::evaluate::SpecificIntrinsic *intrinsic,
2351 : intrinsic{intrinsic}, intrinsicEntry{intrinsicEntry},
2356 return genHLFIRIntrinsicRefCore(loweredActuals, intrinsic, intrinsicEntry,
2359 // Elemental intrinsic functions cannot modify their arguments.
2362 // Elemental intrinsic functions never need the actual addresses
2370 if (intrinsic)
2371 if (intrinsic->name == "adjustr" || intrinsic->name == "adjustl" ||
2372 intrinsic->name == "merge")
2384 if (!intrinsic)
2387 if (intrinsic->name == "merge") {
2409 const Fortran::evaluate::SpecificIntrinsic *intrinsic;
2445 // Lower a reference to an elemental intrinsic procedure with array arguments
2449 const Fortran::evaluate::SpecificIntrinsic *intrinsic,
2456 assert(intrinsic && Fortran::lower::intrinsicRequiresCustomOptionalHandling(
2457 callContext.procRef, *intrinsic, converter));
2480 callContext.procRef, *intrinsic, callContext.resultType,
2488 "intrinsic with custom handling for OPTIONAL arguments must have "
2490 // All of the custom intrinsic elementals with custom handling are pure
2492 return ElementalIntrinsicCallBuilder{intrinsic, *intrinsicEntry,
2497 // Lower a reference to an intrinsic procedure with custom optional handling
2499 genCustomIntrinsicRef(const Fortran::evaluate::SpecificIntrinsic *intrinsic,
2507 assert(intrinsic && Fortran::lower::intrinsicRequiresCustomOptionalHandling(
2508 callContext.procRef, *intrinsic, converter));
2558 callContext.procRef, *intrinsic, callContext.resultType,
2561 return genCustomIntrinsicRefCore(loweredActuals, intrinsic, callContext);
2564 /// Lower an intrinsic procedure reference.
2565 /// \p intrinsic is null if this is an intrinsic module procedure that must be
2566 /// lowered as if it were an intrinsic module procedure (like C_LOC which is a
2567 /// procedure from intrinsic module iso_c_binding). Otherwise, \p intrinsic
2571 genIntrinsicRef(const Fortran::evaluate::SpecificIntrinsic *intrinsic,
2603 "TYPE(*) are not expected to appear as optional intrinsic arguments");
2642 // All intrinsic elemental functions are pure.
2644 return ElementalIntrinsicCallBuilder{intrinsic, intrinsicEntry, isFunction}
2649 loweredActuals, intrinsic, intrinsicEntry, callContext);
2659 genIntrinsicRef(const Fortran::evaluate::SpecificIntrinsic *intrinsic,
2663 if (intrinsic && Fortran::lower::intrinsicRequiresCustomOptionalHandling(
2664 callContext.procRef, *intrinsic, converter)) {
2666 return genCustomElementalIntrinsicRef(intrinsic, callContext);
2667 return genCustomIntrinsicRef(intrinsic, callContext);
2675 return genIntrinsicRef(intrinsic, *intrinsicEntry, callContext);
2683 if (auto *intrinsic = callContext.procRef.proc().GetSpecificIntrinsic())
2684 return genIntrinsicRef(intrinsic, callContext);