llvm/test/ThinLTO/X86
Teresa Johnson 7d2e3aa58e [ThinLTO] Stop importing constant global vars as copies in the backend
Summary:
We were doing an optimization in the ThinLTO backends of importing
constant unnamed_addr globals unconditionally as a local copy (regardless
of whether the thin link decided to import them). This should be done in
the thin link instead, so that resulting exported references are marked
and promoted appropriately, but will need a summary enhancement to mark
these variables as constant unnamed_addr.

The function import logic during the thin link was trying to handle
this proactively, by conservatively marking all values referenced in
the initializer lists of exported global variables as also exported.
However, this only handled values referenced directly from the
initializer list of an exported global variable. If the value is itself
a constant unnamed_addr variable, we could end up exporting its
references as well. This caused multiple issues. The first is that the
transitively exported references weren't promoted. Secondly, some could
not be promoted/renamed (e.g. they had a section or other constraint).
recursively, instead of just adding the first level of initializer list
references to the ExportList directly.

Remove this optimization and the associated handling in the function
import backend. SPEC measurements indicate we weren't getting much
from it in any case.

Fixes PR31052.

Reviewers: mehdi_amini

Subscribers: krasin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288446 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 01:02:30 +00:00
..
Inputs [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +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
cache.ll
crash_debuginfo.ll
diagnostic-handler-remarks.ll Rename option to -lto-pass-remarks-output 2016-11-22 07:35:14 +00:00
dicompositetype-unique.ll
distributed_import.ll [ThinLTO] Handle distributed backend case when doing renaming 2016-11-03 01:07:16 +00:00
distributed_indexes.ll
drop-debug-info.ll
emit_imports.ll
empty_module_with_cache.ll
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
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 Restore "[ThinLTO] Prevent exporting of locals used/defined in module level asm" 2016-11-14 17:12:32 +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
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