This matches the behavior of ELF linkers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217443
91177308-0d34-0410-b5e6-
96231b3b80d8
} 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 {
--- /dev/null
+@test1_a = weak global i8 1
--- /dev/null
+; RUN: llvm-link %s %p/Inputs/linkage2.ll -S | FileCheck %s
+; RUN: llvm-link %p/Inputs/linkage2.ll %s -S | FileCheck %s
+
+@test1_a = common global i8 0
+
+; CHECK: @test1_a = common global i8 0