Revert "Move metadata linking after lazy global materialization/linking."
authorTeresa Johnson <tejohnson@google.com>
Tue, 3 Nov 2015 19:36:04 +0000 (19:36 +0000)
committerTeresa Johnson <tejohnson@google.com>
Tue, 3 Nov 2015 19:36:04 +0000 (19:36 +0000)
This reverts commit r251926. I believe this is causing an LTO
bootstrapping bot failure
(http://lab.llvm.org:8080/green/job/llvm-stage2-cmake-RgLTO_build/3669/).

Haven't been able to repro it yet, but after looking at the metadata I
am pretty sure I know what is going on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251965 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkModules.cpp
test/Linker/Inputs/only-needed-named-metadata.ll [deleted file]
test/Linker/only-needed-named-metadata.ll [deleted file]

index 708300fa0c04cfc3d84a7bc92e6e41baf8831ee9..b7aab9e964420cb4af2e23a26d2bbaf1dfc5207d 100644 (file)
@@ -1940,6 +1940,15 @@ bool ModuleLinker::run() {
     linkGlobalValueBody(Src);
   }
 
+  // Remap all of the named MDNodes in Src into the DstM module. We do this
+  // after linking GlobalValues so that MDNodes that reference GlobalValues
+  // are properly remapped.
+  linkNamedMDNodes();
+
+  // Merge the module flags into the DstM module.
+  if (linkModuleFlagsMetadata())
+    return true;
+
   // Update the initializers in the DstM module now that all globals that may
   // be referenced are in DstM.
   for (GlobalVariable &Src : SrcM->globals()) {
@@ -1966,15 +1975,6 @@ bool ModuleLinker::run() {
       return true;
   }
 
-  // Remap all of the named MDNodes in Src into the DstM module. We do this
-  // after linking GlobalValues so that MDNodes that reference GlobalValues
-  // are properly remapped.
-  linkNamedMDNodes();
-
-  // Merge the module flags into the DstM module.
-  if (linkModuleFlagsMetadata())
-    return true;
-
   return false;
 }
 
diff --git a/test/Linker/Inputs/only-needed-named-metadata.ll b/test/Linker/Inputs/only-needed-named-metadata.ll
deleted file mode 100644 (file)
index fa7bc2e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-@X = external global i32
-
-declare i32 @foo()
-
-define void @bar() {
-       load i32, i32* @X
-       call i32 @foo()
-       ret void
-}
diff --git a/test/Linker/only-needed-named-metadata.ll b/test/Linker/only-needed-named-metadata.ll
deleted file mode 100644 (file)
index f64637d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-; RUN: llvm-as %S/only-needed-named-metadata.ll -o %t.bc
-; RUN: llvm-as %S/Inputs/only-needed-named-metadata.ll -o %t2.bc
-; RUN: llvm-link -S -only-needed %t2.bc %t.bc | FileCheck %s
-; RUN: llvm-link -S -internalize -only-needed %t2.bc %t.bc | FileCheck %s
-
-; CHECK: @U = external global i32
-; CHECK: declare i32 @unused()
-
-@X = global i32 5
-@U = global i32 6
-define i32 @foo() { ret i32 7 }
-define i32 @unused() { ret i32 8 }
-
-!llvm.named = !{!0, !1}
-!0 = !{i32 ()* @unused}
-!1 = !{i32* @U}