aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/DFAPacketizer.cpp
diff options
context:
space:
mode:
authorJeremy Morse <jeremy.morse.llvm@gmail.com>2019-09-06 10:08:22 +0000
committerJeremy Morse <jeremy.morse.llvm@gmail.com>2019-09-06 10:08:22 +0000
commit5d9cd3b4ca457e55c3c21094cfea5e49dddef36c (patch)
tree440c87fdc635bfd32c4078c580dbbd9912497acc /llvm/lib/CodeGen/DFAPacketizer.cpp
parent6c0204c794ba143ce6817f695e03fd9f49cd4ed8 (diff)
downloadllvm-5d9cd3b4ca457e55c3c21094cfea5e49dddef36c.zip
llvm-5d9cd3b4ca457e55c3c21094cfea5e49dddef36c.tar.gz
llvm-5d9cd3b4ca457e55c3c21094cfea5e49dddef36c.tar.bz2
[DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations
If a stack spill location is overwritten by another spill instruction, any variable locations pointing at that slot should be terminated. We cannot rely on spills always being restored to registers or variable locations being moved by a DBG_VALUE: the register allocator is entitled to spill a value and then forget about it when it goes out of liveness. To address this, scan for memory writes to spill locations, even those we don't consider to be normal "spills". isSpillInstruction and isLocationSpill distinguish the two now. After identifying spill overwrites, terminate the open range, and insert a $noreg DBG_VALUE for that variable. Differential Revision: https://reviews.llvm.org/D66941 llvm-svn: 371193
Diffstat (limited to 'llvm/lib/CodeGen/DFAPacketizer.cpp')
0 files changed, 0 insertions, 0 deletions