================ @@ -276,4 +276,47 @@ def ConstPtrAttr : CIR_Attr<"ConstPtr", "ptr", [TypedAttrInterface]> { }]; } +//===----------------------------------------------------------------------===// +// VisibilityAttr +//===----------------------------------------------------------------------===// + +def VK_Default : I32EnumAttrCase<"Default", 1, "default">; +def VK_Hidden : I32EnumAttrCase<"Hidden", 2, "hidden">; +def VK_Protected : I32EnumAttrCase<"Protected", 3, "protected">; + +def VisibilityKind : I32EnumAttr<"VisibilityKind", "C/C++ visibility", [ + VK_Default, VK_Hidden, VK_Protected +]> { + let cppNamespace = "::cir"; +} + +def VisibilityAttr : CIR_Attr<"Visibility", "visibility"> { ---------------- xlauko wrote:
It could have been derived from `EnumAttr` which would remove most of the boilerplate below. I have local WIP adding `CIR_EnumAttr`, I can update this afterwards in following PR. https://github.com/llvm/llvm-project/pull/141973 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits