1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/test/ThinLTO/X86
Teresa Johnson dbca0f9a08 Restore "[ThinLTO] Avoid temporaries when loading global decl attachment metadata"
This restores commit ab1b4810b55279bcf6fdd87be74a403440be3991 which was
reverted in 01b9deba76a950f04574b656c7c31ae389104f2d, with a fix for the
issue it caused. We should use a temporary BitstreamCursor when
loading the global decl attachment records so that the abbrev ids held
in the lazy loading IndexCursor are not clobbered. Enhanced the test so
that the issue is exposed there.

Original description:

When performing ThinLTO importing, the metadata loader attempts to lazy
load, by building an index. However, module level global decl attachment
metadata was being parsed early while building the index, since the
associated (module level) global values aren't materialized on demand.
This results in the creation of forward reference temporary metadatas,
which are expensive.

Normally, these module level global values don't have much attached
metadata. However, in the case of -fwhole-program-vtables (e.g. for
whole program devirtualization), the vtables may have many attached type
metadatas. This was resulting in very slow performance when performing
ThinLTO importing with the default lazy loading.

This patch restructures the handling of these global decl attachment
records, delaying their parsing until after the lazy loading index has
been built. Then the parser can use the interface that loads from the
index, which resolves forward references immediately instead of creating
expensive temporaries.

For one ThinLTO backend that imports from modules containing huge
numbers of vtables and associated types, I measured the following
compile times for the metadata materialization during function
importing, rounded to nearest second:

No -fwhole-program-vtables:
  Lazy loading on (head):  1s
  Lazy loading off (head): 3s
  Lazy loading on (patch): 1s

With -fwhole-program-vtables:
  Lazy loading on (head):  440s
  Lazy loading off (head): 4s
  Lazy loading on (patch): 2s

