forked from OSchip/llvm-project
[llvm_stats] Do not import llvm.stats metadata for thinlto
The stats are computed per module and will all be merged in the binary, importing the metadata will cause duplication of the stats. Reviewed By: hoy, wenlei Differential Revision: https://reviews.llvm.org/D138833
This commit is contained in:
parent
28eb9ed3bb
commit
ef0cb372dc
|
@ -1244,6 +1244,11 @@ void IRLinker::linkNamedMDNodes() {
|
|||
DstM.getModuleIdentifier() + "' is not\n");
|
||||
continue;
|
||||
}
|
||||
// The stats are computed per module and will all be merged in the binary.
|
||||
// Importing the metadata will cause duplication of the stats.
|
||||
if (IsPerformingImport && NMD.getName() == "llvm.stats")
|
||||
continue;
|
||||
|
||||
NamedMDNode *DestNMD = DstM.getOrInsertNamedMetadata(NMD.getName());
|
||||
// Add Src elements into Dest node.
|
||||
for (const MDNode *Op : NMD.operands())
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @foo() {
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { inaccessiblememonly nounwind willreturn }
|
||||
|
||||
!llvm.stats = !{!0}
|
||||
!0 = !{!"foo", i64 456}
|
|
@ -0,0 +1,28 @@
|
|||
; RUN: opt -module-summary %s -o %t1.bc
|
||||
; RUN: opt -module-summary %p/Inputs/llvm-stats-import.ll -o %t2.bc
|
||||
; RUN: llvm-lto -thinlto-action=thinlink -o %t.index.bc %t1.bc %t2.bc
|
||||
|
||||
; RUN: llvm-lto -thinlto-action=import %t1.bc -thinlto-index=%t.index.bc -o - | llvm-dis -o - | FileCheck %s --check-prefix=CHECK-MAIN
|
||||
; RUN: llvm-lto -thinlto-action=import %t2.bc -thinlto-index=%t.index.bc -o - | llvm-dis -o - | FileCheck %s --check-prefix=CHECK-FOO
|
||||
|
||||
; CHECK-MAIN: !0 = !{!"main", i64 123}
|
||||
; CHECK-MAIN-NOT: !{!"foo", i64 456}
|
||||
|
||||
; CHECK-FOO: !0 = !{!"foo", i64 456}
|
||||
; CHECK-FOO-NOT: !{!"main", i64 123}
|
||||
|
||||
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define i32 @main() {
|
||||
entry:
|
||||
call void (...) @foo()
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
declare void @foo(...)
|
||||
|
||||
attributes #0 = { inaccessiblememonly nounwind willreturn }
|
||||
|
||||
!llvm.stats = !{!0}
|
||||
!0 = !{!"main", i64 123}
|
Loading…
Reference in New Issue