diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp
index 6512dce..ce893db 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -99,9 +99,11 @@
 /// GlobalValue according to the given clang AST visibility value.
 static void setGlobalVisibility(llvm::GlobalValue *GV,
                                 VisibilityAttr::VisibilityTypes Vis) {
-  // Do not change the visibility of internal definitions.
-  if (GV->hasInternalLinkage())
+  // Internal definitions should always have default visibility.
+  if (GV->hasInternalLinkage()) {
+    GV->setVisibility(llvm::GlobalValue::DefaultVisibility);
     return;
+  }
 
   switch (Vis) {
   default: assert(0 && "Unknown visibility!");
@@ -119,9 +121,11 @@
 
 static void setGlobalOptionVisibility(llvm::GlobalValue *GV,
                                       LangOptions::VisibilityMode Vis) {
-  // Do not change the visibility of internal definitions.
-  if (GV->hasInternalLinkage())
+  // Internal definitions should always have default visibility.
+  if (GV->hasInternalLinkage()) {
+    GV->setVisibility(llvm::GlobalValue::DefaultVisibility);
     return;
+  }
 
   switch (Vis) {
   default: assert(0 && "Unknown visibility!");
@@ -780,11 +784,6 @@
   GV->setConstant(D->getType().isConstant(Context));
   GV->setAlignment(getContext().getDeclAlignInBytes(D));
 
-  if (const VisibilityAttr *attr = D->getAttr<VisibilityAttr>())
-    setGlobalVisibility(GV, attr->getVisibility());
-  else
-    setGlobalOptionVisibility(GV, getLangOptions().getVisibilityMode());
-
   // Set the llvm linkage type as appropriate.
   if (D->getStorageClass() == VarDecl::Static)
     GV->setLinkage(llvm::Function::InternalLinkage);
@@ -819,6 +818,11 @@
     }
   }
 
+  if (const VisibilityAttr *attr = D->getAttr<VisibilityAttr>())
+    setGlobalVisibility(GV, attr->getVisibility());
+  else
+    setGlobalOptionVisibility(GV, getLangOptions().getVisibilityMode());
+
   if (const SectionAttr *SA = D->getAttr<SectionAttr>())
     GV->setSection(SA->getName());
 
