Skip to content

Commit 0fd9e5f

Browse files
committed
Fix handling of extern_weak. This was broken by r225983.
llvm-svn: 226026
1 parent 3b6018b commit 0fd9e5f

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

llvm/test/tools/gold/emit-llvm.ll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121

2222
target triple = "x86_64-unknown-linux-gnu"
2323

24+
@g7 = extern_weak global i32
25+
; CHECK-DAG: @g7 = extern_weak global i32
26+
2427
; CHECK: define internal void @f1()
2528
; OPT-NOT: @f1
2629
define hidden void @f1() {
@@ -62,12 +65,17 @@ define linkonce_odr void @f6() unnamed_addr {
6265
}
6366
@g6 = global void()* @f6
6467

68+
define i32* @f7() {
69+
ret i32* @g7
70+
}
6571

6672
; API: f1 PREVAILING_DEF_IRONLY
6773
; API: f2 PREVAILING_DEF_IRONLY
6874
; API: f3 PREVAILING_DEF_IRONLY_EXP
6975
; API: f4 PREVAILING_DEF_IRONLY_EXP
7076
; API: f5 PREVAILING_DEF_IRONLY_EXP
7177
; API: f6 PREVAILING_DEF_IRONLY_EXP
78+
; API: f7 PREVAILING_DEF_IRONLY_EXP
79+
; API: g7 UNDEF
7280
; API: g5 PREVAILING_DEF_IRONLY_EXP
7381
; API: g6 PREVAILING_DEF_IRONLY_EXP

llvm/tools/gold/gold-plugin.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -633,8 +633,10 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile,
633633
break;
634634

635635
case LDPR_UNDEF:
636-
assert(GV->hasComdat());
637-
Drop.insert(GV);
636+
if (!GV->hasExternalWeakLinkage()) {
637+
assert(GV->hasComdat());
638+
Drop.insert(GV);
639+
}
638640
break;
639641

640642
case LDPR_PREVAILING_DEF_IRONLY: {

0 commit comments

Comments
 (0)