[PATCH] D115539: [lld-macho][nfc] InputSections don't need to track their total # of callsites
Jez Ng via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 10 22:02:14 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG40bcbe48e8ec: [lld-macho][nfc] InputSections don't need to track their total # of callsites (authored by int3).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D115539/new/
https://reviews.llvm.org/D115539
Files:
lld/MachO/ConcatOutputSection.cpp
lld/MachO/InputSection.h
Index: lld/MachO/InputSection.h
===================================================================
--- lld/MachO/InputSection.h
+++ lld/MachO/InputSection.h
@@ -57,9 +57,8 @@
OutputSection *parent = nullptr;
uint32_t align = 1;
- uint32_t callSiteCount : 31;
// is address assigned?
- uint32_t isFinal : 1;
+ bool isFinal = false;
ArrayRef<uint8_t> data;
std::vector<Reloc> relocs;
@@ -86,12 +85,11 @@
InputSection(Kind kind, StringRef segname, StringRef name, InputFile *file,
ArrayRef<uint8_t> data, uint32_t align, uint32_t flags)
- : align(align), callSiteCount(0), isFinal(false), data(data),
+ : align(align), data(data),
shared(make<Shared>(file, name, segname, flags, kind)) {}
InputSection(const InputSection &rhs)
- : align(rhs.align), callSiteCount(0), isFinal(false), data(rhs.data),
- shared(rhs.shared) {}
+ : align(rhs.align), data(rhs.data), shared(rhs.shared) {}
const Shared *const shared;
};
@@ -143,6 +141,7 @@
// first and not copied to the output.
bool wasCoalesced = false;
bool live = !config->deadStrip;
+ bool hasCallSites = false;
// This variable has two usages. Initially, it represents the input order.
// After assignAddresses is called, it represents the offset from the
// beginning of the output section this section was assigned to.
Index: lld/MachO/ConcatOutputSection.cpp
===================================================================
--- lld/MachO/ConcatOutputSection.cpp
+++ lld/MachO/ConcatOutputSection.cpp
@@ -124,13 +124,13 @@
if (!target->usesThunks())
return false;
uint64_t isecAddr = addr;
- for (InputSection *isec : inputs)
+ for (ConcatInputSection *isec : inputs)
isecAddr = alignTo(isecAddr, isec->align) + isec->getSize();
if (isecAddr - addr + in.stubs->getSize() <=
std::min(target->backwardBranchRange, target->forwardBranchRange))
return false;
// Yes, this program is large enough to need thunks.
- for (InputSection *isec : inputs) {
+ for (ConcatInputSection *isec : inputs) {
for (Reloc &r : isec->relocs) {
if (!target->hasAttr(r.type, RelocAttrBits::BRANCH))
continue;
@@ -143,9 +143,8 @@
// might need to create more for this referent at the time we are
// estimating distance to __stubs in estimateStubsInRangeVA().
++thunkInfo.callSiteCount;
- // Knowing InputSection call site count will help us avoid work on those
- // that have no BRANCH relocs.
- ++isec->callSiteCount;
+ // We can avoid work on InputSections that have no BRANCH relocs.
+ isec->hasCallSites = true;
}
}
return true;
@@ -250,7 +249,7 @@
isecVA + forwardBranchRange - slop)
finalizeOne(inputs[finalIdx++]);
- if (isec->callSiteCount == 0)
+ if (!isec->hasCallSites)
continue;
if (finalIdx == endIdx && stubsInRangeVA == TargetInfo::outOfRangeVA) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D115539.393664.patch
Type: text/x-patch
Size: 2982 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211211/aae84fe2/attachment.bin>
More information about the llvm-commits
mailing list