mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +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 |
||
---|---|---|
.. | ||
2006-12-11-Cast-ConstExpr.ll | ||
2009-06-11-FirstClassAggregateConstant.ll | ||
aggregateInstructions.3.2.ll | ||
aggregateInstructions.3.2.ll.bc | ||
arm32_neon_vcnt_upgrade.ll | ||
atomic.ll | ||
attributes-3.3.ll | ||
attributes-3.3.ll.bc | ||
attributes.ll | ||
binaryFloatInstructions.3.2.ll | ||
binaryFloatInstructions.3.2.ll.bc | ||
binaryIntInstructions.3.2.ll | ||
binaryIntInstructions.3.2.ll.bc | ||
bitwiseInstructions.3.2.ll | ||
bitwiseInstructions.3.2.ll.bc | ||
blockaddress.ll | ||
calling-conventions.3.2.ll | ||
calling-conventions.3.2.ll.bc | ||
case-ranges-3.3.ll | ||
case-ranges-3.3.ll.bc | ||
cmpxchg-upgrade.ll | ||
cmpxchg-upgrade.ll.bc | ||
conversionInstructions.3.2.ll | ||
conversionInstructions.3.2.ll.bc | ||
drop-debug-info.ll | ||
extractelement.ll | ||
flags.ll | ||
function-encoding-rel-operands.ll | ||
global-variables.3.2.ll | ||
global-variables.3.2.ll.bc | ||
inalloca.ll | ||
invalid.ll | ||
invalid.ll.bc | ||
linkage-types-3.2.ll | ||
linkage-types-3.2.ll.bc | ||
local-linkage-default-visibility.3.4.ll | ||
local-linkage-default-visibility.3.4.ll.bc | ||
memInstructions.3.2.ll | ||
memInstructions.3.2.ll.bc | ||
metadata-2.ll | ||
metadata.ll | ||
miscInstructions.3.2.ll | ||
miscInstructions.3.2.ll.bc | ||
null-type.ll | ||
null-type.ll.bc | ||
old-aliases.ll | ||
old-aliases.ll.bc | ||
pr18704.ll | ||
pr18704.ll.bc | ||
ptest-new.ll | ||
ptest-old.ll | ||
select.ll | ||
shuffle.ll | ||
ssse3_palignr.ll | ||
tailcall.ll | ||
terminatorInstructions.3.2.ll | ||
terminatorInstructions.3.2.ll.bc | ||
upgrade-global-ctors.ll | ||
upgrade-global-ctors.ll.bc | ||
upgrade-loop-metadata.ll | ||
upgrade-loop-metadata.ll.bc | ||
upgrade-tbaa.ll | ||
use-list-order.ll | ||
variableArgumentIntrinsic.3.2.ll | ||
variableArgumentIntrinsic.3.2.ll.bc | ||
vectorInstructions.3.2.ll | ||
vectorInstructions.3.2.ll.bc | ||
visibility-styles.3.2.ll | ||
visibility-styles.3.2.ll.bc | ||
weak-cmpxchg-upgrade.ll | ||
weak-cmpxchg-upgrade.ll.bc |