[llvm-dev] [llvm-bugs] [Bug 38714] [DebugInfo] [DWARF] [AArch64] .debug_loc entry missing in optimized build on aarch64
Victor Leschuk via llvm-dev
llvm-dev at lists.llvm.org
Mon Aug 27 02:43:41 PDT 2018
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
>> Reporter vleschuk at accesssoftek.com
>> CC llvm-bugs at lists.llvm.org
>>
>> Createdattachment 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
>> 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/da753c9d/attachment.html>
More information about the llvm-dev
mailing list