[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