[PATCH] D53669: [ELF] Don't check if symbols in .llvm.call-graph-profile are unorderable
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 25 13:53:55 PDT 2018
MaskRay updated this revision to Diff 171190.
MaskRay retitled this revision from "[ELF] Don't check if ToSym if unorderable" to "[ELF] Don't check if symbols in .llvm.call-graph-profile are unorderable".
MaskRay edited the summary of this revision.
MaskRay added a comment.
Update title. Don't check if symbols are unorderable
Repository:
rLLD LLVM Linker
https://reviews.llvm.org/D53669
Files:
ELF/Driver.cpp
test/ELF/cgprofile-obj-warn.s
Index: test/ELF/cgprofile-obj-warn.s
===================================================================
--- test/ELF/cgprofile-obj-warn.s
+++ /dev/null
@@ -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", at progbits
- .globl C
-C:
- mov poppy, %rax
- retq
-
-B = 0x1234
-
- .section .text.A,"ax", at 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
Index: ELF/Driver.cpp
===================================================================
--- ELF/Driver.cpp
+++ ELF/Driver.cpp
@@ -691,21 +691,8 @@
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);
- }
+ // Don't check if FromSym or ToSym is unorderable. There are too many
+ // reasonable cases that they would be considered unorderable.
if (FromSec && ToSec)
Config->CallGraphProfile[{FromSec, ToSec}] += CGPE.cgp_weight;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53669.171190.patch
Type: text/x-patch
Size: 2261 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181025/8efa4270/attachment.bin>
More information about the llvm-commits
mailing list