[llvm-dev] debug info "ref" parameter

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Thu Dec 22 10:02:34 PST 2016


if you could simplify it down a bit, that might be helpful - not sure
there's a lot to be gained - I imagine it is just a quirk of how we handle
these things in the backend to make normal debug info work, but there might
be some things to be done to help.

On Wed, Dec 21, 2016 at 2:31 PM Carlo Kok <ck at remobjects.com> wrote:

> https://gist.github.com/carlokok/77010598f81e8167592e593ec6c715a1
>
> If needed I can strip it down more tomorrow, but only elements entry point
> and the two meh methods are used.
>
>
> On December 21, 2016 8:27:12 PM GMT+01:00, David Blaikie <
> dblaikie at gmail.com> wrote:
>
> Could you provide the complete example (with all the necessary metadata to
> reproduce)?
>
> Possible LLVM has a special case for arguments, I'm not sure/don't recall
> off hand, but can poke around at it & see if there's a reasonable logic to
> it.
>
> On Tue, Dec 20, 2016 at 10:43 PM Carlo Kok via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> I want to emit a ref parameter (ie i32*) as if it was i32 in debug info,
> however when I emit it with llvm.debug.declare referring to the
> parameter register it shows the actual pointer value of the debug
> register, instead of the value it refers to. This works fine if the
> llvm.debug.declare points to a local alloca, how can this be and how can
> I make it work so both show the integer value directly?
>
> define void @test1(i32) #0 !dbg !5 {
> BasicBlock0:
>    %1 = alloca i32
>    store i32 %0, i32* %1
>    call void @llvm.dbg.declare(metadata i32* %1, metadata !20, metadata
> !22), !dbg !23
> // This one is fine
>    %2 = load i32, i32* %1, !dbg !24
>    %3 = add i32 %2, 1, !dbg !24
>    store i32 %3, i32* %1, !dbg !24
>    ret void, !dbg !25
> }
>
> define void @ms_t1a_issuedebugouttest.__Global4_MEH2n_o_i32(i32*) #0
> !dbg !9 {
> BasicBlock3:
>    call void @llvm.dbg.declare(metadata i32* %0, metadata !26, metadata
> !22), !dbg !28
>    %1 = load i32, i32* %0, !dbg !29
>    %2 = add i32 %1, 1, !dbg !29
>    store i32 %2, i32* %0, !dbg !29
>    ret void, !dbg !30
> }
>
> !22 = !DIExpression()
>
> !20 = !DILocalVariable(name: "i", scope: !21, file: !6, line: 11, type:
> !13)
> !26 = !DILocalVariable(name: "i", scope: !27, file: !6, line: 15, type:
> !13)
>
>
> !13 = !DIDerivedType(tag: DW_TAG_typedef, name: "Integer", scope: !2,
> file: !3, baseType: !14)
> !14 = !DIBasicType(name: "Integer", size: 32, align: 32, encoding:
> DW_ATE_signed)
>
> --
> Carlo Kok
> RemObjects Software
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
> --
> Sent from my Android device with K-9 Mail. Please excuse my brevity.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161222/72cdd1d9/attachment.html>


More information about the llvm-dev mailing list