[DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations
authorJeremy Morse <jeremy.morse.llvm@gmail.com>
Mon, 2 Sep 2019 12:28:36 +0000 (12:28 +0000)
committerJeremy Morse <jeremy.morse.llvm@gmail.com>
Mon, 2 Sep 2019 12:28:36 +0000 (12:28 +0000)
commit22493f66f168cf3cf8512e42b4ffb32f3f30b949
treed1bbcfeebaf3ab31989303cfba7f3cbf2c4d764f
parent9bc338b89ec02cdb87d54ef9d431544c52b7774a
[DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations

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.

Differential Revision: https://reviews.llvm.org/D66895

llvm-svn: 370648
llvm/include/llvm/CodeGen/MachineInstr.h
llvm/lib/CodeGen/MachineCSE.cpp
llvm/lib/CodeGen/MachineInstr.cpp
llvm/test/DebugInfo/MIR/X86/machine-cse.mir [new file with mode: 0644]