diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-13 05:44:34 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-13 05:44:34 +0000 |
commit | 266c7bbbbcc4b326dea82e577de1a415d6acc23e (patch) | |
tree | e880304f13d90f5926ead058f546b05e325dd5a2 /lib/Linker | |
parent | 2c71b8f64f571b34e8df2a83120a2e889627b8d4 (diff) | |
download | external_llvm-266c7bbbbcc4b326dea82e577de1a415d6acc23e.zip external_llvm-266c7bbbbcc4b326dea82e577de1a415d6acc23e.tar.gz external_llvm-266c7bbbbcc4b326dea82e577de1a415d6acc23e.tar.bz2 |
Add a new "available_externally" linkage type. This is intended
to support C99 inline, GNU extern inline, etc. Related bugzilla's
include PR3517, PR3100, & PR2933. Nothing uses this yet, but it
appears to work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68940 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Linker')
-rw-r--r-- | lib/Linker/LinkModules.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index 0ca4e10..4a15d88 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -480,9 +480,10 @@ static bool GetLinkageResult(GlobalValue *Dest, const GlobalValue *Src, } else if (Src->isWeakForLinker()) { // At this point we know that Dest has LinkOnce, External*, Weak, Common, // or DLL* linkage. - if ((Dest->hasLinkOnceLinkage() && - (Src->hasWeakLinkage() || Src->hasCommonLinkage())) || - Dest->hasExternalWeakLinkage()) { + if (Dest->hasExternalWeakLinkage() || + Dest->hasAvailableExternallyLinkage() || + (Dest->hasLinkOnceLinkage() && + (Src->hasWeakLinkage() || Src->hasCommonLinkage()))) { LinkFromSrc = true; LT = Src->getLinkage(); } else { |