aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/LTO/LTO.cpp
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2017-05-26 21:56:14 +0000
committerDavide Italiano <davide@freebsd.org>2017-05-26 21:56:14 +0000
commitd4db116af83477f9019c9762899f613529411a61 (patch)
tree665bcbcaf1e31c516d48924fcb98433486254d77 /llvm/lib/LTO/LTO.cpp
parente8b09195fa25bf8de21626983d228c91c2b8df4c (diff)
downloadllvm-d4db116af83477f9019c9762899f613529411a61.zip
llvm-d4db116af83477f9019c9762899f613529411a61.tar.gz
llvm-d4db116af83477f9019c9762899f613529411a61.tar.bz2
[lib/LTO] Don't reinvent the code for switching linkage.
Differential Revision: https://reviews.llvm.org/D33582 llvm-svn: 304040
Diffstat (limited to 'llvm/lib/LTO/LTO.cpp')
-rw-r--r--llvm/lib/LTO/LTO.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp
index 780f3b7..9efc095 100644
--- a/llvm/lib/LTO/LTO.cpp
+++ b/llvm/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<GlobalObject>(GV) &&
(GV->hasLinkOnceODRLinkage() || GV->hasWeakODRLinkage() ||
GV->hasAvailableExternallyLinkage()) &&