9#ifndef FORTRAN_EVALUATE_INTRINSICS_H_
10#define FORTRAN_EVALUATE_INTRINSICS_H_
13#include "characteristics.h"
14#include "flang/Parser/char-block.h"
15#include "flang/Parser/message.h"
16#include "flang/Support/default-kinds.h"
25namespace Fortran::semantics {
35bool CheckAndRearrangeArguments(ActualArguments &, parser::ContextualMessages &,
36 const char *
const dummyKeywords[] ,
37 std::size_t trailingOptionals = 0);
41 bool isSubroutineCall{
false};
46 : specificIntrinsic{std::move(si)}, arguments{std::move(as)} {}
48 ActualArguments arguments;
52 SpecificIntrinsicFunctionInterface(
55 isRestrictedSpecific{isRestrictedSpecific} {}
56 std::string genericName;
57 bool isRestrictedSpecific;
63ENUM_CLASS(IntrinsicClass, atomicSubroutine, collectiveSubroutine,
64 elementalFunction, elementalSubroutine, inquiryFunction, pureSubroutine,
65 simpleSubroutine, simpleElementalSubroutine, impureFunction,
66 impureSubroutine, transformationalFunction, noClass)
68class IntrinsicProcTable {
72 IntrinsicProcTable() =
default;
75 ~IntrinsicProcTable();
76 IntrinsicProcTable(IntrinsicProcTable &&) =
default;
78 static IntrinsicProcTable Configure(
86 bool IsIntrinsic(
const std::string &)
const;
87 bool IsIntrinsicFunction(
const std::string &)
const;
88 bool IsIntrinsicSubroutine(
const std::string &)
const;
89 bool IsDualIntrinsic(
const std::string &)
const;
92 IntrinsicClass GetIntrinsicClass(
const std::string &)
const;
97 std::string GetGenericIntrinsicName(
const std::string &)
const;
106 std::optional<SpecificCall> Probe(
110 std::optional<SpecificIntrinsicFunctionInterface> IsSpecificIntrinsicFunction(
111 const std::string &)
const;
115 static const inline std::string InvalidName{
116 "(invalid intrinsic function call)"};
119 static inline const char *
const BuiltinIntName{
"__builtin_int"};
121 llvm::raw_ostream &Dump(llvm::raw_ostream &)
const;
124 std::unique_ptr<Implementation> impl_;
129bool AcceptsIntentOutAllocatableCoarray(
const std::string &);
Definition default-kinds.h:26
Definition intrinsics.h:39
Definition characteristics.h:367