diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index 708300fa0c0..b7aab9e9644 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -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 index fa7bc2e3cc8..00000000000 --- a/test/Linker/Inputs/only-needed-named-metadata.ll +++ /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 index f64637d3c75..00000000000 --- a/test/Linker/only-needed-named-metadata.ll +++ /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}