Propagte -fvisibility to objc2's class symbols.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68543 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index f410e21..f782926 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -440,6 +440,8 @@
   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 @@
   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 @@
     case VisibilityAttr::HiddenVisibility:
       return true;
     }
-  } else {
-    return false; // FIXME: Support -fvisibility
-  }
+  } else
+      return (CGM.getLangOptions().getVisibilityMode() ==
+              LangOptions::HiddenVisibility);
 }
 
 /*
@@ -4523,9 +4523,6 @@
   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");