mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-30 19:55:11 +00:00
49135bb76c
An optional third field was added to `llvm.global_ctors` (and `llvm.global_dtors`) in r209015. Most of the code has been changed to deal with both versions of the variables. Users of the C API might create either version, the helper functions in LLVM create the two-field version, and clang now creates the three-field version. However, the BitcodeReader was changed to always upgrade to the three-field version. This created an unnecessary inconsistency in the IR before/after serializing to bitcode. This commit resolves the inconsistency by making the third field truly optional (and not upgrading in the bitcode reader). Since `llvm-link` was relying on this upgrade code, rather than deleting it I've moved it into `ModuleLinker`, where it upgrades these arrays as necessary to resolve inconsistencies between modules. The ideal resolution would be to remove the 2-field version and make the third field required. I filed PR20506 to track that. I changed `test/Bitcode/upgrade-global-ctors.ll` to a negative test and duplicated the `llvm-link` check in `test/Linker/global_ctors.ll` to check both upgrade directions. Since I came across this as part of PR5680 (serializing use-list order), I've also added the missing `verify-uselistorder` RUN line to `test/Bitcode/metadata-2.ll`. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215457 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
Inputs | ||
2002-07-17-GlobalFail.ll | ||
2002-07-17-LinkTest2.ll | ||
2002-08-20-ConstantExpr.ll | ||
2003-01-30-LinkerRename.ll | ||
2003-01-30-LinkerTypeRename.ll | ||
2003-04-23-LinkOnceLost.ll | ||
2003-04-26-NullPtrLinkProblem.ll | ||
2003-05-15-TypeProblem.ll | ||
2003-05-31-LinkerRename.ll | ||
2003-06-02-TypeResolveProblem2.ll | ||
2003-06-02-TypeResolveProblem.ll | ||
2003-08-20-OpaqueTypeResolve.ll | ||
2003-08-23-GlobalVarLinking.ll | ||
2003-08-23-RecursiveOpaqueTypeResolve.ll | ||
2003-08-24-InheritPtrSize.ll | ||
2003-08-28-TypeResolvesGlobal2.ll | ||
2003-08-28-TypeResolvesGlobal3.ll | ||
2003-08-28-TypeResolvesGlobal.ll | ||
2003-10-27-LinkOncePromote.ll | ||
2003-11-18-TypeResolution.ll | ||
2004-02-17-WeakStrongLinkage.ll | ||
2004-05-07-TypeResolution1.ll | ||
2004-05-07-TypeResolution2.ll | ||
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 | ||
2006-06-15-GlobalVarAlignment.ll | ||
2008-03-05-AliasReference2.ll | ||
2008-03-05-AliasReference.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-AliasFnDecl2.ll | ||
2008-07-06-AliasFnDecl.ll | ||
2008-07-06-AliasWeakDest2.ll | ||
2008-07-06-AliasWeakDest.ll | ||
2009-09-03-mdnode2.ll | ||
2009-09-03-mdnode.ll | ||
2011-08-04-DebugLoc2.ll | ||
2011-08-04-DebugLoc.ll | ||
2011-08-04-Metadata2.ll | ||
2011-08-04-Metadata.ll | ||
2011-08-18-unique-class-type2.ll | ||
2011-08-18-unique-class-type.ll | ||
2011-08-18-unique-debug-type2.ll | ||
2011-08-18-unique-debug-type.ll | ||
2011-08-22-ResolveAlias2.ll | ||
2011-08-22-ResolveAlias.ll | ||
alias.ll | ||
AppendingLinkage2.ll | ||
AppendingLinkage.ll | ||
available_externally_a.ll | ||
available_externally_b.ll | ||
basiclink.ll | ||
comdat2.ll | ||
comdat3.ll | ||
comdat4.ll | ||
comdat5.ll | ||
comdat6.ll | ||
comdat7.ll | ||
comdat8.ll | ||
comdat.ll | ||
ConstantGlobals1.ll | ||
ConstantGlobals2.ll | ||
ConstantGlobals3.ll | ||
constructor-comdat.ll | ||
datalayout.ll | ||
DbgDeclare2.ll | ||
DbgDeclare.ll | ||
debug-info-version-a.ll | ||
debug-info-version-b.ll | ||
dllstorage-a.ll | ||
dllstorage-b.ll | ||
func-attrs-a.ll | ||
func-attrs-b.ll | ||
global_ctors.ll | ||
inlineasm.ll | ||
link-global-to-func.ll | ||
link-messages.ll | ||
link-type-names.ll | ||
linkage.ll | ||
linkmdnode2.ll | ||
linkmdnode.ll | ||
linknamedmdnode2.ll | ||
linknamedmdnode.ll | ||
LinkOnce.ll | ||
metadata-a.ll | ||
metadata-b.ll | ||
module-flags-1-a.ll | ||
module-flags-1-b.ll | ||
module-flags-2-a.ll | ||
module-flags-2-b.ll | ||
module-flags-3-a.ll | ||
module-flags-3-b.ll | ||
module-flags-4-a.ll | ||
module-flags-4-b.ll | ||
module-flags-5-a.ll | ||
module-flags-5-b.ll | ||
module-flags-6-a.ll | ||
module-flags-6-b.ll | ||
module-flags-7-a.ll | ||
module-flags-7-b.ll | ||
module-flags-8-a.ll | ||
module-flags-8-b.ll | ||
multiple-merged-structs.ll | ||
partial-type-refinement-link.ll | ||
partial-type-refinement.ll | ||
PR8300.ll | ||
prefixdata.ll | ||
redefinition.ll | ||
targettriple.ll | ||
testlink1.ll | ||
testlink2.ll | ||
transitive-lazy-link.ll | ||
type-unique-inheritance.ll | ||
type-unique-odr-a.ll | ||
type-unique-odr-b.ll | ||
type-unique-simple2-a.ll | ||
type-unique-simple2-b.ll | ||
type-unique-simple2.ll | ||
type-unique-simple-a.ll | ||
type-unique-simple-b.ll | ||
type-unique-type-array-a.ll | ||
type-unique-type-array-b.ll | ||
unnamed-addr1-a.ll | ||
unnamed-addr1-b.ll | ||
unnamed-addr-err-a.ll | ||
unnamed-addr-err-b.ll | ||
visibility1.ll | ||
visibility2.ll | ||
weakextern.ll |