[LTO] Only change linkage if we keep the symbol.
authorDavide Italiano <davide@freebsd.org>
Wed, 23 Mar 2016 17:59:07 +0000 (17:59 +0000)
committerDavide Italiano <davide@freebsd.org>
Wed, 23 Mar 2016 17:59:07 +0000 (17:59 +0000)
llvm-svn: 264171

lld/ELF/LTO.cpp

index 6d2be05..ab97079 100644 (file)
@@ -83,13 +83,12 @@ void BitcodeCompiler::add(BitcodeFile &F) {
       continue;
     }
     if (!BitcodeFile::shouldSkip(Sym)) {
-
-      if (GV->getLinkage() == llvm::GlobalValue::LinkOnceODRLinkage)
-        GV->setLinkage(GlobalValue::WeakODRLinkage);
-
       if (SymbolBody *B = Bodies[BodyIndex++])
-        if (&B->repl() == B && isa<DefinedBitcode>(B))
+        if (&B->repl() == B && isa<DefinedBitcode>(B)) {
+          if (GV->getLinkage() == llvm::GlobalValue::LinkOnceODRLinkage)
+            GV->setLinkage(GlobalValue::WeakODRLinkage);
           Keep.push_back(GV);
+        }
     }
   }