[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