mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-15 22:36:30 +00:00

PR #117514 refactored BPSectionOrderer to be used by the ELF port but introduced some inefficiency: * BPSectionBase/BPSymbol are wrappers around a single pointer. The numbers of sections and symbols could be huge, and the extra allocations are memory inefficient. * Reconstructing the returned DenseMap (since BPSectionBase != InputSectin) is wasteful. This patch refactors BPSectionOrderer with Curiously Recurring Template Pattern and eliminates the inefficiency. In addition, `symbolToSectionIdxs` is removed and `rootSymbolToSectionIdxs` building is moved to lld/MachO: while getting sections for symbols is cheap in Mach-O, it is awkward and inefficient in the ELF port. While here, add a file-level comment and replace some `StringMap<*>` (which copies strings) with `DenseMap<CachedHashStringRef, *>`. Pull Request: https://github.com/llvm/llvm-project/pull/124482
66 lines
1.0 KiB
CMake
66 lines
1.0 KiB
CMake
set(LLVM_TARGET_DEFINITIONS Options.td)
|
|
tablegen(LLVM Options.inc -gen-opt-parser-defs)
|
|
add_public_tablegen_target(MachOOptionsTableGen)
|
|
|
|
include_directories(${LLVM_MAIN_SRC_DIR}/../libunwind/include)
|
|
|
|
add_lld_library(lldMachO
|
|
Arch/ARM64.cpp
|
|
Arch/ARM64Common.cpp
|
|
Arch/ARM64_32.cpp
|
|
Arch/X86_64.cpp
|
|
ConcatOutputSection.cpp
|
|
Driver.cpp
|
|
DriverUtils.cpp
|
|
Dwarf.cpp
|
|
EhFrame.cpp
|
|
ExportTrie.cpp
|
|
ICF.cpp
|
|
InputFiles.cpp
|
|
InputSection.cpp
|
|
LTO.cpp
|
|
MapFile.cpp
|
|
MarkLive.cpp
|
|
ObjC.cpp
|
|
OutputSection.cpp
|
|
OutputSegment.cpp
|
|
Relocations.cpp
|
|
BPSectionOrderer.cpp
|
|
SectionPriorities.cpp
|
|
Sections.cpp
|
|
SymbolTable.cpp
|
|
Symbols.cpp
|
|
SyntheticSections.cpp
|
|
Target.cpp
|
|
UnwindInfoSection.cpp
|
|
Writer.cpp
|
|
|
|
LINK_COMPONENTS
|
|
${LLVM_TARGETS_TO_BUILD}
|
|
BinaryFormat
|
|
BitReader
|
|
BitWriter
|
|
CGData
|
|
Core
|
|
DebugInfoDWARF
|
|
Demangle
|
|
LTO
|
|
MC
|
|
ObjCARCOpts
|
|
Object
|
|
Option
|
|
Passes
|
|
ProfileData
|
|
Support
|
|
TargetParser
|
|
TextAPI
|
|
|
|
LINK_LIBS
|
|
lldCommon
|
|
${LLVM_PTHREAD_LIB}
|
|
|
|
DEPENDS
|
|
MachOOptionsTableGen
|
|
${tablegen_deps}
|
|
)
|