9#ifndef FORTRAN_COMMON_FORTRAN_H_
10#define FORTRAN_COMMON_FORTRAN_H_
17#include "flang/Common/Fortran-consts.h"
23class LanguageFeatureControl;
25constexpr bool IsNumericTypeCategory(TypeCategory category) {
26 return category == TypeCategory::Integer ||
27 category == TypeCategory::Unsigned || category == TypeCategory::Real ||
28 category == TypeCategory::Complex;
32ENUM_CLASS(ImportKind, Default, Only, None, All)
35ENUM_CLASS(TypeParamAttr, Kind, Len)
37ENUM_CLASS(NumericOperator, Power, Multiply, Divide, Add, Subtract)
38const char *AsFortran(NumericOperator);
40ENUM_CLASS(LogicalOperator, And, Or, Eqv, Neqv, Not)
41const char *AsFortran(LogicalOperator);
43ENUM_CLASS(RelationalOperator, LT, LE, EQ, NE, GE, GT)
44const char *AsFortran(RelationalOperator);
46ENUM_CLASS(Intent, Default, In, Out, InOut)
49ENUM_CLASS(IoSpecKind, Access, Action, Advance, Asynchronous, Blank, Decimal,
50 Delim, Direct, Encoding, End, Eor, Err, Exist, File, Fmt, Form, Formatted,
51 Id, Iomsg, Iostat, Name, Named, Newunit, Nextrec, Nml, Number, Opened, Pad,
52 Pending, Pos, Position, Read, Readwrite, Rec, Recl, Round, Sequential, Sign,
53 Size, Status, Stream, Unformatted, Unit, Write,
59const
char *AsFortran(DefinedIo);
62using Label = std::uint64_t;
65ENUM_CLASS(CUDASubprogramAttrs, Host, Device, HostDevice, Global, Grid_Global)
69 CUDADataAttr, Constant, Device, Managed, Pinned, Shared, Texture, Unified)
73 OpenACCDeviceType, Star, Default, Nvidia, Radeon, Host, Multicore, None)
76ENUM_CLASS(OmpAtomicDefaultMemOrderType, SeqCst, AcqRel, Relaxed)
79static constexpr
int maxNameLen{63};
91using IgnoreTKRSet = EnumSet<IgnoreTKR, 8>;
93static constexpr IgnoreTKRSet ignoreTKRAll{IgnoreTKR::Type, IgnoreTKR::Kind,
94 IgnoreTKR::Rank, IgnoreTKR::Device, IgnoreTKR::Managed};
95std::string AsFortran(IgnoreTKRSet);
98 std::optional<CUDADataAttr>, IgnoreTKRSet, std::optional<std::string> *,
99 bool allowUnifiedMatchingRule,
100 const LanguageFeatureControl *features =
nullptr);
102static constexpr char blankCommonObjectName[] =
"__BLNK__";
106inline std::string GetExternalAssemblyName(
107 std::string symbolName,
bool underscoring) {
108 return underscoring ? std::move(symbolName) +
"_" : std::move(symbolName);
Definition: bit-population-count.h:20
bool AreCompatibleCUDADataAttrs(std::optional< CUDADataAttr >, std::optional< CUDADataAttr >, IgnoreTKRSet, std::optional< std::string > *, bool allowUnifiedMatchingRule, const LanguageFeatureControl *features=nullptr)
Definition: Fortran.cpp:104