summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-01-14 19:43:32 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-01-14 19:43:32 +0000
commit0fd9e5f719d6a703f9bcf9bcb86ca88c73ea1acc (patch)
tree9d2a0b21bb0837d613b941ee5c0c19580f3e3555
parent3b6018b9f694546a9244a5ecca06be4c56b4410b (diff)
downloadbcm5719-llvm-0fd9e5f719d6a703f9bcf9bcb86ca88c73ea1acc.tar.gz
bcm5719-llvm-0fd9e5f719d6a703f9bcf9bcb86ca88c73ea1acc.zip
Fix handling of extern_weak. This was broken by r225983.
llvm-svn: 226026
-rw-r--r--llvm/test/tools/gold/emit-llvm.ll8
-rw-r--r--llvm/tools/gold/gold-plugin.cpp6
2 files changed, 12 insertions, 2 deletions
diff --git a/llvm/test/tools/gold/emit-llvm.ll b/llvm/test/tools/gold/emit-llvm.ll
index cfdc55108c0..2d8516c54f6 100644
--- a/llvm/test/tools/gold/emit-llvm.ll
+++ b/llvm/test/tools/gold/emit-llvm.ll
@@ -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
diff --git a/llvm/tools/gold/gold-plugin.cpp b/llvm/tools/gold/gold-plugin.cpp
index bcc91e9d061..4c21b38c152 100644
--- a/llvm/tools/gold/gold-plugin.cpp
+++ b/llvm/tools/gold/gold-plugin.cpp
@@ -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: {
OpenPOWER on IntegriCloud