From: Davide Italiano Date: Fri, 26 May 2017 21:56:14 +0000 (+0000) Subject: [lib/LTO] Don't reinvent the code for switching linkage. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=859371ccf99916c13a8e03ddd58c426524b63aaa;p=llvm [lib/LTO] Don't reinvent the code for switching linkage. Differential Revision: https://reviews.llvm.org/D33582 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304040 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/LTO/LTO.cpp b/lib/LTO/LTO.cpp index 780f3b713ff..9efc095f9fc 100644 --- a/lib/LTO/LTO.cpp +++ b/lib/LTO/LTO.cpp @@ -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(GV) && (GV->hasLinkOnceODRLinkage() || GV->hasWeakODRLinkage() || GV->hasAvailableExternallyLinkage()) &&