@@ -47,6 +47,16 @@ class CIR_I32EnumAttr<string name, string summary, list<I32EnumAttrCase> cases>
47
47
let cppNamespace = "::cir";
48
48
}
49
49
50
+ class CIR_I64EnumAttr<string name, string summary, list<I64EnumAttrCase> cases>
51
+ : I64EnumAttr<name, summary, cases> {
52
+ let cppNamespace = "::cir";
53
+ }
54
+
55
+ class CIR_EnumAttr<EnumAttrInfo info, string name = "", list<Trait> traits = []>
56
+ : EnumAttr<CIR_Dialect, info, name, traits> {
57
+ let assemblyFormat = "`<` $value `>`";
58
+ }
59
+
50
60
class CIRUnitAttr<string name, string attrMnemonic, list<Trait> traits = []>
51
61
: CIR_Attr<name, attrMnemonic, traits> {
52
62
let returnType = "bool";
@@ -330,36 +340,33 @@ def ConstComplexAttr : CIR_Attr<"ConstComplex", "const_complex",
330
340
// VisibilityAttr
331
341
//===----------------------------------------------------------------------===//
332
342
333
- def CIR_VisibilityKind : I32EnumAttr <"VisibilityKind", "C/C++ visibility", [
334
- I32EnumAttrCase<"Default", 1 , "default">,
335
- I32EnumAttrCase<"Hidden", 2 , "hidden">,
336
- I32EnumAttrCase<"Protected", 3 , "protected">
343
+ def CIR_VisibilityKind : CIR_I32EnumAttr <"VisibilityKind", "C/C++ visibility", [
344
+ I32EnumAttrCase<"Default", 0 , "default">,
345
+ I32EnumAttrCase<"Hidden", 1 , "hidden">,
346
+ I32EnumAttrCase<"Protected", 2 , "protected">
337
347
]> {
338
348
let genSpecializedAttr = 0;
339
- let cppNamespace = "::cir";
340
349
}
341
350
342
- def CIR_VisibilityAttr : CIR_Attr<"Visibility" , "visibility"> {
351
+ def CIR_VisibilityAttr : CIR_EnumAttr<CIR_VisibilityKind , "visibility"> {
343
352
let summary = "Visibility attribute";
344
353
let description = [{
345
354
Visibility attributes.
346
355
}];
347
- let parameters = (ins "VisibilityKind":$value);
348
356
349
- let assemblyFormat = [{
350
- $value
351
- }];
357
+ let cppClassName = "VisibilityAttr";
352
358
359
+ let skipDefaultBuilders = 1;
353
360
let builders = [
354
- AttrBuilder<(ins CArg<"VisibilityKind", "cir::VisibilityKind::Default">:$value), [{
361
+ AttrBuilder<(ins CArg<"VisibilityKind",
362
+ "cir::VisibilityKind::Default">:$value), [{
355
363
return $_get($_ctxt, value);
356
364
}]>
357
365
];
358
366
359
- let skipDefaultBuilders = 1;
360
-
361
- // Make DefaultValuedAttr accept VisibilityKind as default value ($0).
362
- let constBuilderCall = "cir::VisibilityAttr::get($_builder.getContext(), $0)";
367
+ let assemblyFormat = [{
368
+ $value
369
+ }];
363
370
364
371
let extraClassDeclaration = [{
365
372
bool isDefault() const { return getValue() == VisibilityKind::Default; };
0 commit comments