1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/ThinLTO/X86
Mehdi Amini 324950270d Use lazy-loading of Metadata in MetadataLoader when importing is enabled (NFC)
Summary:
This is a relatively simple scheme: we use the index emitted in the
bitcode to avoid loading all the global metadata. Instead we load
the index with their position in the bitcode so that we can load each
of them individually. Materializing the global metadata block in this
condition only triggers loading the named metadata, and the ones
referenced from there (transitively). When materializing a function,
metadata from the global block are loaded lazily as they are
referenced.

Two main current limitations are:

1) Global values other than functions are not materialized on demand,
so we need to eagerly load METADATA_GLOBAL_DECL_ATTACHMENT records
(and their transitive dependencies).
2) When we load a single metadata, we don't recurse on the operands,
instead we use a placeholder or a temporary metadata. Unfortunately
tepmorary nodes are very expensive. This is why we don't have it
always enabled and only for importing.

These two limitations can be lifted in a subsequent improvement if
needed.

With this change, the total link time of opt with ThinLTO and Debug
Info enabled is going down from 282s to 224s (~20%).

Reviewers: pcc, tejohnson, dexonsmith

Subscribers: llvm-commits

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

llvm-svn: 291027
2017-01-04 22:54:33 +00:00
..
Inputs Use lazy-loading of Metadata in MetadataLoader when importing is enabled (NFC) 2017-01-04 22:54:33 +00:00
alias_import.ll [ThinLTO] Only promote exported locals as marked in index 2016-11-14 19:21:41 +00:00
alias_resolution.ll
autoupgrade.ll Fix test change in r290736: restore index generation 2016-12-30 01:15:50 +00:00
cache-config.ll LTO: Hash the parts of the LTO configuration that affect code generation. 2016-12-08 05:28:30 +00:00
cache.ll ThinLTO: don't perform incremental LTO on module without a hash 2016-10-08 04:44:23 +00:00
crash_debuginfo.ll Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
debuginfo-compositetype-import.ll [ThinLTO] Import composite types as declarations 2016-12-16 21:25:01 +00:00
debuginfo-cu-import.ll Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
diagnostic-handler-remarks-with-hotness.ll [LTOs] Allow generation of hotness information 2016-12-02 17:53:56 +00:00
diagnostic-handler-remarks.ll Make LTO opt-remarks tests matching stricter 2016-12-02 17:53:49 +00:00
dicompositetype-unique.ll
distributed_import.ll [LTO] Reject modules without datalayout. 2016-12-14 21:57:04 +00:00
distributed_indexes.ll
drop-debug-info.ll [ThinLTO] Rework llvm-link to use the FunctionImporter 2017-01-04 14:27:31 +00:00
emit_imports.ll [ThinLTO] Always emit a summary when compiling in ThinLTO mode 2016-09-20 23:07:17 +00:00
empty_module_with_cache.ll ThinLTO: don't perform incremental LTO on module without a hash 2016-10-08 04:44:23 +00:00
export.ll [ThinLTO] Thin link efficiency improvement: don't re-export globals (NFC) 2016-12-15 23:50:06 +00:00
funcimport2.ll [ThinLTO] Disable importing and other cross-module optis at -O0 2016-10-31 22:12:21 +00:00
funcimport.ll [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
import_opaque_type.ll [ThinLTO] Fix crash when importing an opaque type 2016-11-19 18:44:16 +00:00
internalize.ll
lazyload_metadata.ll Use lazy-loading of Metadata in MetadataLoader when importing is enabled (NFC) 2017-01-04 22:54:33 +00:00
linkonce_aliasee_ref_import.ll [ThinLTO] Correctly resolve linkonce when importing aliasee 2016-10-30 05:15:23 +00:00
linkonce_resolution_comdat.ll
lit.local.cfg
llvm.used.ll
module_asm2.ll [ThinLTO] Fix "||" vs "|" mixup. 2016-12-27 17:45:09 +00:00
module_asm_glob.ll llvm-lto2: Simpler workaround for PR30396. 2016-11-30 23:19:05 +00:00
prefix_replace.ll
reference_non_importable.ll [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
referenced_by_constant.ll [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
save_objects.ll [ThinLTO] Add an API to trigger file-based API for returning objects to the linker 2016-12-14 04:56:42 +00:00
section.ll
select_right_alias_definition.ll
weak_resolution_single.ll
weak_resolution.ll [ThinLTO] Correctly resolve linkonce when importing aliasee 2016-10-30 05:15:23 +00:00