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 argument is /EXPORT.
This CL deduplicates exported symbol before parsing.
Original idea of this deduplication for Export is suggested by Rui Ueyama.
On my desktop machine, 4 times stats of the link time are like below.
Improved around 20%.
This patch
TotalSeconds : 10.2710421
TotalSeconds : 9.950322
TotalSeconds : 10.3146625
TotalSeconds : 10.437696
Avg : 10.24343065
master
TotalSeconds : 13.1020911
TotalSeconds : 13.1314426
TotalSeconds : 13.0887463
TotalSeconds : 13.1096681
Avg : 13.107987025
I think "DirectivesExports" is too narrowly scoped. It should not only contain /EXPORT options appeared in the directives section but also contain /EXPORT options in the command line, because distinguishing the two doesn't make sense. They should be handled in exactly the same way.