]> granicus.if.org Git - llvm/commitdiff
[lib/LTO] Don't reinvent the code for switching linkage.
authorDavide Italiano <davide@freebsd.org>
Fri, 26 May 2017 21:56:14 +0000 (21:56 +0000)
committerDavide Italiano <davide@freebsd.org>
Fri, 26 May 2017 21:56:14 +0000 (21:56 +0000)
Differential Revision:  https://reviews.llvm.org/D33582

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

lib/LTO/LTO.cpp

index 780f3b713ffa77ab5efb87dd8a11385a7fc7e3fb..9efc095f9fcfdce23d874c18442ee4c0a7c75d2e 100644 (file)
@@ -542,16 +542,10 @@ Error LTO::addRegularLTO(BitcodeModule BM,
         if (Sym.isUndefined())
           continue;
         Keep.push_back(GV);
-        switch (GV->getLinkage()) {
-        default:
-          break;
-        case GlobalValue::LinkOnceAnyLinkage:
-          GV->setLinkage(GlobalValue::WeakAnyLinkage);
-          break;
-        case GlobalValue::LinkOnceODRLinkage:
-          GV->setLinkage(GlobalValue::WeakODRLinkage);
-          break;
-        }
+        GlobalValue::LinkageTypes OriginalLinkage = GV->getLinkage();
+        if (GlobalValue::isLinkOnceLinkage(OriginalLinkage))
+          GV->setLinkage(GlobalValue::getWeakLinkage(
+              GlobalValue::isLinkOnceODRLinkage(OriginalLinkage)));
       } else if (isa<GlobalObject>(GV) &&
                  (GV->hasLinkOnceODRLinkage() || GV->hasWeakODRLinkage() ||
                   GV->hasAvailableExternallyLinkage()) &&