aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-04-07 20:26:30 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-04-07 20:26:30 +0000
commitcf71dd4242fd00ab155b5430a4c6c9f88fe5c4be (patch)
treeb36259f2d2f18de86fcf0812e0439efc92014ac0 /lib/CodeGen
parent85a5319ea4b5c916d7dd665e84af61e4a8a0b9c2 (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.cpp15
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");