[clang] [CIR] Add support for global linkage and visibility (PR #141973)

Henrich Lauko via cfe-commits cfe-commits at lists.llvm.org
Fri May 30 01:07:58 PDT 2025


================
@@ -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";
+}
----------------
xlauko wrote:

No real need to expose kinds definitions:

```suggestion
def CIR_VisibilityKind : I32EnumAttr<"VisibilityKind", "C/C++ visibility", [
  I32EnumAttrCase<"Default", 1, "default">,
  I32EnumAttrCase<"Hidden", 2, "hidden">,
  I32EnumAttrCase<"Protected", 3, "protected">
]> {
  let cppNamespace = "::cir";
}
```

https://github.com/llvm/llvm-project/pull/141973


More information about the cfe-commits mailing list