Fix handling of extern_weak. This was broken by r225983.

llvm-svn: 226026
This commit is contained in:
Rafael Espindola 2015-01-14 19:43:32 +00:00
parent 3b6018b9f6
commit 0fd9e5f719
2 changed files with 12 additions and 2 deletions

View File

@ -21,6 +21,9 @@
target triple = "x86_64-unknown-linux-gnu"
@g7 = extern_weak global i32
; CHECK-DAG: @g7 = extern_weak global i32
; CHECK: define internal void @f1()
; OPT-NOT: @f1
define hidden void @f1() {
@ -62,6 +65,9 @@ define linkonce_odr void @f6() unnamed_addr {
}
@g6 = global void()* @f6
define i32* @f7() {
ret i32* @g7
}
; API: f1 PREVAILING_DEF_IRONLY
; API: f2 PREVAILING_DEF_IRONLY
@ -69,5 +75,7 @@ define linkonce_odr void @f6() unnamed_addr {
; API: f4 PREVAILING_DEF_IRONLY_EXP
; API: f5 PREVAILING_DEF_IRONLY_EXP
; API: f6 PREVAILING_DEF_IRONLY_EXP
; API: f7 PREVAILING_DEF_IRONLY_EXP
; API: g7 UNDEF
; API: g5 PREVAILING_DEF_IRONLY_EXP
; API: g6 PREVAILING_DEF_IRONLY_EXP

View File

@ -633,8 +633,10 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile,
break;
case LDPR_UNDEF:
assert(GV->hasComdat());
Drop.insert(GV);
if (!GV->hasExternalWeakLinkage()) {
assert(GV->hasComdat());
Drop.insert(GV);
}
break;
case LDPR_PREVAILING_DEF_IRONLY: {