[llvm] r226026 - Fix handling of extern_weak. This was broken by r225983.
Rafael Espindola
rafael.espindola at gmail.com
Wed Jan 14 11:43:32 PST 2015
Author: rafael
Date: Wed Jan 14 13:43:32 2015
New Revision: 226026
URL: http://llvm.org/viewvc/llvm-project?rev=226026&view=rev
Log:
Fix handling of extern_weak. This was broken by r225983.
Modified:
llvm/trunk/test/tools/gold/emit-llvm.ll
llvm/trunk/tools/gold/gold-plugin.cpp
Modified: llvm/trunk/test/tools/gold/emit-llvm.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/gold/emit-llvm.ll?rev=226026&r1=226025&r2=226026&view=diff
==============================================================================
--- llvm/trunk/test/tools/gold/emit-llvm.ll (original)
+++ llvm/trunk/test/tools/gold/emit-llvm.ll Wed Jan 14 13:43:32 2015
@@ -21,6 +21,9 @@
target triple = "x86_64-unknown-linux-gnu"
+ at 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_a
}
@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_a
; 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
Modified: llvm/trunk/tools/gold/gold-plugin.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/gold/gold-plugin.cpp?rev=226026&r1=226025&r2=226026&view=diff
==============================================================================
--- llvm/trunk/tools/gold/gold-plugin.cpp (original)
+++ llvm/trunk/tools/gold/gold-plugin.cpp Wed Jan 14 13:43:32 2015
@@ -633,8 +633,10 @@ getModuleForFile(LLVMContext &Context, c
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: {
More information about the llvm-commits
mailing list