[clang] [SystemZ][z/OS] Add visibility features for z/OS (eg. _Export, pragma export) (PR #111035)

Sean Perry via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 28 14:00:38 PDT 2025


================
@@ -5087,6 +5087,19 @@ Decl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS,
   assert(EllipsisLoc.isInvalid() &&
          "Friend ellipsis but not friend-specified?");
 
+  if (DS.isExportSpecified()) {
+    VisibilityAttr *existingAttr = TagD->getAttr<VisibilityAttr>();
+    if (existingAttr) {
+      VisibilityAttr::VisibilityType existingValue =
+          existingAttr->getVisibility();
+      if (existingValue != VisibilityAttr::Default)
+        Diag(DS.getExportSpecLoc(), diag::err_mismatched_visibility);
+    } else {
+      Tag->addAttr(
----------------
perry-ca wrote:

When -fvisibility=hidden (which is the default on z/OS), etc this is needed to ensure the symbol is exported.  This is analogous to a declaration with the default visibility attribute specified.

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


More information about the cfe-commits mailing list