aboutsummaryrefslogtreecommitdiff
path: root/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
diff options
context:
space:
mode:
authorJeremy Morse <jeremy.morse@sony.com>2021-11-29 23:09:05 +0000
committerJeremy Morse <jeremy.morse@sony.com>2021-11-29 23:37:20 +0000
commit0eee844539e406dfa8010a129ea3655d2298ac10 (patch)
tree51cc6c5d21a24b00b01a9909448355ff88c3e045 /clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp
parent45ecfed6c636d06f76bca0a44803e945cdae9506 (diff)
downloadllvm-0eee844539e406dfa8010a129ea3655d2298ac10.zip
llvm-0eee844539e406dfa8010a129ea3655d2298ac10.tar.gz
llvm-0eee844539e406dfa8010a129ea3655d2298ac10.tar.bz2
[DebugInfo][InstrRef] Terminate overlapping variable fragments
If we have a variable where its fragments are split into overlapping segments: DBG_VALUE $ax, $noreg, !123, !DIExpression(DW_OP_LLVM_fragment_0, 16) ... DBG_VALUE $eax, $noreg, !123, !DIExpression(DW_OP_LLVM_fragment_0, 32) we should only propagate the most recently assigned fragment out of a block. LiveDebugValues only deals with live-in variable locations, as overlaps within blocks is DbgEntityHistoryCalculators domain. InstrRefBasedLDV has kept the accumulateFragmentMap method from VarLocBasedLDV, we just need it to recognise DBG_INSTR_REFs. Once it's produced a mapping of variable / fragments to the overlapped variable / fragments, VLocTracker uses it to identify when a debug instruction needs to terminate the other parts it overlaps with. The test is updated for some standard "InstrRef picks different registers" variation, and the order of some unrelated DBG_VALUEs changes. Differential Revision: https://reviews.llvm.org/D114603
Diffstat (limited to 'clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp')
0 files changed, 0 insertions, 0 deletions