mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-15 07:39:31 +00:00
Restore "Move metadata linking after lazy global materialization/linking."
This reverts commit r251965. llvm-svn: 252319
This commit is contained in:
parent
09e241eb0f
commit
a0fa6e609e
@ -1892,15 +1892,6 @@ 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()) {
|
||||
@ -1927,6 +1918,15 @@ 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;
|
||||
}
|
||||
|
||||
|
9
test/Linker/Inputs/only-needed-named-metadata.ll
Normal file
9
test/Linker/Inputs/only-needed-named-metadata.ll
Normal file
@ -0,0 +1,9 @@
|
||||
@X = external global i32
|
||||
|
||||
declare i32 @foo()
|
||||
|
||||
define void @bar() {
|
||||
load i32, i32* @X
|
||||
call i32 @foo()
|
||||
ret void
|
||||
}
|
16
test/Linker/only-needed-named-metadata.ll
Normal file
16
test/Linker/only-needed-named-metadata.ll
Normal file
@ -0,0 +1,16 @@
|
||||
; 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}
|
Loading…
Reference in New Issue
Block a user