summaryrefslogtreecommitdiff
path: root/test/Linker/only-needed-debug-metadata.ll
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2016-12-16 04:11:51 +0000
committerTeresa Johnson <tejohnson@google.com>2016-12-16 04:11:51 +0000
commit3b4ecf6e3739dc80ca10250f9d0bdfb973987efd (patch)
tree74cbac596056bbb18ba6ff2a1ab361bb8edfea35 /test/Linker/only-needed-debug-metadata.ll
parenta0c720897cd3cd3a86e9ec1ac05fa67439829d6d (diff)
[ThinLTO] Thin link efficiency: More efficient export list computation
Summary: Instead of checking whether a global referenced by a function being imported is defined in the same module, speculatively always add the referenced globals to the module's export list. After all imports are computed, for each module prune any not in its defined set from its export list. For a huge C++ app with aggressive importing thresholds, even with D27687 we spent a lot of time invoking modulePath() from exportGlobalInModule (modulePath() was still the 2nd hottest routine in profile). The reason is that with comdat/linkonce the summary lists for each GUID can be long. For the app in question, for example, we were invoking exportGlobalInModule almost 2 million times, and we traversed an average of 63 entries in the summary list each time. This patch reduced the thin link time for the app by about 10% (on top of D27687) when using aggressive importing thresholds, and about 3.5% on average with default importing thresholds. Reviewers: mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27755 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@289918 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Linker/only-needed-debug-metadata.ll')
0 files changed, 0 insertions, 0 deletions