[PATCH] D66895: [DebugInfo] LiveDebugValues: correctly discriminate between kinds of variable locations
Jeremy Morse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 28 10:09:02 PDT 2019
jmorse created this revision.
jmorse added reviewers: aprantl, vsk, wolfgangp.
Herald added subscribers: llvm-commits, javed.absar.
Herald added a project: LLVM.
jmorse added a parent revision: D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.
The missing line added by this patch ensures that only spilt variable locations are candidates for being restored from the stack. Otherwise, register or constant-value information can be interpreted as a spill location, through a union.
The added regression test replicates a scenario where this occurs: the stack load from [rsp] causes the register-location DBG_VALUE to be "restored" to rsi, when it should be left alone. See PR43058 for details.
Un x-fail a test that was suffering from this from a previous patch.
This causes a clang-3.4 build to gain 2% more scope-covered bytes, because the scenario in the regression test was interfering with stack variable locations created by LiveDebugVariables.
Repository:
rL LLVM
https://reviews.llvm.org/D66895
Files:
lib/CodeGen/LiveDebugValues.cpp
test/CodeGen/ARM/debug-info-blocks.ll
test/DebugInfo/MIR/X86/live-debug-values-restore-collide.mir
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66895.217678.patch
Type: text/x-patch
Size: 4763 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190828/4e347d35/attachment.bin>
More information about the llvm-commits
mailing list