diff options
| -rw-r--r-- | mlir/include/mlir/TableGen/Attribute.h | 4 | ||||
| -rw-r--r-- | mlir/lib/TableGen/Attribute.cpp | 24 |
2 files changed, 17 insertions, 11 deletions
diff --git a/mlir/include/mlir/TableGen/Attribute.h b/mlir/include/mlir/TableGen/Attribute.h index 9f221b9ed9b..60f95156bb5 100644 --- a/mlir/include/mlir/TableGen/Attribute.h +++ b/mlir/include/mlir/TableGen/Attribute.h @@ -42,6 +42,10 @@ public: explicit AttrConstraint(const llvm::Record *record); static bool classof(const Constraint *c) { return c->getKind() == CK_Attr; } + + // Returns true if this constraint is a subclass of the given `className` + // class defined in TableGen. + bool isSubClassOf(StringRef className) const; }; // Wrapper class providing helper methods for accessing MLIR Attribute defined diff --git a/mlir/lib/TableGen/Attribute.cpp b/mlir/lib/TableGen/Attribute.cpp index b9432e5a729..c2b673a7c93 100644 --- a/mlir/lib/TableGen/Attribute.cpp +++ b/mlir/lib/TableGen/Attribute.cpp @@ -44,10 +44,14 @@ static StringRef getValueAsString(const Init *init) { tblgen::AttrConstraint::AttrConstraint(const Record *record) : Constraint(Constraint::CK_Attr, record) { - assert(def->isSubClassOf("AttrConstraint") && + assert(isSubClassOf("AttrConstraint") && "must be subclass of TableGen 'AttrConstraint' class"); } +bool tblgen::AttrConstraint::isSubClassOf(StringRef className) const { + return def->isSubClassOf(className); +} + tblgen::Attribute::Attribute(const Record *record) : AttrConstraint(record) { assert(record->isSubClassOf("Attr") && "must be subclass of TableGen 'Attr' class"); @@ -56,15 +60,15 @@ tblgen::Attribute::Attribute(const Record *record) : AttrConstraint(record) { tblgen::Attribute::Attribute(const DefInit *init) : Attribute(init->getDef()) {} bool tblgen::Attribute::isDerivedAttr() const { - return def->isSubClassOf("DerivedAttr"); + return isSubClassOf("DerivedAttr"); } bool tblgen::Attribute::isTypeAttr() const { - return def->isSubClassOf("TypeAttrBase"); + return isSubClassOf("TypeAttrBase"); } bool tblgen::Attribute::isEnumAttr() const { - return def->isSubClassOf("EnumAttrInfo"); + return isSubClassOf("EnumAttrInfo"); } StringRef tblgen::Attribute::getStorageType() const { @@ -144,12 +148,12 @@ StringRef tblgen::ConstantAttr::getConstantValue() const { tblgen::EnumAttrCase::EnumAttrCase(const llvm::DefInit *init) : Attribute(init) { - assert(def->isSubClassOf("EnumAttrCaseInfo") && + assert(isSubClassOf("EnumAttrCaseInfo") && "must be subclass of TableGen 'EnumAttrInfo' class"); } bool tblgen::EnumAttrCase::isStrCase() const { - return def->isSubClassOf("StrEnumAttrCase"); + return isSubClassOf("StrEnumAttrCase"); } StringRef tblgen::EnumAttrCase::getSymbol() const { @@ -161,7 +165,7 @@ int64_t tblgen::EnumAttrCase::getValue() const { } tblgen::EnumAttr::EnumAttr(const llvm::Record *record) : Attribute(record) { - assert(def->isSubClassOf("EnumAttrInfo") && + assert(isSubClassOf("EnumAttrInfo") && "must be subclass of TableGen 'EnumAttr' class"); } @@ -170,9 +174,7 @@ tblgen::EnumAttr::EnumAttr(const llvm::Record &record) : Attribute(&record) {} tblgen::EnumAttr::EnumAttr(const llvm::DefInit *init) : EnumAttr(init->getDef()) {} -bool tblgen::EnumAttr::isBitEnum() const { - return def->isSubClassOf("BitEnumAttr"); -} +bool tblgen::EnumAttr::isBitEnum() const { return isSubClassOf("BitEnumAttr"); } StringRef tblgen::EnumAttr::getEnumClassName() const { return def->getValueAsString("className"); @@ -241,7 +243,7 @@ tblgen::Attribute tblgen::StructFieldAttr::getType() const { } tblgen::StructAttr::StructAttr(const llvm::Record *record) : Attribute(record) { - assert(def->isSubClassOf("StructAttr") && + assert(isSubClassOf("StructAttr") && "must be subclass of TableGen 'StructAttr' class"); } |

