[llvm] r322117 - [COFF] Process /EXPORT option in fastpath

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 9 12:36:42 PST 2018


Author: ruiu
Date: Tue Jan  9 12:36:42 2018
New Revision: 322117

URL: http://llvm.org/viewvc/llvm-project?rev=322117&view=rev
Log:
[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

Modified:
    llvm/trunk/include/llvm/Option/ArgList.h

Modified: llvm/trunk/include/llvm/Option/ArgList.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Option/ArgList.h?rev=322117&r1=322116&r2=322117&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Option/ArgList.h (original)
+++ llvm/trunk/include/llvm/Option/ArgList.h Tue Jan  9 12:36:42 2018
@@ -390,6 +390,8 @@ private:
   void releaseMemory();
 
 public:
+  InputArgList() : NumInputArgStrings(0) {}
+
   InputArgList(const char* const *ArgBegin, const char* const *ArgEnd);
 
   InputArgList(InputArgList &&RHS)




More information about the llvm-commits mailing list