llvm-project/lld/COFF
Reid Kleckner fce5457a14 [COFF] Avoid allocating temporary vectors during ICF
Heap profiling with ETW shows that LLD performs 4,053,721 heap
allocations over its lifetime, and ~800,000 of them come from
assocEquals. These vectors are created just to do a comparison, so fuse
the comparison into the loop and avoid the allocation.

ICF is overall a small portion of the time spent linking, and I did not
measure overall throughput improvements from this change above the noise
threshold. However, these show up in the heap profiler, and the work is
done, so we might as well land it if the code is clear enough.

Reviewed By: hans

Differential Revision: https://reviews.llvm.org/D79297
2020-05-04 07:01:14 -07:00
..
CMakeLists.txt [lld-link] Support /map option, matching link.exe 's /map output format 2020-03-24 09:48:00 -04:00
Chunks.cpp [COFF] Rename variale references in comments after VariableName -> variableName change 2019-07-16 08:26:38 +00:00
Chunks.h [COFF] Avoid allocating temporary vectors during ICF 2020-05-04 07:01:14 -07:00
Config.h [ms] Add new /PDBSTREAM option to lld-link allowing injection of streams into PDB files. 2020-04-07 16:19:38 -04:00
DLL.cpp [LLD] [COFF] Fix alignment of thunks for ARM/ARM64 2020-04-13 23:27:15 +03:00
DLL.h [COFF] Share the tail in delayimport symbol thunks 2019-07-11 21:19:11 +00:00
DebugTypes.cpp Remove namespace lld { namespace coff { from COFF LLD cpp files 2020-02-25 17:30:53 -08:00
DebugTypes.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Driver.cpp [COFF] Use a global option table to avoid reconstructing it 2020-05-02 15:04:19 -07:00
Driver.h [COFF] Use a global option table to avoid reconstructing it 2020-05-02 15:04:19 -07:00
DriverUtils.cpp [COFF] Use a global option table to avoid reconstructing it 2020-05-02 15:04:19 -07:00
ICF.cpp [COFF] Avoid allocating temporary vectors during ICF 2020-05-04 07:01:14 -07:00
ICF.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
InputFiles.cpp Make helpers static. NFC. 2020-04-03 12:48:25 +02:00
InputFiles.h [COFF] Avoid CodeView include in header 2019-11-14 14:27:48 -08:00
LLDMapFile.cpp [lld-link] Support /map option, matching link.exe 's /map output format 2020-03-24 09:48:00 -04:00
LLDMapFile.h [lld-link] Support /map option, matching link.exe 's /map output format 2020-03-24 09:48:00 -04:00
LTO.cpp [COFF] Assign unique identifiers to ObjFiles from LTO 2020-04-17 17:15:12 -07:00
LTO.h [COFF] Assign unique identifiers to ObjFiles from LTO 2020-04-17 17:15:12 -07:00
MapFile.cpp [lld-link] Support /map option, matching link.exe 's /map output format 2020-03-24 09:48:00 -04:00
MapFile.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MarkLive.cpp [COFF] Don't treat DWARF sections as GC roots 2020-03-27 12:37:43 -07:00
MarkLive.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MinGW.cpp Remove namespace lld { namespace coff { from COFF LLD cpp files 2020-02-25 17:30:53 -08:00
MinGW.h [COFF] Don't include llvm/LTO/LTO.h in a header 2019-11-14 13:47:18 -08:00
Options.td [ms] Add new /PDBSTREAM option to lld-link allowing injection of streams into PDB files. 2020-04-07 16:19:38 -04:00
PDB.cpp Re-land "[PDB] Avoid calling discoverTypeIndices for a known record kind" 2020-05-02 18:39:33 -07:00
PDB.h [LLD] [COFF] Wrap file location pair<StringRef,int> in Optional<>. NFC. 2019-10-15 09:18:18 +00:00
README.md
SymbolTable.cpp [COFF] Assign unique identifiers to ObjFiles from LTO 2020-04-17 17:15:12 -07:00
SymbolTable.h [COFF] Assign unique identifiers to ObjFiles from LTO 2020-04-17 17:15:12 -07:00
Symbols.cpp [COFF] Paritally inline Symbol::getName, NFC 2020-05-03 07:58:05 -07:00
Symbols.h [COFF] Paritally inline Symbol::getName, NFC 2020-05-03 07:58:05 -07:00
TypeMerger.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Writer.cpp [lld-link] Support /map option, matching link.exe 's /map output format 2020-03-24 09:48:00 -04:00
Writer.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00

README.md

See docs/NewLLD.rst