forked from OSchip/llvm-project
[ELF] Don't check if symbols in .llvm.call-graph-profile are unorderable
Summary: There are too many reasonable cases that would be considered unorderable. Reviewers: ruiu, espindola, Bigcheese Reviewed By: ruiu Subscribers: grimar, emaste, arichardson, llvm-commits Differential Revision: https://reviews.llvm.org/D53669 llvm-svn: 345322
This commit is contained in:
parent
4645711a8d
commit
018b0634b4
|
@ -690,22 +690,6 @@ template <class ELFT> static void readCallGraphsFromObjectFiles() {
|
|||
continue;
|
||||
auto *FromSec = dyn_cast_or_null<InputSectionBase>(FromSym->Section);
|
||||
auto *ToSec = dyn_cast_or_null<InputSectionBase>(ToSym->Section);
|
||||
|
||||
// The profile from .llvm.call-graph-profile is conceptually affiliated to
|
||||
// FromSec. Don't warn unorderable symbol if FromSym is not absolute
|
||||
// (FromSec isn't null) and the section is discarded
|
||||
// (!FromSec->Repl->Live).
|
||||
//
|
||||
// We also don't want to warn when ToSym is undefined or is in a shared
|
||||
// object (as symbols in shared objects are fixed and unorderable).
|
||||
//
|
||||
// The check used here is more relaxed (no warning if either FromSym or
|
||||
// ToSym is not Defined) for simplicity and there is no compelling reason
|
||||
// to warn on more cases.
|
||||
if (!FromSec || FromSec->Repl->Live) {
|
||||
warnUnorderableSymbol(FromSym);
|
||||
warnUnorderableSymbol(ToSym);
|
||||
}
|
||||
if (FromSec && ToSec)
|
||||
Config->CallGraphProfile[{FromSec, ToSec}] += CGPE.cgp_weight;
|
||||
}
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
# REQUIRES: x86
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
||||
|
||||
# RUN: ld.lld -e A %t -o /dev/null \
|
||||
# RUN: -noinhibit-exec -icf=all 2>&1 | FileCheck %s
|
||||
|
||||
.section .text.C,"ax",@progbits
|
||||
.globl C
|
||||
C:
|
||||
mov poppy, %rax
|
||||
retq
|
||||
|
||||
B = 0x1234
|
||||
|
||||
.section .text.A,"ax",@progbits
|
||||
.globl A
|
||||
A:
|
||||
mov poppy, %rax
|
||||
retq
|
||||
|
||||
.cg_profile A, B, 100
|
||||
.cg_profile A, C, 40
|
||||
.cg_profile B, C, 30
|
||||
.cg_profile adena1, A, 30
|
||||
.cg_profile A, adena2, 30
|
||||
.cg_profile poppy, A, 30
|
||||
|
||||
# CHECK: unable to order absolute symbol: B
|
||||
|
||||
# RUN: ld.lld %t -o /dev/null \
|
||||
# RUN: -noinhibit-exec -icf=all --no-warn-symbol-ordering 2>&1 \
|
||||
# RUN: | FileCheck %s --check-prefix=NOWARN
|
||||
# NOWARN-NOT: unable to order
|
Loading…
Reference in New Issue