[llvm-dev] [llvm-bugs] [Bug 38714] [DebugInfo] [DWARF] [AArch64] .debug_loc entry missing in optimized build on aarch64
via llvm-dev
llvm-dev at lists.llvm.org
Mon Aug 27 05:12:14 PDT 2018
Either the register copy was introduced with no debug info, or the debug info got lost along the way.
My first thought would be to use –print-after-all (or however that's spelled) and look for the pass where the problem first appears. You could start with opt, to eliminate the IR passes, then use llc.
--paulr
From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Victor Leschuk via llvm-dev
Sent: Monday, August 27, 2018 5:44 AM
To: Robinson, Paul
Cc: LLVM Dev
Subject: Re: [llvm-dev] [llvm-bugs] [Bug 38714] [DebugInfo] [DWARF] [AArch64] .debug_loc entry missing in optimized build on aarch64
Including Paul and llvm-dev.
On 8/27/18 12:31 PM, Victor Leschuk wrote:
David, Adrian, could you please advise on this one?
On 8/27/18 12:24 PM, via llvm-bugs wrote:
Bug ID
38714<https://bugs.llvm.org/show_bug.cgi?id=38714>
Summary
[DebugInfo] [DWARF] [AArch64] .debug_loc entry missing in optimized build on aarch64
Product
new-bugs
Version
trunk
Hardware
PC
OS
Linux
Status
NEW
Severity
normal
Priority
P
Component
new bugs
Assignee
unassignedbugs at nondot.org<mailto:unassignedbugs at nondot.org>
Reporter
vleschuk at accesssoftek.com<mailto:vleschuk at accesssoftek.com>
CC
llvm-bugs at lists.llvm.org<mailto:llvm-bugs at lists.llvm.org>
Created attachment 20771<attachment.cgi?id=20771> [details]<attachment.cgi?id=20771&action=edit>
Source, object file and generated assembly.
When compiling the following sample with optimizations enabled (-O1 and higher)
it looks like a .debug_loc entry is missing for argc:
#include <stdio.h>
int main( int argc, char **argv )
{
for(int i = 1; i < argc; ++i) {
printf("Argument %d: %s\n", i, argv[i]);
}
return 0;
}
$ clang -target aarch64-unknown-linux -c -g -O1 -o test.o test.c
There are the following entries:
0x00000043: DW_TAG_formal_parameter [3]
DW_AT_location [DW_FORM_sec_offset] (0x00000000
[0x0000000000000000, 0x0000000000000034): DW_OP_reg0 W0)
DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d5] =
"argc")
0x00000052: DW_TAG_formal_parameter [3]
DW_AT_location [DW_FORM_sec_offset] (0x00000023
[0x0000000000000000, 0x0000000000000020): DW_OP_reg1 W1
[0x0000000000000020, 0x0000000000000048): DW_OP_reg19
W19)
DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000da] =
"argv")
The assembly for the code is the following:
//DEBUG_VALUE: main:argc <- $w0
//DEBUG_VALUE: main:argv <- $x1
.Ltmp0:
//DEBUG_VALUE: i <- 1
.loc 1 5 3 prologue_end // test.c:5:3
cmp w0, #2 // =2
b.lt .LBB0_3
.Ltmp1:
// %bb.1: // %for.body.preheader
//DEBUG_VALUE: main:argv <- $x1
//DEBUG_VALUE: main:argc <- $w0
.loc 1 0 3 is_stmt 0 // test.c:0:3
adrp x21, .L.str
mov x19, x1
.Ltmp2:
//DEBUG_VALUE: main:argv <- $x19
mov w22, w0
It looks like there should be two DW_OP_reg* records for w0 and for w22 for
argc.
Correct me if I am wrong.
PS x86 doesn't seem to have this problem.
________________________________
You are receiving this mail because:
* You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs at lists.llvm.org<mailto:llvm-bugs at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs
--
Best Regards,
Victor Leschuk | Software Engineer | Access Softek
--
Best Regards,
Victor Leschuk | Software Engineer | Access Softek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180827/86ed88d6/attachment.html>
More information about the llvm-dev
mailing list