[llvm] r217443 - Prefer common over weak linkage when linking.

Rafael Espindola rafael.espindola at gmail.com
Tue Sep 9 07:27:09 PDT 2014


Author: rafael
Date: Tue Sep  9 09:27:09 2014
New Revision: 217443

URL: http://llvm.org/viewvc/llvm-project?rev=217443&view=rev
Log:
Prefer common over weak linkage when linking.

This matches the behavior of ELF linkers.

Added:
    llvm/trunk/test/Linker/Inputs/linkage2.ll
    llvm/trunk/test/Linker/linkage2.ll
Modified:
    llvm/trunk/lib/Linker/LinkModules.cpp

Modified: llvm/trunk/lib/Linker/LinkModules.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=217443&r1=217442&r2=217443&view=diff
==============================================================================
--- llvm/trunk/lib/Linker/LinkModules.cpp (original)
+++ llvm/trunk/lib/Linker/LinkModules.cpp Tue Sep  9 09:27:09 2014
@@ -721,8 +721,9 @@ bool ModuleLinker::getLinkageResult(Glob
   } else if (Src->isWeakForLinker()) {
     assert(!Dest->hasExternalWeakLinkage());
     assert(!Dest->hasAvailableExternallyLinkage());
-    if (Dest->hasLinkOnceLinkage() &&
-        (Src->hasWeakLinkage() || Src->hasCommonLinkage())) {
+    if ((Dest->hasLinkOnceLinkage() && Src->hasWeakLinkage()) ||
+        ((Dest->hasLinkOnceLinkage() || Dest->hasWeakLinkage()) &&
+         Src->hasCommonLinkage())) {
       LinkFromSrc = true;
       LT = Src->getLinkage();
     } else {

Added: llvm/trunk/test/Linker/Inputs/linkage2.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/linkage2.ll?rev=217443&view=auto
==============================================================================
--- llvm/trunk/test/Linker/Inputs/linkage2.ll (added)
+++ llvm/trunk/test/Linker/Inputs/linkage2.ll Tue Sep  9 09:27:09 2014
@@ -0,0 +1 @@
+ at test1_a = weak global i8 1

Added: llvm/trunk/test/Linker/linkage2.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/linkage2.ll?rev=217443&view=auto
==============================================================================
--- llvm/trunk/test/Linker/linkage2.ll (added)
+++ llvm/trunk/test/Linker/linkage2.ll Tue Sep  9 09:27:09 2014
@@ -0,0 +1,6 @@
+; RUN: llvm-link %s %p/Inputs/linkage2.ll -S | FileCheck %s
+; RUN: llvm-link %p/Inputs/linkage2.ll %s -S | FileCheck %s
+
+ at test1_a = common global i8 0
+
+; CHECK: @test1_a = common global i8 0





More information about the llvm-commits mailing list