mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
5c2785ddb8
This is a follow up to 22a52dfddcefad4f275eb8ad1cc0e200074c2d8a and a revert of df763188c9a1ecb1e7e5c4d4ea53a99fbb755903. With this change, we only skip cloning distinct nodes in MDNodeMapper::mapDistinct if RF_ReuseAndMutateDistinctMDs, dropping the no-longer-needed local helper `cloneOrBuildODR()`. Skipping cloning in other cases is unsound and breaks CloneModule, which is why the textual IR for PR48841 didn't pass previously. This commit adds the test as: Transforms/ThinLTOBitcodeWriter/cfi-debug-info-cloned-type-references-global-value.ll Cloning less often exposed a hole in subprogram cloning in CloneFunctionInto thanks to df763188c9a1ecb1e7e5c4d4ea53a99fbb755903's test ThinLTO/X86/Inputs/dicompositetype-unique-alias.ll. If a function has a subprogram attachment whose scope is a DICompositeType that shouldn't be cloned, but it has no internal debug info pointing at that type, that composite type was being cloned. This commit plugs that hole, calling DebugInfoFinder::processSubprogram from CloneFunctionInto. As hinted at in 22a52dfddcefad4f275eb8ad1cc0e200074c2d8a's commit message, I think we need to formalize ownership of metadata a bit more so that ValueMapper/CloneFunctionInto (and similar functions) can deal with cloning (or not) metadata in a more generic, less fragile way. This fixes PR48841. Differential Revision: https://reviews.llvm.org/D96734 |
||
---|---|---|
.. | ||
x86 | ||
associated.ll | ||
cfi-debug-info-cloned-type-references-global-value.ll | ||
cfi-functions-canonical-jump-tables.ll | ||
circular-reference.ll | ||
comdat.ll | ||
filter-alias.ll | ||
function-alias.ll | ||
new-pm.ll | ||
no-type-md.ll | ||
pr33536.ll | ||
split-dsolocal.ll | ||
split-internal1.ll | ||
split-internal2.ll | ||
split-internal-typeid.ll | ||
split-used.ll | ||
split-vfunc-internal.ll | ||
split-vfunc.ll | ||
split.ll | ||
symver.ll | ||
unsplittable.ll |