diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index efcdce7..558a8a3 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -164,6 +164,17 @@
   getDiags().Report(Context.getFullLoc(D->getLocation()), DiagID) << Msg;
 }
 
+static llvm::GlobalValue::VisibilityTypes GetLLVMVisibility(Visibility V) {
+  switch (V) {
+  case DefaultVisibility:   return llvm::GlobalValue::DefaultVisibility;
+  case HiddenVisibility:    return llvm::GlobalValue::HiddenVisibility;
+  case ProtectedVisibility: return llvm::GlobalValue::ProtectedVisibility;
+  }
+  llvm_unreachable("unknown visibility!");
+  return llvm::GlobalValue::DefaultVisibility;
+}
+
+
 void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV,
                                         const NamedDecl *D) const {
   // Internal definitions always have default visibility.
@@ -172,15 +183,7 @@
     return;
   }
 
-  switch (D->getVisibility()) {
-  case DefaultVisibility:
-    return GV->setVisibility(llvm::GlobalValue::DefaultVisibility);
-  case HiddenVisibility:
-    return GV->setVisibility(llvm::GlobalValue::HiddenVisibility);
-  case ProtectedVisibility:
-    return GV->setVisibility(llvm::GlobalValue::ProtectedVisibility);
-  }
-  llvm_unreachable("unknown visibility!");
+  GV->setVisibility(GetLLVMVisibility(D->getVisibility()));
 }
 
 /// Set the symbol visibility of type information (vtable and RTTI)
@@ -934,15 +937,18 @@
     // handling.
     GV->setConstant(DeclIsConstantGlobal(Context, D));
 
-    // FIXME: Merge with other attribute handling code.
-    if (D->getStorageClass() == SC_PrivateExtern)
-      GV->setVisibility(llvm::GlobalValue::HiddenVisibility);
+    // Set linkage and visibility in case we never see a definition.
+    std::pair<Linkage,Visibility> LV = D->getLinkageAndVisibility();
+    if (LV.first != ExternalLinkage) {
+      GV->setLinkage(llvm::GlobalValue::InternalLinkage);
+    } else {
+      if (D->hasAttr<DLLImportAttr>())
+        GV->setLinkage(llvm::GlobalValue::DLLImportLinkage);
+      else if (D->hasAttr<WeakAttr>() || D->hasAttr<WeakImportAttr>())
+        GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
 
-    if (D->hasAttr<DLLImportAttr>())
-      GV->setLinkage(llvm::GlobalValue::DLLImportLinkage);
-    else if (D->hasAttr<WeakAttr>() ||
-        D->hasAttr<WeakImportAttr>())
-      GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
+      GV->setVisibility(GetLLVMVisibility(LV.second));
+    }
 
     GV->setThreadLocal(D->isThreadSpecified());
   }
