forked from OSchip/llvm-project
33b192d72b
Summary: This fixes PR39710. In that case we emitted a location list looking like this: .Ldebug_loc0: .quad .Lfunc_begin0-.Lfunc_begin0 .quad .Lfunc_begin0-.Lfunc_begin0 .short 1 # Loc expr size .byte 85 # DW_OP_reg5 .quad .Lfunc_begin0-.Lfunc_begin0 .quad .Lfunc_end0-.Lfunc_begin0 .short 1 # Loc expr size .byte 85 # super-register DW_OP_reg5 .quad 0 .quad 0 As seen, the first entry's beginning and ending addresses evalute to 0, which meant that the entry inadvertently became an "end of list" entry, resulting in the location list ending sooner than expected. To fix this, omit all entries with empty ranges. Location list entries with empty ranges do not have any effect, as specified by DWARF, so we might as well drop them: "A location list entry (but not a base address selection or end of list entry) whose beginning and ending addresses are equal has no effect because the size of the range covered by such an entry is zero." Reviewers: davide, aprantl, dblaikie Reviewed By: aprantl Subscribers: javed.absar, JDevlieghere, llvm-commits Tags: #debug-info Differential Revision: https://reviews.llvm.org/D55919 llvm-svn: 350698 |
||
---|---|---|
.. | ||
PR16736.ll | ||
PR26163.ll | ||
big-endian-bitfield.ll | ||
big-endian-dump.ll | ||
bitfield.ll | ||
cfi-eof-prologue.mir | ||
constant-dbgloc.ll | ||
float-args.ll | ||
header.ll | ||
illegal-fragment.ll | ||
line.test | ||
lit.local.cfg | ||
little-endian-dump.ll | ||
lowerbdgdeclare_vla.ll | ||
multiple-constant-uses-drops-dbgloc.ll | ||
partial-subreg.ll | ||
processes-relocations.ll | ||
prologue_end.ll | ||
s-super-register.ll | ||
salvage-debug-info.ll | ||
sdag-split-arg.ll | ||
sdag-split-arg1.ll | ||
selectiondag-deadcode.ll | ||
single-constant-use-preserves-dbgloc.ll | ||
split-complex.ll | ||
sroa-complex.ll | ||
tls.ll |