Differential Revision: https://reviews.llvm.org/D87970
2020-10-12 10:11:56 -07:00
..
Inputs Restore "[ThinLTO] Avoid temporaries when loading global decl attachment metadata" 2020-10-12 10:11:56 -07:00
alias_import.ll
alias_internal.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
alias_resolution.ll
autoupgrade.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
builtin-nostrip.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-config.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-icall.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-import-lists.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-typeid-resolutions.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
cache.ll [ThinLTO] [test] cache.ll: Prevent Spotlight indexing of the output dir 2020-07-28 21:21:58 -07:00
callees-metadata.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-devirt.ll [InstCombine] Always try to invert non-canonical predicate of an icmp 2020-07-04 18:12:04 +03:00
cfi-distributed.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-icall-only-defuse.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-icall.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-unsat.ll Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
cfi.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
crash_debuginfo.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
deadstrip.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
debuginfo-compositetype-import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
debuginfo-cu-import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
devirt2.ll Restore "[ThinLTO] Avoid temporaries when loading global decl attachment metadata" 2020-10-12 10:11:56 -07:00
devirt_alias.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_available_externally.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_external_comdat_same_guid.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_local_same_guid.ll [ThinLTO/WPD] Fix index-based WPD for available_externally vtables 2019-10-30 17:59:08 -07:00
devirt_multiple_type_test.ll [WPD] Allow virtual calls to be analyzed with multiple type tests 2020-06-24 10:51:24 -07:00
devirt_promote_legacy.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_promote.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_single_hybrid.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_vcall_vis_hidden.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_vcall_vis_public.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt-after-icp.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt.ll [WPD] Provide a way to prevent functions from being devirtualized 2020-03-09 14:05:15 +03:00
diagnostic-handler-remarks-with-hotness.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
diagnostic-handler-remarks.ll [Remarks][ThinLTO] Use the correct file extension based on the format 2019-12-02 13:04:43 -08:00
dicompositetype-unique2.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dicompositetype-unique-alias.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dicompositetype-unique.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
distributed_import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
distributed_indexes.ll [ThinLTO] Compute the basic block count across modules. 2020-05-28 10:33:05 -07:00
dot-dumper2.ll ThinLTO : Import always_inline functions irrespective of the threshold 2019-11-08 17:02:01 -08:00
dot-dumper-full-lto.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dot-dumper.ll [ThinLTO] Always import constants 2020-01-15 19:29:01 +03:00
drop-debug-info.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dsolocal_dllimport.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
emit_imports.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
empty_module_with_cache.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
empty-module.ll [LTO] Suppress emission of empty combined module by default 2020-05-04 18:31:09 -07:00
export.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport2.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport_alwaysinline.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
funcimport-debug.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport-stats.ll [ThinLTO] Make ValueInfo::operator bool() explicit 2019-11-19 12:46:09 +03:00
funcimport-tbaa.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
function_entry_count.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
globals-import-blockaddr.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
globals-import-const-fold.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
globals-import.ll [ThinLTO] Import readonly vars with refs 2019-11-07 15:13:35 +03:00
guid_collision.ll Recommit "[ThinLTO] Handle GUID collision in import global processing"" 2019-11-01 13:57:01 -07:00
import_opaque_type.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
import-constant.ll [ThinLTO] Import globals recursively 2020-08-20 12:13:43 +03:00
import-metadata.ll [ThinLTO] Fix a metadata lost issue with DICompileUnit import. 2020-09-02 14:40:41 -07:00
import-ro-constant.ll [ThinLTO] Always import constants 2020-01-15 19:29:01 +03:00
index-const-prop2.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-alias.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-cache.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
index-const-prop-comdat.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-dead.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-full-lto.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-gvref-pie.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-gvref.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-ldst.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-linkage.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-O0.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
index-const-prop.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
internalize.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
lazyload_metadata.ll Make lazyload_metadata.ll resilient to the addition of new metadata kinds 2019-12-26 18:23:08 -05:00
linkonce_aliasee_ref_import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
linkonce_odr_unnamed_addr.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
linkonce_resolution_comdat.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
lit.local.cfg
llvm.used.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
load-store-caching.ll [ThinLTO] Always import constants 2020-01-15 19:29:01 +03:00
local_name_conflict_var.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
local_name_conflict.ll [ThinLTO] Import readonly vars with refs 2019-11-07 15:13:35 +03:00
mangled_symbol.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
merge-triple.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
module_asm2.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
module_asm_glob.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
module_summary_graph_traits.ll Fix [ADT][NFC] SCCIterator: Change hasLoop() to hasCycle() 2020-03-01 19:35:58 +02:00
newpm-basic.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
nodevirt-nonpromoted-typeid.ll Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
noinline.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
not-internalized.ll [ThinLTO] Don't internalize during promotion 2019-10-22 09:24:12 +00:00
personality-local.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
personality.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
pr35472.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
prefix_replace.ll
printer.ll Revert r370105 - Update two x86 datalayouts for r370083, looks like racing commits 2019-08-28 01:55:06 +00:00
reference_non_importable.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
referenced_by_constant.ll [ThinLTO] Disable "Always import constants" due to compile time issues 2020-01-30 10:12:48 -08:00
save_objects.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
section.ll
strong_non_prevailing.ll Reland "[llvm-nm] Don't report "no symbols" error for files that contain symbols" 2020-01-17 10:08:42 -08:00
thinlto-internalize-doublepromoted.ll [ThinLTO] Handle variable with twice promoted name (Rust) 2020-01-14 10:54:03 -08:00
thinlto-internalize-used.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
tli-nobuiltin.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
type_test_noindircall.ll Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
weak_externals.ll [ThinLTO] Don't internalize during promotion 2019-10-22 09:24:12 +00:00
weak_resolution_single.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
weak_resolution.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
writeonly2.ll [ThinLTO] Fix importing of writeonly variables in distributed ThinLTO 2019-12-04 14:59:27 -08:00
writeonly-with-refs.ll [ThinLTO] Fix importing of writeonly variables in distributed ThinLTO 2019-12-04 14:59:27 -08:00
writeonly.ll [ThinLTO] Add option to disable readonly/writeonly attribute propagation 2019-12-05 16:33:54 -08:00