diff options
author | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2018-07-03 11:29:00 +0000 |
---|---|---|
committer | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2018-07-03 11:29:00 +0000 |
commit | 8dd6cf711f75f296cdeae2be7c6760b29cc68f57 (patch) | |
tree | a1e3029820549696b5c0108370d8382bbc1e0dac /lldb/packages/Python/lldbsuite/test/python_api/target | |
parent | fd171f2f893d0bf1e7d2af0200c31a7df32b2553 (diff) | |
download | bcm5719-llvm-8dd6cf711f75f296cdeae2be7c6760b29cc68f57.tar.gz bcm5719-llvm-8dd6cf711f75f296cdeae2be7c6760b29cc68f57.zip |
[DebugInfo] Corrections for salvageDebugInfo
Summary:
When salvaging a dbg.declare/dbg.addr we should not add
DW_OP_stack_value to the DIExpression
(see test/Transforms/InstCombine/salvage-dbg-declare.ll).
Consider this example
%vla = alloca i32, i64 2
call void @llvm.dbg.declare(metadata i32* %vla, metadata !1, metadata !DIExpression())
Instcombine will turn it into
%vla1 = alloca [2 x i32]
%vla1.sub = getelementptr inbounds [2 x i32], [2 x i32]* %vla, i64 0, i64 0
call void @llvm.dbg.declare(metadata [2 x i32]* %vla1.sub, metadata !19, metadata !DIExpression())
If the GEP can be eliminated, then the dbg.declare will be salvaged
and we should get
%vla1 = alloca [2 x i32]
call void @llvm.dbg.declare(metadata [2 x i32]* %vla1, metadata !19, metadata !DIExpression())
The problem was that salvageDebugInfo did not recognize dbg.declare
as being indirect (%vla1 points to the value, it does not hold the
value), so we incorrectly got
call void @llvm.dbg.declare(metadata [2 x i32]* %vla1, metadata !19, metadata !DIExpression(DW_OP_stack_value))
I also made sure that llvm::salvageDebugInfo and
DIExpression::prependOpcodes do not add DW_OP_stack_value to
the DIExpression in case no new operands are added to the
DIExpression. That way we avoid to, unneccessarily, turn a
register location expression into an implicit location expression
in some situations (see test11 in test/Transforms/LICM/sinking.ll).
Reviewers: aprantl, vsk
Reviewed By: aprantl, vsk
Subscribers: JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D48837
llvm-svn: 336191
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/target')
0 files changed, 0 insertions, 0 deletions