13#ifndef FORTRAN_OPTIMIZER_DIALECT_FIRATTR_H 
   14#define FORTRAN_OPTIMIZER_DIALECT_FIRATTR_H 
   16#include "mlir/IR/BuiltinAttributes.h" 
   19class DialectAsmParser;
 
   20class DialectAsmPrinter;
 
   32using KindTy = unsigned;
 
   35    : 
public mlir::Attribute::AttrBase<ExactTypeAttr, mlir::Attribute,
 
   36                                       detail::TypeAttributeStorage> {
 
   39  using ValueType = mlir::Type;
 
   41  static constexpr llvm::StringLiteral name = 
"fir.type_is";
 
   42  static constexpr llvm::StringRef getAttrName() { 
return "type_is"; }
 
   45  mlir::Type getType() 
const;
 
 
   49    : 
public mlir::Attribute::AttrBase<SubclassAttr, mlir::Attribute,
 
   50                                       detail::TypeAttributeStorage> {
 
   53  using ValueType = mlir::Type;
 
   55  static constexpr llvm::StringLiteral name = 
"fir.class_is";
 
   56  static constexpr llvm::StringRef getAttrName() { 
return "class_is"; }
 
   59  mlir::Type getType() 
const;
 
 
   66  using BoolAttr::BoolAttr;
 
   68  static constexpr llvm::StringLiteral name = 
"fir.must_be_heap";
 
   69  static constexpr llvm::StringRef getAttrName() { 
return "fir.must_be_heap"; }
 
 
   79    : 
public mlir::Attribute::AttrBase<ClosedIntervalAttr, mlir::Attribute,
 
   80                                       mlir::AttributeStorage> {
 
   84  static constexpr llvm::StringLiteral name = 
"fir.interval";
 
   85  static constexpr llvm::StringRef getAttrName() { 
return "interval"; }
 
 
   94    : 
public mlir::Attribute::AttrBase<UpperBoundAttr, mlir::Attribute,
 
   95                                       mlir::AttributeStorage> {
 
   99  static constexpr llvm::StringLiteral name = 
"fir.upper";
 
  100  static constexpr llvm::StringRef getAttrName() { 
return "upper"; }
 
 
  109    : 
public mlir::Attribute::AttrBase<LowerBoundAttr, mlir::Attribute,
 
  110                                       mlir::AttributeStorage> {
 
  114  static constexpr llvm::StringLiteral name = 
"fir.lower";
 
  115  static constexpr llvm::StringRef getAttrName() { 
return "lower"; }
 
 
  124    : 
public mlir::Attribute::AttrBase<PointIntervalAttr, mlir::Attribute,
 
  125                                       mlir::AttributeStorage> {
 
  129  static constexpr llvm::StringLiteral name = 
"fir.point";
 
  130  static constexpr llvm::StringRef getAttrName() { 
return "point"; }
 
 
  139    : 
public mlir::Attribute::AttrBase<RealAttr, mlir::Attribute,
 
  140                                       detail::RealAttributeStorage> {
 
  143  using ValueType = std::pair<int, llvm::APFloat>;
 
  145  static constexpr llvm::StringLiteral name = 
"fir.real";
 
  146  static constexpr llvm::StringRef getAttrName() { 
return "real"; }
 
  147  static RealAttr get(mlir::MLIRContext *ctxt, 
const ValueType &key);
 
  149  KindTy getFKind() 
const;
 
  150  llvm::APFloat getValue() 
const;
 
 
  153mlir::Attribute parseFirAttribute(FIROpsDialect *dialect,
 
  154                                  mlir::DialectAsmParser &parser,
 
  157void printFirAttribute(FIROpsDialect *dialect, mlir::Attribute attr,
 
  158                       mlir::DialectAsmPrinter &p);
 
  162#include "flang/Optimizer/Dialect/FIREnumAttr.h.inc" 
  164#define GET_ATTRDEF_CLASSES 
  165#include "flang/Optimizer/Dialect/FIRAttr.h.inc" 
  167#include "flang/Optimizer/Dialect/SafeTempArrayCopyAttrInterface.h" 
Definition AbstractConverter.h:34
 
Definition AbstractConverter.h:29
 
Definition FIRAttr.cpp:32
 
An attribute representing a reference to a type.
Definition FIRAttr.cpp:62