[llvm-branch-commits] [mlir] aadcb26 - Store a MlirIdentifier instead of a MlirStringRef in MlirNameAttribute
Mehdi Amini via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Dec 11 14:43:15 PST 2020
Author: Mehdi Amini
Date: 2020-12-11T22:38:48Z
New Revision: aadcb26ee1650de8eaddc5a141c4302691c446a1
URL: https://github.com/llvm/llvm-project/commit/aadcb26ee1650de8eaddc5a141c4302691c446a1
DIFF: https://github.com/llvm/llvm-project/commit/aadcb26ee1650de8eaddc5a141c4302691c446a1.diff
LOG: Store a MlirIdentifier instead of a MlirStringRef in MlirNameAttribute
This mirror the C++ API for NamedAttribute, and has the advantage or
internalizing earlier in the Context and not requiring the caller to
keep the StringRef alive beyong this call.
Differential Revision: https://reviews.llvm.org/D93133
Added:
Modified:
mlir/include/mlir-c/IR.h
mlir/lib/Bindings/Python/IRModules.cpp
mlir/lib/CAPI/IR/BuiltinAttributes.cpp
mlir/lib/CAPI/IR/IR.cpp
mlir/test/CAPI/ir.c
Removed:
################################################################################
diff --git a/mlir/include/mlir-c/IR.h b/mlir/include/mlir-c/IR.h
index 02d1e54d20e5..74c90af5b4d5 100644
--- a/mlir/include/mlir-c/IR.h
+++ b/mlir/include/mlir-c/IR.h
@@ -70,7 +70,7 @@ DEFINE_C_API_STRUCT(MlirValue, const void);
* a string.
*/
struct MlirNamedAttribute {
- MlirStringRef name;
+ MlirIdentifier name;
MlirAttribute attribute;
};
typedef struct MlirNamedAttribute MlirNamedAttribute;
@@ -600,7 +600,7 @@ MLIR_CAPI_EXPORTED void mlirAttributePrint(MlirAttribute attr,
MLIR_CAPI_EXPORTED void mlirAttributeDump(MlirAttribute attr);
/// Associates an attribute with the name. Takes ownership of neither.
-MLIR_CAPI_EXPORTED MlirNamedAttribute mlirNamedAttributeGet(MlirStringRef name,
+MLIR_CAPI_EXPORTED MlirNamedAttribute mlirNamedAttributeGet(MlirIdentifier name,
MlirAttribute attr);
//===----------------------------------------------------------------------===//
diff --git a/mlir/lib/Bindings/Python/IRModules.cpp b/mlir/lib/Bindings/Python/IRModules.cpp
index 5ebb2e4ccee3..66443bf89072 100644
--- a/mlir/lib/Bindings/Python/IRModules.cpp
+++ b/mlir/lib/Bindings/Python/IRModules.cpp
@@ -962,8 +962,10 @@ py::object PyOperation::create(
llvm::SmallVector<MlirNamedAttribute, 4> mlirNamedAttributes;
mlirNamedAttributes.reserve(mlirAttributes.size());
for (auto &it : mlirAttributes)
- mlirNamedAttributes.push_back(
- mlirNamedAttributeGet(toMlirStringRef(it.first), it.second));
+ mlirNamedAttributes.push_back(mlirNamedAttributeGet(
+ mlirIdentifierGet(mlirAttributeGetContext(it.second),
+ toMlirStringRef(it.first)),
+ it.second));
mlirOperationStateAddAttributes(&state, mlirNamedAttributes.size(),
mlirNamedAttributes.data());
}
@@ -1134,7 +1136,10 @@ PyAttribute PyAttribute::createFromCapsule(py::object capsule) {
PyNamedAttribute::PyNamedAttribute(MlirAttribute attr, std::string ownedName)
: ownedName(new std::string(std::move(ownedName))) {
- namedAttr = mlirNamedAttributeGet(toMlirStringRef(*this->ownedName), attr);
+ namedAttr = mlirNamedAttributeGet(
+ mlirIdentifierGet(mlirAttributeGetContext(attr),
+ toMlirStringRef(*this->ownedName)),
+ attr);
}
//------------------------------------------------------------------------------
@@ -1373,8 +1378,9 @@ class PyOpAttributeMap {
}
MlirNamedAttribute namedAttr =
mlirOperationGetAttribute(operation->get(), index);
- return PyNamedAttribute(namedAttr.attribute,
- std::string(namedAttr.name.data));
+ return PyNamedAttribute(
+ namedAttr.attribute,
+ std::string(mlirIdentifierStr(namedAttr.name).data));
}
void dunderSetItem(const std::string &name, PyAttribute attr) {
@@ -3137,7 +3143,8 @@ void mlir::python::populateIRSubmodule(py::module &m) {
[](PyNamedAttribute &self) {
PyPrintAccumulator printAccum;
printAccum.parts.append("NamedAttribute(");
- printAccum.parts.append(self.namedAttr.name.data);
+ printAccum.parts.append(
+ mlirIdentifierStr(self.namedAttr.name).data);
printAccum.parts.append("=");
mlirAttributePrint(self.namedAttr.attribute,
printAccum.getCallback(),
@@ -3148,8 +3155,8 @@ void mlir::python::populateIRSubmodule(py::module &m) {
.def_property_readonly(
"name",
[](PyNamedAttribute &self) {
- return py::str(self.namedAttr.name.data,
- self.namedAttr.name.length);
+ return py::str(mlirIdentifierStr(self.namedAttr.name).data,
+ mlirIdentifierStr(self.namedAttr.name).length);
},
"The name of the NamedAttribute binding")
.def_property_readonly(
diff --git a/mlir/lib/CAPI/IR/BuiltinAttributes.cpp b/mlir/lib/CAPI/IR/BuiltinAttributes.cpp
index 8db4ac3d3a38..90ed9cb0ad02 100644
--- a/mlir/lib/CAPI/IR/BuiltinAttributes.cpp
+++ b/mlir/lib/CAPI/IR/BuiltinAttributes.cpp
@@ -82,7 +82,7 @@ MlirNamedAttribute mlirDictionaryAttrGetElement(MlirAttribute attr,
intptr_t pos) {
NamedAttribute attribute =
unwrap(attr).cast<DictionaryAttr>().getValue()[pos];
- return {wrap(attribute.first.strref()), wrap(attribute.second)};
+ return {wrap(attribute.first), wrap(attribute.second)};
}
MlirAttribute mlirDictionaryAttrGetElementByName(MlirAttribute attr,
diff --git a/mlir/lib/CAPI/IR/IR.cpp b/mlir/lib/CAPI/IR/IR.cpp
index c34da0daeb5a..c5a78a2235fc 100644
--- a/mlir/lib/CAPI/IR/IR.cpp
+++ b/mlir/lib/CAPI/IR/IR.cpp
@@ -308,7 +308,7 @@ intptr_t mlirOperationGetNumAttributes(MlirOperation op) {
MlirNamedAttribute mlirOperationGetAttribute(MlirOperation op, intptr_t pos) {
NamedAttribute attr = unwrap(op)->getAttrs()[pos];
- return MlirNamedAttribute{wrap(attr.first.strref()), wrap(attr.second)};
+ return MlirNamedAttribute{wrap(attr.first), wrap(attr.second)};
}
MlirAttribute mlirOperationGetAttributeByName(MlirOperation op,
@@ -586,7 +586,7 @@ void mlirAttributePrint(MlirAttribute attr, MlirStringCallback callback,
void mlirAttributeDump(MlirAttribute attr) { unwrap(attr).dump(); }
-MlirNamedAttribute mlirNamedAttributeGet(MlirStringRef name,
+MlirNamedAttribute mlirNamedAttributeGet(MlirIdentifier name,
MlirAttribute attr) {
return MlirNamedAttribute{name, attr};
}
diff --git a/mlir/test/CAPI/ir.c b/mlir/test/CAPI/ir.c
index 1bfd5b4f326c..a785d6ab4899 100644
--- a/mlir/test/CAPI/ir.c
+++ b/mlir/test/CAPI/ir.c
@@ -89,10 +89,12 @@ MlirModule makeAndDumpAdd(MlirContext ctx, MlirLocation location) {
MlirAttribute funcNameAttr =
mlirAttributeParseGet(ctx, mlirStringRefCreateFromCString("\"add\""));
MlirNamedAttribute funcAttrs[] = {
- mlirNamedAttributeGet(mlirStringRefCreateFromCString("type"),
- funcTypeAttr),
- mlirNamedAttributeGet(mlirStringRefCreateFromCString("sym_name"),
- funcNameAttr)};
+ mlirNamedAttributeGet(
+ mlirIdentifierGet(ctx, mlirStringRefCreateFromCString("type")),
+ funcTypeAttr),
+ mlirNamedAttributeGet(
+ mlirIdentifierGet(ctx, mlirStringRefCreateFromCString("sym_name")),
+ funcNameAttr)};
MlirOperationState funcState =
mlirOperationStateGet(mlirStringRefCreateFromCString("func"), location);
mlirOperationStateAddAttributes(&funcState, 2, funcAttrs);
@@ -105,7 +107,8 @@ MlirModule makeAndDumpAdd(MlirContext ctx, MlirLocation location) {
MlirAttribute indexZeroLiteral =
mlirAttributeParseGet(ctx, mlirStringRefCreateFromCString("0 : index"));
MlirNamedAttribute indexZeroValueAttr = mlirNamedAttributeGet(
- mlirStringRefCreateFromCString("value"), indexZeroLiteral);
+ mlirIdentifierGet(ctx, mlirStringRefCreateFromCString("value")),
+ indexZeroLiteral);
MlirOperationState constZeroState = mlirOperationStateGet(
mlirStringRefCreateFromCString("std.constant"), location);
mlirOperationStateAddResults(&constZeroState, 1, &indexType);
@@ -130,7 +133,8 @@ MlirModule makeAndDumpAdd(MlirContext ctx, MlirLocation location) {
MlirAttribute indexOneLiteral =
mlirAttributeParseGet(ctx, mlirStringRefCreateFromCString("1 : index"));
MlirNamedAttribute indexOneValueAttr = mlirNamedAttributeGet(
- mlirStringRefCreateFromCString("value"), indexOneLiteral);
+ mlirIdentifierGet(ctx, mlirStringRefCreateFromCString("value")),
+ indexOneLiteral);
MlirOperationState constOneState = mlirOperationStateGet(
mlirStringRefCreateFromCString("std.constant"), location);
mlirOperationStateAddResults(&constOneState, 1, &indexType);
@@ -375,8 +379,8 @@ static void printFirstOfEach(MlirContext ctx, MlirOperation operation) {
// CHECK: Get attr 0: 0 : index
// Now re-get the attribute by name.
- MlirAttribute attr0ByName =
- mlirOperationGetAttributeByName(operation, namedAttr0.name);
+ MlirAttribute attr0ByName = mlirOperationGetAttributeByName(
+ operation, mlirIdentifierStr(namedAttr0.name));
fprintf(stderr, "Get attr 0 by name: ");
mlirAttributePrint(attr0ByName, printToStderr, NULL);
fprintf(stderr, "\n");
More information about the llvm-branch-commits
mailing list