summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mlir/include/mlir/TableGen/Attribute.h4
-rw-r--r--mlir/lib/TableGen/Attribute.cpp24
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");
}
OpenPOWER on IntegriCloud