[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