llvm-project/lld/COFF
Reid Kleckner 1600490af1 [COFF] Optimize range extension thunk insertion memory usage
Summary:
This avoids allocating O(#relocs) of intermediate data for each section
when range extension thunks aren't needed for that section. This also
removes a std::vector from SectionChunk, which further reduces its size.

Instead, this change adds the range extension thunk symbols to the
object files that contain sections that need extension thunks. By adding
them to the symbol table of the parent object, that means they now have
a symbol table index. Then we can then modify the original relocation,
after copying it to read-write memory, to use the new symbol table
index.

This makes linking browser_tests.exe with no PDB 10.46% faster, moving
it from 11.364s to 10.288s averaged over five runs.

Reviewers: mstorsjo, ruiu

Subscribers: aganea, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59902

llvm-svn: 357200
2019-03-28 18:30:03 +00:00
..
CMakeLists.txt Merge {COFF,ELF}/Strings.cpp to Common/Strings.cpp. 2018-02-28 17:38:19 +00:00
Chunks.cpp [COFF] Optimize range extension thunk insertion memory usage 2019-03-28 18:30:03 +00:00
Chunks.h [COFF] Optimize range extension thunk insertion memory usage 2019-03-28 18:30:03 +00:00
Config.h [LLD][COFF] Add /summary to print statistics 2019-03-14 18:45:08 +00:00
DLL.cpp Fix broken export table if .rdata is merged with .text. 2019-01-24 19:02:31 +00:00
DLL.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Driver.cpp [LLD][COFF] Add /summary to print statistics 2019-03-14 18:45:08 +00:00
Driver.h [LLD][COFF] More detailed information for /failifmismatch 2019-03-06 20:18:38 +00:00
DriverUtils.cpp [LLD][COFF] More detailed information for /failifmismatch 2019-03-06 20:18:38 +00:00
ICF.cpp [COFF] Delete unused declarations and add a missing forward declaration. NFC 2019-03-15 09:40:03 +00:00
ICF.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InputFiles.cpp [LLD][COFF] Add support for /FUNCTIONPADMIN command-line option 2019-02-23 01:46:18 +00:00
InputFiles.h [COFF] Optimize range extension thunk insertion memory usage 2019-03-28 18:30:03 +00:00
LTO.cpp Fix names of functions in TargetOptionsCommandFlags.h. NFC. 2019-02-01 02:24:50 +00:00
LTO.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MapFile.cpp [LLD][COFF] Support /threads[:no] like the ELF driver 2019-02-27 20:53:50 +00:00
MapFile.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MarkLive.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MarkLive.h [COFF] Delete unused declarations and add a missing forward declaration. NFC 2019-03-15 09:40:03 +00:00
MinGW.cpp Move MinGW-specific code out of LinkerDriver::link. NFC. 2019-02-19 22:06:44 +00:00
MinGW.h Move MinGW-specific code out of LinkerDriver::link. NFC. 2019-02-19 22:06:44 +00:00
Options.td [LLD][COFF] Add /summary to print statistics 2019-03-14 18:45:08 +00:00
PDB.cpp [COFF] Optimize range extension thunk insertion memory usage 2019-03-28 18:30:03 +00:00
PDB.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
README.md Update the documents of the new LLD. 2016-03-12 06:06:40 +00:00
SymbolTable.cpp [LLD][COFF] More detailed information for /failifmismatch 2019-03-06 20:18:38 +00:00
SymbolTable.h lld/coff: Implement some support for the comdat selection field 2019-01-30 02:17:27 +00:00
Symbols.cpp lld-link: Only print demangled symbol names by default 2019-03-11 23:02:18 +00:00
Symbols.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Writer.cpp [COFF] Optimize range extension thunk insertion memory usage 2019-03-28 18:30:03 +00:00
Writer.h [COFF] Delete unused declarations and add a missing forward declaration. NFC 2019-03-15 09:40:03 +00:00

README.md

See docs/NewLLD.rst