llvm-project/llvm/test/Transforms/WholeProgramDevirt
Teresa Johnson 7fb39dfa7c [ThinLTO] Efficiency fix for writing type id records in per-module indexes
Summary:
In D49565/r337503, the type id record writing was fixed so that only
referenced type ids were emitted into each per-module index for ThinLTO
distributed builds. However, this still left an efficiency issue: each
per-module index checked all type ids for membership in the referenced
set, yielding O(M*N) performance (M indexes and N type ids).

Change the TypeIdMap in the summary to be indexed by GUID, to facilitate
correlating with type identifier GUIDs referenced in the function
summary TypeIdInfo structures. This allowed simplifying other
places where a map from type id GUID to type id map entry was previously
being used to aid this correlation.

Also fix AsmWriter code to handle the rare case of type id GUID
collision.

For a large internal application, this reduced the thin link time by
almost 15%.

Reviewers: pcc, vitalybuka

Subscribers: mehdi_amini, inglorion, steven_wu, dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D51330

llvm-svn: 343021
2018-09-25 20:14:40 +00:00
..
Inputs Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00
bad-read-from-vtable.ll
branch-funnel-threshold.ll Runtime flag to control branch funnel threshold 2018-04-06 21:32:36 +00:00
branch-funnel.ll [ThinLTO] Efficiency fix for writing type id records in per-module indexes 2018-09-25 20:14:40 +00:00
constant-arg.ll
devirt-single-impl-check.ll
devirt-single-impl.ll
expand-check.ll
export-nothing.ll
export-single-impl.ll [ThinLTO] Efficiency fix for writing type id records in per-module indexes 2018-09-25 20:14:40 +00:00
export-uniform-ret-val.ll
export-unique-ret-val.ll
export-unsuccessful-checked.ll
export-vcp.ll
import-indir.ll
import-no-dominating-assume.ll
import.ll Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00
non-constant-vtable.ll
pointer-vtable.ll
soa-vtable.ll
struct-vtable.ll
uniform-retval-invoke.ll
uniform-retval.ll
unique-retval.ll
vcp-accesses-memory.ll
vcp-decl.ll
vcp-no-this.ll
vcp-non-constant-arg.ll
vcp-too-wide-ints.ll
vcp-type-mismatch.ll
vcp-uses-this.ll
virtual-const-prop-begin.ll
virtual-const-prop-check.ll
virtual-const-prop-end.ll
vtable-decl.ll [WholeProgramDevirt] Don't process declarations when building type id map 2018-09-23 13:27:47 +00:00