https://github.com/AtariDreams created https://github.com/llvm/llvm-project/pull/83726
It makes sense to set the visibility of the IvarOffsetGV when a new value for it is made in the heap. >From 5396049175e77825c5e9de9296d3e8045b454dd6 Mon Sep 17 00:00:00 2001 From: Rose <83477269+ataridre...@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:52:58 -0500 Subject: [PATCH] [ObjC] Set visibility of IvarOffsetGV when it is created in ObjCIvarOffsetVariable It makes sense to set the visibility of the IvarOffsetGV when a new value for it is made in the heap. --- clang/lib/CodeGen/CGObjCMac.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index 27d77e9a8a5511..cf472707d1794d 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -6826,10 +6826,9 @@ CGObjCNonFragileABIMac::ObjCIvarOffsetVariable(const ObjCInterfaceDecl *ID, Name += Ivar->getName(); llvm::GlobalVariable *IvarOffsetGV = CGM.getModule().getGlobalVariable(Name); if (!IvarOffsetGV) { - IvarOffsetGV = - new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.IvarOffsetVarTy, - false, llvm::GlobalValue::ExternalLinkage, - nullptr, Name.str()); + IvarOffsetGV = new llvm::GlobalVariable( + CGM.getModule(), ObjCTypes.IvarOffsetVarTy, false, + llvm::GlobalValue::ExternalLinkage, nullptr, Name.str()); if (CGM.getTriple().isOSBinFormatCOFF()) { bool IsPrivateOrPackage = Ivar->getAccessControl() == ObjCIvarDecl::Private || @@ -6838,11 +6837,16 @@ CGObjCNonFragileABIMac::ObjCIvarOffsetVariable(const ObjCInterfaceDecl *ID, const ObjCInterfaceDecl *ContainingID = Ivar->getContainingInterface(); if (ContainingID->hasAttr<DLLImportAttr>()) - IvarOffsetGV - ->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass); + IvarOffsetGV->setDLLStorageClass( + llvm::GlobalValue::DLLImportStorageClass); else if (ContainingID->hasAttr<DLLExportAttr>() && !IsPrivateOrPackage) - IvarOffsetGV - ->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass); + IvarOffsetGV->setDLLStorageClass( + llvm::GlobalValue::DLLExportStorageClass); + + if (IsPrivateOrPackage || ID->getVisibility() == HiddenVisibility) + IvarOffsetGV->setVisibility(llvm::GlobalValue::HiddenVisibility); + else + IvarOffsetGV->setVisibility(llvm::GlobalValue::DefaultVisibility); } } return IvarOffsetGV; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits