llvm-project/llvm/test/Linker
Teresa Johnson 185b4ab6d4 [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

llvm-svn: 288446
2016-12-02 01:02:30 +00:00
..
Inputs Linker: Remove unnecessary call to copyMetadata in IRLinker::linkGlobalVariable. 2016-11-14 23:18:38 +00:00
2002-07-17-GlobalFail.ll
2002-07-17-LinkTest2.ll
2002-08-20-ConstantExpr.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2003-01-30-LinkerRename.ll Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
2003-01-30-LinkerTypeRename.ll
2003-04-23-LinkOnceLost.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
2003-04-26-NullPtrLinkProblem.ll
2003-05-15-TypeProblem.ll
2003-05-31-LinkerRename.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
2003-06-02-TypeResolveProblem.ll
2003-06-02-TypeResolveProblem2.ll
2003-08-20-OpaqueTypeResolve.ll
2003-08-23-GlobalVarLinking.ll
2003-08-23-RecursiveOpaqueTypeResolve.ll
2003-08-24-InheritPtrSize.ll
2003-08-28-TypeResolvesGlobal.ll
2003-08-28-TypeResolvesGlobal2.ll
2003-08-28-TypeResolvesGlobal3.ll Make "@name =" mandatory for globals in .ll files. 2016-05-10 18:22:45 +00:00
2003-10-27-LinkOncePromote.ll
2003-11-18-TypeResolution.ll
2004-02-17-WeakStrongLinkage.ll
2004-05-07-TypeResolution1.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2004-05-07-TypeResolution2.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2004-12-03-DisagreeingType.ll
2005-02-12-ConstantGlobals-2.ll
2005-02-12-ConstantGlobals.ll
2005-12-06-AppendingZeroLengthArrays.ll
2006-01-19-ConstantPacked.ll
2008-03-05-AliasReference.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2008-03-05-AliasReference2.ll
2008-03-07-DroppedSection_a.ll
2008-03-07-DroppedSection_b.ll
2008-06-13-LinkOnceRedefinition.ll
2008-06-26-AddressSpace.ll
2008-07-06-AliasFnDecl.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2008-07-06-AliasFnDecl2.ll
2008-07-06-AliasWeakDest.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2008-07-06-AliasWeakDest2.ll
2009-09-03-mdnode.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2009-09-03-mdnode2.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2011-08-04-DebugLoc.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2011-08-04-DebugLoc2.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2011-08-04-Metadata.ll DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
2011-08-04-Metadata2.ll DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
2011-08-18-unique-class-type.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2011-08-18-unique-class-type2.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2011-08-18-unique-debug-type.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
2011-08-18-unique-debug-type2.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
AppendingLinkage.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
AppendingLinkage2.ll
ConstantGlobals.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
DbgDeclare.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
DbgDeclare2.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
LinkOnce.ll
PR8300.ll
alias-2.ll Fix PR26152. 2016-01-20 22:05:50 +00:00
alias-3.ll IRLinker: fix double scheduling of mapping a global value because of an alias 2016-05-25 21:00:44 +00:00
alias.ll Slit lib/Linker in two. 2015-12-10 14:19:35 +00:00
alignment.ll Add a few extra cases to the test. NFC. 2014-12-05 00:02:42 +00:00
apple-version.ll [LinkModules] Change the way ModuleLinker merges triples. 2015-02-13 00:40:41 +00:00
available_externally_a.ll
available_externally_b.ll
available_externally_over_decl.ll Fix another case where the linkage was not set. 2015-12-10 18:44:26 +00:00
basiclink.ll
broken.ll Don't verify inputs to the Linker if ODR merging. 2016-06-29 18:31:48 +00:00
comdat-rm-dst.ll Drop comdats from the dst module if they are not selected. 2016-03-22 21:35:47 +00:00
comdat.ll Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
comdat2.ll Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
comdat4.ll Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
comdat5.ll Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
comdat6.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
comdat7.ll Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
comdat8.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
comdat9.ll Fix lazy linking of comdat members. 2016-03-24 00:06:03 +00:00
comdat10.ll Linker: Do not expect comdat to exist in source module. 2015-06-22 21:46:51 +00:00
comdat11.ll Bring r254336 back: 2015-12-01 15:19:48 +00:00
comdat12.ll Bring r254336 back: 2015-12-01 15:19:48 +00:00
comdat13.ll Bring r254336 back: 2015-12-01 15:19:48 +00:00
comdat14.ll ModuleLinker: Do not import linkonce/weak as "external_weak" 2016-04-19 16:11:05 +00:00
comdat15.ll Also copy private linkage globals when needed. 2015-12-02 20:57:33 +00:00
comdat16.ll Fix logic for which symbols to keep with comdats. 2016-03-23 21:16:33 +00:00
comdat_group.ll Pass .ll directly to llvm-link 2015-11-27 23:21:45 +00:00
constructor-comdat.ll Fix logic for which symbols to keep with comdats. 2016-03-23 21:16:33 +00:00
ctors.ll Avoid writing to source directory of tests 2015-11-30 20:36:23 +00:00
ctors2.ll Correctly handle llvm.global_ctors merging. 2015-11-29 03:29:42 +00:00
ctors3.ll Fix another llvm.ctors merging bug. 2015-11-30 18:54:24 +00:00
ctors4.ll Add an interesting case we already get right. 2015-12-02 15:02:43 +00:00
ctors5.ll Change how the linker handles the old llvm.global_ctors. 2015-12-07 13:24:23 +00:00
datalayout.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
debug-info-global-var.ll Linker: Remove unnecessary call to copyMetadata in IRLinker::linkGlobalVariable. 2016-11-14 23:18:38 +00:00
debug-info-version-a.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
debug-info-version-b.ll DI: Disallow uniquable DICompileUnits 2015-08-03 17:26:41 +00:00
dicompositetype-unique.ll IR: Enable debug info type ODR uniquing for forward decls 2016-04-19 18:00:19 +00:00
distinct-cycles.ll Utils: Resolve cycles under distinct MDNodes 2015-02-04 19:44:34 +00:00
distinct.ll Restore "Move metadata linking after lazy global materialization/linking." 2015-11-06 17:50:53 +00:00
dllstorage-a.ll
dllstorage-b.ll
drop-debug.ll Use diagnostic handler in the LLVMContext 2015-12-14 23:17:03 +00:00
func-attrs-a.ll
func-attrs-b.ll
funcimport.ll [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
funcimport2.ll ThinLTO/ModuleLinker: add a flag to not always pull-in linkonce when performing importing 2016-04-21 01:59:39 +00:00
funcimport_appending_global.ll Move summary creation out of llvm-as into opt 2016-04-12 21:35:18 +00:00
funcimport_comdat.ll Move summary creation out of llvm-as into opt 2016-04-12 21:35:18 +00:00
global_ctors.ll Simplify test. NFC. 2015-12-01 15:46:46 +00:00
ident.ll [Linker] Add some test coverage for llvm.ident merging 2014-11-05 21:33:34 +00:00
inlineasm.ll
internalize-lazy.ll Add a test showing that we internalize lazily linked GVs. 2015-12-08 02:38:14 +00:00
link-flags.ll Simplify test. NFC. 2015-12-08 02:29:45 +00:00
link-global-to-func.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
link-type-names.ll
linkage.ll
linkage2.ll
linkmdnode.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
linkmdnode2.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
linknamedmdnode.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
linknamedmdnode2.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
lto-attributes.ll Lazily link GlobalVariables and GlobalAliases. 2014-12-08 18:45:16 +00:00
mdlocation.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
metadata-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
metadata-attach.ll Linker: Remove unnecessary call to copyMetadata in IRLinker::linkGlobalVariable. 2016-11-14 23:18:38 +00:00
metadata-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
metadata-function.ll Linker: Copy over function metadata attachments 2015-04-24 22:07:31 +00:00
metadata-with-global-value-operand.ll IR: Drop uniquing when an MDNode Value operand is deleted 2016-08-03 18:19:43 +00:00
module-flags-1-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-1-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-2-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-2-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-3-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-3-b.ll llvm-link: Verify input modules 2015-03-25 23:22:10 +00:00
module-flags-4-a.ll Linker: teach the IR mover to return llvm::Error. 2016-05-27 05:21:35 +00:00
module-flags-4-b.ll Linker: teach the IR mover to return llvm::Error. 2016-05-27 05:21:35 +00:00
module-flags-5-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-5-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-6-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-6-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-7-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-7-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-8-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-8-b.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-dont-change-others.ll Linker: Don't use MDNode::replaceOperandWith() 2015-01-07 21:32:27 +00:00
module-flags-pic-1-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
module-flags-pic-2-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
multiple-merged-structs.ll
null_mapping_constant.ll ValueMapper: fix assertion when null-mapping a constant for linking metadata 2016-05-28 17:26:03 +00:00
objectivec-class-property-flag-mismatch.ll Fix autoupgrade logic for Objective-C class properties module flag 2016-09-16 00:38:18 +00:00
odr.ll DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
only-needed-debug-metadata.ll DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
only-needed-named-metadata.ll Revert obsolete llvm-link -preserve-modules option/test 2016-01-21 14:28:52 +00:00
only-needed-recurse.ll Fix recursive -only-needed. 2016-04-21 14:56:33 +00:00
opaque.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
override-different-linkage.ll Linker: Add flag to override linkage rules 2015-04-22 04:11:00 +00:00
override-with-internal-linkage-2.ll Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
override-with-internal-linkage.ll Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
override.ll Linker: Add flag to override linkage rules 2015-04-22 04:11:00 +00:00
partial-type-refinement-link.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
partial-type-refinement.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
pr21374.ll Ask the module for its the identified types. 2014-12-03 07:18:23 +00:00
pr21494.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
pr22807.ll Remember to move a type to the correct set when setting the body. 2015-03-06 00:50:21 +00:00
pr26037.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
pr27044.ll Fix another case where we were unconditionally linking linkonce GVs. 2016-03-24 15:23:01 +00:00
prologuedata.ll Make this test less strict. 2015-11-29 14:53:06 +00:00
redefinition.ll Unify and update link-messages.ll and redefinition.ll. NFC. 2014-10-31 16:52:30 +00:00
replaced-function-matches-first-subprogram.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
subprogram-linkonce-weak.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
targettriple.ll lit: Add 'cd' support to the internal shell and port some tests 2015-03-02 21:33:18 +00:00
testlink.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
thinlto_funcimport_debug.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
transitive-lazy-link.ll
type-unique-alias.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
type-unique-dst-types.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
type-unique-inheritance.ll
type-unique-name.ll Set the body of a new struct as soon as it is created. 2014-11-25 15:33:40 +00:00
type-unique-odr-a.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-odr-b.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-opaque.ll Add back r222727 with a fix. 2014-11-28 16:41:24 +00:00
type-unique-simple-a.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-simple-b.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-simple2-a.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-simple2-b.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-simple2.ll Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
type-unique-src-type.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
type-unique-type-array-a.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-type-array-b.ll DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
type-unique-unrelated.ll Add an interesting test that we already get right. NFC. 2014-11-25 03:47:57 +00:00
unique-fwd-decl-a.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
unique-fwd-decl-order.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
uniqued-distinct-cycles.ll Linker: Fix references to uniqued nodes after r243883 2015-08-04 06:42:31 +00:00
unnamed-addr-err-a.ll
unnamed-addr-err-b.ll
unnamed-addr1-a.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00
unnamed-addr1-b.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
visibility.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
weakextern.ll Link declaration lazily. 2015-12-07 16:31:41 +00:00