diff options
author | Jeremy Morse <jeremy.morse@sony.com> | 2019-12-05 15:03:33 +0000 |
---|---|---|
committer | Jeremy Morse <jmorse+git@studentrobotics.org> | 2019-12-05 15:52:20 +0000 |
commit | e4cdd6263175f7289cfb61608944892d8c76b6ff (patch) | |
tree | e86dbb86d1583dc6f37645f17fa176c5bc5b6cd2 /lldb/packages/Python/lldbsuite/test/python_api | |
parent | fca41001963cb473182c7b3b665ea1f03f94203a (diff) | |
download | bcm5719-llvm-e4cdd6263175f7289cfb61608944892d8c76b6ff.tar.gz bcm5719-llvm-e4cdd6263175f7289cfb61608944892d8c76b6ff.zip |
[DebugInfo] Don't reorder DBG_VALUEs when sunk
Fix part of PR43855, resolving a problem that comes from the reapplication
in 001574938e5. If we have two DBG_VALUE insts in a block that specify
the location of the same variable, for example:
%0 = someinst
DBG_VALUE %0, !123, !DIExpression()
%1 = anotherinst
DBG_VALUE %1, !123, !DIExpression()
if %0 were to sink, the corresponding DBG_VALUE would sink too, past the
next DBG_VALUE, effectively re-ordering assignments. To fix this, I've
added a SeenDbgVars set recording what variable locations have been seen in
a block already (working bottom up), and now flag DBG_VALUEs that would
pass a later DBG_VALUE for the same variable.
NB, this only works for repeated DBG_VALUEs in the same basic block, the
general case involving control flow is much harder, which I've written
up in PR44117.
Differential revision: https://reviews.llvm.org/D70672
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api')
0 files changed, 0 insertions, 0 deletions