forked from OSchip/llvm-project
![]() This patch removes the `type` field from `Attribute` along with the `Attribute::getType` accessor. Going forward, this means that attributes in MLIR will no longer have types as a first-class concept. This patch lays the groundwork to incrementally remove or refactor code that relies on generic attributes being typed. The immediate impact will be on attributes that rely on `Attribute` containing a type, such as `IntegerAttr`, `DenseElementsAttr`, and `ml_program::ExternAttr`, which will now need to define a type parameter on their storage classes. This will save memory as all other attribute kinds will no longer contain a type. Moreover, it will not be possible to generically query the type of an attribute directly. This patch provides an attribute interface `TypedAttr` that implements only one method, `getType`, which can be used to generically query the types of attributes that implement the interface. This interface can be used to retain the concept of a "typed attribute". The ODS-generated accessor for a `type` parameter automatically implements this method. Next steps will be to refactor the assembly formats of certain operations that rely on `parseAttribute(type)` and `printAttributeWithoutType` to remove special handling of type elision until `type` can be removed from the dialect parsing hook entirely; and incrementally remove uses of `TypedAttr`. Reviewed By: lattner, rriddle, jpienaar Differential Revision: https://reviews.llvm.org/D130092 |
||
---|---|---|
.. | ||
attr-or-type-builder-invalid.td | ||
attr-or-type-format-invalid.td | ||
attr-or-type-format-roundtrip.mlir | ||
attr-or-type-format.mlir | ||
attr-or-type-format.td | ||
attrdefs.td | ||
constant-str-attr-invalid.mlir | ||
constraint-unique.td | ||
default-type-attr-print-parser.td | ||
deprecation.td | ||
dialect.td | ||
directive-common.td | ||
expect-symbol.td | ||
gen-dialect-doc.td | ||
interfaces-as-constraints.td | ||
interfaces.mlir | ||
llvm-intrinsics.td | ||
op-attribute.td | ||
op-decl-and-defs.td | ||
op-derived-attribute.mlir | ||
op-error.td | ||
op-format-spec.td | ||
op-format-verify.td | ||
op-format.mlir | ||
op-interface.td | ||
op-operand.td | ||
op-python-bindings.td | ||
op-result.td | ||
op-side-effects.td | ||
pattern.mlir | ||
predicate.td | ||
return-types.mlir | ||
rewriter-errors.td | ||
rewriter-indexing.td | ||
rewriter-static-matcher.td | ||
testdialect-attrdefs.mlir | ||
testdialect-typedefs.mlir | ||
trait.mlir | ||
typedefs.td | ||
types.mlir |