diff options
author | Davide Italiano <davide@freebsd.org> | 2017-05-26 21:56:14 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2017-05-26 21:56:14 +0000 |
commit | d4db116af83477f9019c9762899f613529411a61 (patch) | |
tree | 665bcbcaf1e31c516d48924fcb98433486254d77 /llvm/lib/LTO/LTO.cpp | |
parent | e8b09195fa25bf8de21626983d228c91c2b8df4c (diff) | |
download | llvm-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.cpp | 14 |
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()) && |