-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[CIR] Create CIR_TypedAttr common class #136852
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Introduce common base class for attributes with single type parameter. This mirrors incubator changes introduced in llvm/clangir#1583
@llvm/pr-subscribers-clangir Author: Henrich Lauko (xlauko) ChangesIntroduce common base class for attributes with single type parameter. Full diff: https://github.com/llvm/llvm-project/pull/136852.diff 1 Files Affected:
diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
index cce63c5cae608..fb3f7b1632436 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
@@ -27,6 +27,20 @@ class CIR_Attr<string name, string attrMnemonic, list<Trait> traits = []>
let mnemonic = attrMnemonic;
}
+class CIR_TypedAttr<string name, string attrMnemonic, list<Trait> traits = []>
+ : CIR_Attr<name, attrMnemonic, !listconcat(traits, [TypedAttrInterface])> {
+
+ let parameters = (ins AttributeSelfTypeParameter<"">:$type);
+
+ let builders = [
+ AttrBuilderWithInferredContext<(ins "mlir::Type":$type), [{
+ return $_get(type.getContext(), type);
+ }]>
+ ];
+
+ let assemblyFormat = [{}];
+}
+
class CIRUnitAttr<string name, string attrMnemonic, list<Trait> traits = []>
: CIR_Attr<name, attrMnemonic, traits> {
let returnType = "bool";
@@ -64,43 +78,23 @@ def CIR_BoolAttr : CIR_Attr<"Bool", "bool", [TypedAttrInterface]> {
// ZeroAttr
//===----------------------------------------------------------------------===//
-def ZeroAttr : CIR_Attr<"Zero", "zero", [TypedAttrInterface]> {
+def ZeroAttr : CIR_TypedAttr<"Zero", "zero"> {
let summary = "Attribute to represent zero initialization";
let description = [{
The ZeroAttr is used to indicate zero initialization on structs.
}];
-
- let parameters = (ins AttributeSelfTypeParameter<"">:$type);
-
- let builders = [
- AttrBuilderWithInferredContext<(ins "mlir::Type":$type), [{
- return $_get(type.getContext(), type);
- }]>
- ];
-
- let assemblyFormat = [{}];
}
//===----------------------------------------------------------------------===//
// UndefAttr
//===----------------------------------------------------------------------===//
-def UndefAttr : CIR_Attr<"Undef", "undef", [TypedAttrInterface]> {
+def UndefAttr : CIR_TypedAttr<"Undef", "undef"> {
let summary = "Represent an undef constant";
let description = [{
The UndefAttr represents an undef constant, corresponding to LLVM's notion
of undef.
}];
-
- let parameters = (ins AttributeSelfTypeParameter<"">:$type);
-
- let builders = [
- AttrBuilderWithInferredContext<(ins "mlir::Type":$type), [{
- return $_get(type.getContext(), type);
- }]>
- ];
-
- let assemblyFormat = [{}];
}
//===----------------------------------------------------------------------===//
|
@llvm/pr-subscribers-clang Author: Henrich Lauko (xlauko) ChangesIntroduce common base class for attributes with single type parameter. Full diff: https://github.com/llvm/llvm-project/pull/136852.diff 1 Files Affected:
diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
index cce63c5cae608..fb3f7b1632436 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
@@ -27,6 +27,20 @@ class CIR_Attr<string name, string attrMnemonic, list<Trait> traits = []>
let mnemonic = attrMnemonic;
}
+class CIR_TypedAttr<string name, string attrMnemonic, list<Trait> traits = []>
+ : CIR_Attr<name, attrMnemonic, !listconcat(traits, [TypedAttrInterface])> {
+
+ let parameters = (ins AttributeSelfTypeParameter<"">:$type);
+
+ let builders = [
+ AttrBuilderWithInferredContext<(ins "mlir::Type":$type), [{
+ return $_get(type.getContext(), type);
+ }]>
+ ];
+
+ let assemblyFormat = [{}];
+}
+
class CIRUnitAttr<string name, string attrMnemonic, list<Trait> traits = []>
: CIR_Attr<name, attrMnemonic, traits> {
let returnType = "bool";
@@ -64,43 +78,23 @@ def CIR_BoolAttr : CIR_Attr<"Bool", "bool", [TypedAttrInterface]> {
// ZeroAttr
//===----------------------------------------------------------------------===//
-def ZeroAttr : CIR_Attr<"Zero", "zero", [TypedAttrInterface]> {
+def ZeroAttr : CIR_TypedAttr<"Zero", "zero"> {
let summary = "Attribute to represent zero initialization";
let description = [{
The ZeroAttr is used to indicate zero initialization on structs.
}];
-
- let parameters = (ins AttributeSelfTypeParameter<"">:$type);
-
- let builders = [
- AttrBuilderWithInferredContext<(ins "mlir::Type":$type), [{
- return $_get(type.getContext(), type);
- }]>
- ];
-
- let assemblyFormat = [{}];
}
//===----------------------------------------------------------------------===//
// UndefAttr
//===----------------------------------------------------------------------===//
-def UndefAttr : CIR_Attr<"Undef", "undef", [TypedAttrInterface]> {
+def UndefAttr : CIR_TypedAttr<"Undef", "undef"> {
let summary = "Represent an undef constant";
let description = [{
The UndefAttr represents an undef constant, corresponding to LLVM's notion
of undef.
}];
-
- let parameters = (ins AttributeSelfTypeParameter<"">:$type);
-
- let builders = [
- AttrBuilderWithInferredContext<(ins "mlir::Type":$type), [{
- return $_get(type.getContext(), type);
- }]>
- ];
-
- let assemblyFormat = [{}];
}
//===----------------------------------------------------------------------===//
|
Introduce common base class for attributes with single type parameter.
This mirrors incubator changes introduced in llvm/clangir#1583