diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-04-07 20:26:30 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-04-07 20:26:30 +0000 |
commit | cf71dd4242fd00ab155b5430a4c6c9f88fe5c4be (patch) | |
tree | b36259f2d2f18de86fcf0812e0439efc92014ac0 /lib/CodeGen | |
parent | 85a5319ea4b5c916d7dd665e84af61e4a8a0b9c2 (diff) |
Propagte -fvisibility to objc2's class symbols.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68543 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/CGObjCMac.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp index f410e213cb..f7829264e7 100644 --- a/lib/CodeGen/CGObjCMac.cpp +++ b/lib/CodeGen/CGObjCMac.cpp @@ -440,6 +440,8 @@ protected: llvm::Constant *BuildIvarLayout(const ObjCImplementationDecl *OI, bool ForStrongLayout); + bool IsClassHidden(const ObjCInterfaceDecl *ID); + void BuildAggrIvarLayout(const ObjCInterfaceDecl *OI, const llvm::StructLayout *Layout, const RecordDecl *RD, @@ -1426,10 +1428,8 @@ enum ClassFlags { eClassFlags_ABI2_HasCXXStructors = 0x00004 // <rdr://4923634> }; -// <rdr://5142207&4705298&4843145> -static bool IsClassHidden(const ObjCInterfaceDecl *ID) { +bool CGObjCCommonMac::IsClassHidden(const ObjCInterfaceDecl *ID) { if (const VisibilityAttr *attr = ID->getAttr<VisibilityAttr>()) { - // FIXME: Support -fvisibility switch (attr->getVisibility()) { default: assert(0 && "Unknown visibility"); @@ -1440,9 +1440,9 @@ static bool IsClassHidden(const ObjCInterfaceDecl *ID) { case VisibilityAttr::HiddenVisibility: return true; } - } else { - return false; // FIXME: Support -fvisibility - } + } else + return (CGM.getLangOptions().getVisibilityMode() == + LangOptions::HiddenVisibility); } /* @@ -4523,9 +4523,6 @@ llvm::Constant * CGObjCNonFragileABIMac::EmitIvarOffsetVar( else if (IsClassHidden(ID)) IvarOffsetGV->setVisibility(llvm::GlobalValue::HiddenVisibility); else if (CGM.getLangOptions().getVisibilityMode() == - LangOptions::HiddenVisibility) - IvarOffsetGV->setVisibility(llvm::GlobalValue::HiddenVisibility); - else if (CGM.getLangOptions().getVisibilityMode() == LangOptions::DefaultVisibility) IvarOffsetGV->setVisibility(llvm::GlobalValue::DefaultVisibility); IvarOffsetGV->setSection("__DATA, __objc_const"); |