llvm-project/lld/COFF
Rui Ueyama 5fa0d6e4a2 [COFF] Process /EXPORT option in fastpath
Patch by Takuto Ikuta.

This patch reduces lld link time of chromium's blink_core.dll in
component build.

Total size of input argument in .directives become nearly 300MB in the
build and almost all its content are /EXPORT.

To reduce time of parsing too many /EXPORT option in the build, I
introduce fastpath for /EXPORT in ArgParser::parseDirectives.

On my desktop machine, 4 times stats of the link time are like below.
Improved around 20%.

This patch
TotalSeconds : 8.6217627
TotalSeconds : 8.5402175
TotalSeconds : 8.6855853
TotalSeconds : 8.3624441
Ave : 8.5525024

master
TotalSeconds : 10.9975031
TotalSeconds : 11.3409428
TotalSeconds : 10.6332897
TotalSeconds : 10.7650687
Ave : 10.934201075

llvm-svn: 322117
2018-01-09 20:36:42 +00:00
..
CMakeLists.txt [lld] unified COFF and ELF error handling on new Common/ErrorHandler 2017-10-25 22:28:38 +00:00
Chunks.cpp [COFF] Error out if 20 bit thumb branches are out of range 2017-12-14 08:56:36 +00:00
Chunks.h Reland r319090, "COFF: Do not create SectionChunks for discarded comdat sections." with a fix for debug sections. 2017-11-28 01:30:07 +00:00
Config.h [COFF] Delete CanExitEarly 2018-01-08 21:14:51 +00:00
DLL.cpp [COFF] Don't set the thumb bit in address table entries for data symbols 2017-12-20 06:50:45 +00:00
DLL.h Revert "Merge IAT and ILT." 2017-06-02 18:49:38 +00:00
Driver.cpp [COFF] Process /EXPORT option in fastpath 2018-01-09 20:36:42 +00:00
Driver.h [COFF] Process /EXPORT option in fastpath 2018-01-09 20:36:42 +00:00
DriverUtils.cpp [COFF] Process /EXPORT option in fastpath 2018-01-09 20:36:42 +00:00
ICF.cpp Prefer `ArrayRef` over `const std::vector&` 2017-12-08 01:09:21 +00:00
InputFiles.cpp Remove checkToString functions and use toString instead. 2017-12-07 03:24:57 +00:00
InputFiles.h Prefer `ArrayRef` over `const std::vector&` 2017-12-08 01:09:21 +00:00
LTO.cpp Rename replaceBody -> replaceSymbol. 2017-11-03 22:48:47 +00:00
LTO.h Move new lld's code to Common subdirectory. 2017-10-02 21:00:41 +00:00
MapFile.cpp COFF: Remove the SymbolBodies vector, and rename SparseSymbolBodies to Symbols. 2017-11-20 18:52:53 +00:00
MapFile.h COFF: Change the /lldmap output format to be more like the ELF linker. 2017-01-14 03:14:46 +00:00
MarkLive.cpp Prefer `ArrayRef` over `const std::vector&` 2017-12-08 01:09:21 +00:00
MinGW.cpp [COFF] Don't export symbols that have corresponding __imp_ symbols 2017-11-29 05:50:49 +00:00
MinGW.h [COFF] Avoid forward declaring StringSet, fix build 2017-10-19 20:19:16 +00:00
Options.td [COFF] support /ignore:4217 2017-12-28 07:02:13 +00:00
PDB.cpp Fix unhandled switch values. 2018-01-05 19:28:39 +00:00
PDB.h [LLD COFF/PDB] Incrementally update the build id. 2017-08-15 21:31:41 +00:00
README.md Update the documents of the new LLD. 2016-03-12 06:06:40 +00:00
Strings.cpp Factor out common code to Common/Strings.cpp. 2017-11-28 02:15:26 +00:00
Strings.h Factor out common code to Common/Strings.cpp. 2017-11-28 02:15:26 +00:00
SymbolTable.cpp [COFF] support /ignore:4217 2017-12-28 07:02:13 +00:00
SymbolTable.h Reland r319090, "COFF: Do not create SectionChunks for discarded comdat sections." with a fix for debug sections. 2017-11-28 01:30:07 +00:00
Symbols.cpp Move Memory.{h,cpp} to Common. 2017-11-28 20:39:17 +00:00
Symbols.h Move Memory.{h,cpp} to Common. 2017-11-28 20:39:17 +00:00
Writer.cpp [COFF] Set the IMAGE_DLL_CHARACTERISTICS_NO_SEH flag automatically 2017-12-15 20:53:03 +00:00
Writer.h Prefer `ArrayRef` over `const std::vector&` 2017-12-08 01:09:21 +00:00

README.md

See docs/NewLLD.rst