[llvm-bugs] [Bug 43373] New: Block is missing entry value DBG_VALUE
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Sep 20 02:27:30 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=43373
Bug ID: 43373
Summary: Block is missing entry value DBG_VALUE
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: DebugInfo
Assignee: unassignedbugs at nondot.org
Reporter: david.stenberg at ericsson.com
CC: jdevlieghere at apple.com, keith.walker at arm.com,
llvm-bugs at lists.llvm.org,
paul_robinson at playstation.sony.com
Reproduced using r372374.
Compiling the following test case:
extern void bar(int);
extern void baz(void);
int foo(int p) {
if (p)
bar(1);
baz();
return 0;
}
using:
clang -O1 -g -Xclang -femit-debug-entry-values
gives the following disassembled output:
0000000000000000 foo:
0: 50 pushq %rax
1: 85 ff testl %edi, %edi
3: 74 0a je 10 <foo+0xf>
5: bf 01 00 00 00 movl $1, %edi
a: e8 00 00 00 00 callq 0 <foo+0xf>
f: e8 00 00 00 00 callq 0 <foo+0x14>
14: 31 c0 xorl %eax, %eax
16: 59 popq %rcx
17: c3 retq
and the following location list for the parameter:
DW_AT_location (0x00000000
[0x0000000000000000, 0x000000000000000a): DW_OP_reg5 RDI
[0x000000000000000a, 0x000000000000000f): DW_OP_GNU_entry_value(DW_OP_reg5
RDI), DW_OP_stack_value)
As seen, the entry value ends before the second call to foo (at 0xf). As the
parameter is not modified, I'd except entry value locations being present for
the rest of the function.
This is how it looks after LiveDebugValues:
bb.0.entry:
successors: %bb.2(0x30000000), %bb.1(0x50000000)
liveins: $edi
DBG_VALUE $edi, $noreg, !19, !DIExpression(), debug-location !20
DBG_VALUE $edi, $noreg, !19, !DIExpression(), debug-location !20
frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
CFI_INSTRUCTION def_cfa_offset 16
TEST32rr killed renamable $edi, renamable $edi, implicit-def $eflags,
debug-location !21
JCC_1 %bb.2, 4, implicit $eflags, debug-location !23
bb.1.if.then:
successors: %bb.2(0x80000000)
DBG_VALUE $edi, $noreg, !19, !DIExpression(), debug-location !20
$edi = MOV32ri 1, debug-location !24
DBG_VALUE $edi, $noreg, !19, !DIExpression(DW_OP_LLVM_entry_value, 1),
debug-location !20
CALL64pcrel32 @bar, csr_64, implicit $rsp, implicit $ssp, implicit $edi,
implicit-def $rsp, implicit-def $ssp, debug-location !24
bb.2.if.end:
CALL64pcrel32 @baz, csr_64, implicit $rsp, implicit $ssp, implicit-def
$rsp, implicit-def $ssp, debug-location !25
$eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags,
debug-location !26
$rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp,
debug-location !26
CFI_INSTRUCTION def_cfa_offset 8, debug-location !26
RETQ killed $eax, debug-location !26
It seems that an entry value DBG_VALUE is not propagated to bb.2.if.end?
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190920/9815574a/attachment-0001.html>
More information about the llvm-bugs
mailing list