OSDN Git Service

Don't internalize available_externally functions. We already did the right
authorRafael Espindola <rafael.espindola@gmail.com>
Sun, 6 Mar 2011 23:41:34 +0000 (23:41 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sun, 6 Mar 2011 23:41:34 +0000 (23:41 +0000)
thing for variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127138 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/Internalize.cpp

index 9b9ebad..8b7253e 100644 (file)
@@ -126,6 +126,8 @@ bool InternalizePass::runOnModule(Module &M) {
   // FIXME: maybe use private linkage?
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
     if (!I->isDeclaration() &&         // Function must be defined here
+        // Available externally is really just a "declaration with a body".
+        !I->hasAvailableExternallyLinkage() &&
         !I->hasLocalLinkage() &&  // Can't already have internal linkage
         !ExternalNames.count(I->getName())) {// Not marked to keep external?
       I->setLinkage(GlobalValue::InternalLinkage);