[llvm-bugs] [Bug 50285] New: [DebugInfo at O2] Poor coverage for frame index variable locations
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon May 10 02:10:39 PDT 2021
https://bugs.llvm.org/show_bug.cgi?id=50285
Bug ID: 50285
Summary: [DebugInfo at O2] Poor coverage for frame index variable
locations
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Common Code Generator Code
Assignee: unassignedbugs at nondot.org
Reporter: orlando.hyams at sony.com
CC: llvm-bugs at lists.llvm.org
In the reproducer below, the variable 'local' has no location around the call
to 'ext' when built with "-O2 -g -c" (targeting x86_64-unknown-linux-gnu):
clang built at 71597d40e878.
$ cat test.cpp
void ext(int, int, int, int, int, int, int, int, int, int);
void escape(int*);
int example() {
int local = 0;
escape(&local);
ext(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
local += 2;
return local;
}
$ clang -O2 -g -c test.cpp -o test.o
$ llvm-objdump -d test.o
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <_Z7examplev>:
0: 50 pushq %rax
1: c7 44 24 04 00 00 00 00 movl $0, 4(%rsp)
9: 48 8d 7c 24 04 leaq 4(%rsp), %rdi
e: e8 00 00 00 00 callq 0x13 <_Z7examplev+0x13>
13: 31 ff xorl %edi, %edi
15: be 01 00 00 00 movl $1, %esi
1a: ba 02 00 00 00 movl $2, %edx
1f: b9 03 00 00 00 movl $3, %ecx
24: 41 b8 04 00 00 00 movl $4, %r8d
2a: 41 b9 05 00 00 00 movl $5, %r9d
30: 6a 09 pushq $9
32: 6a 08 pushq $8
34: 6a 07 pushq $7
36: 6a 06 pushq $6
38: e8 00 00 00 00 callq 0x3d <_Z7examplev+0x3d>
3d: 48 83 c4 20 addq $32, %rsp
41: 8b 44 24 04 movl 4(%rsp), %eax
45: 83 c0 02 addl $2, %eax
48: 59 popq %rcx
49: c3 retq
$ llvm-dwarfdump test.o --name local
test.o: file format elf64-x86-64
0x00000047: DW_TAG_variable
DW_AT_location (0x00000000:
[0x0000000000000001, 0x0000000000000009): DW_OP_consts +0,
DW_OP_stack_value
[0x0000000000000009, 0x0000000000000032): DW_OP_breg7 RSP+4
[0x0000000000000045, 0x000000000000004a): DW_OP_reg0 RAX)
DW_AT_name ("local")
DW_AT_decl_file ("test.cpp")
DW_AT_decl_line (4)
The variable 'local' is not given a location over the interval [32, 45) even
though its stack home is still valid here (RSP+8, RSP+12, ...).
--
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/20210510/7b8ca80e/attachment.html>
More information about the llvm-bugs
mailing list