[LLVMdev] Debug information for outlined routine
Eric Christopher
echristo at gmail.com
Mon Jan 27 13:29:06 PST 2014
On Mon, Jan 27, 2014 at 11:53 AM, Robinson, Paul
<Paul_Robinson at playstation.sony.com> wrote:
> Speaking solely about the DWARF part of the question, DWARF has no explicit
> outlining support. If I had to do this, and the outlining process can be
> modeled reasonably as replacing a chunk of source text in the original
> function with a call, then I’d mark the outlined function as artificial and
> use the original source lines as the source location for the code in the
> outlined function. My guess is that would be least likely to confuse a
> debugger. (It might confuse the user though, if you’re stepping through the
> caller and your step command defaults to step-over.)
>
Again more in the "the debugger should possibly notice this case", but
in general I agree. General outlining could be done via an extension
mechanism since you may want to outline a loop out of multiple
functions for some code uniquing, but you'd probably want to piggy
back on the call site information to make the final determination for
line/etc to show in that case.
*shrug* Commoning of code makes debug info precision hard.
-eric
>
>
> I’ve never looked at OpenMP, can’t speak to that at all.
>
> --paulr
>
>
>
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
> Behalf Of sebastien deldon (PGI)
> Sent: Monday, January 27, 2014 8:57 AM
> To: David Blaikie; Hal Finkel
> Cc: llvmdev
>
>
> Subject: Re: [LLVMdev] Debug information for outlined routine
>
>
>
> Yes I agree with David, I don’t think we can draw analogy between lambda and
> outlined routines.
>
>
>
> Seb
>
>
>
> From: David Blaikie [mailto:dblaikie at gmail.com]
> Sent: Monday, January 27, 2014 5:51 PM
> To: Hal Finkel
> Cc: llvmdev; sebastien deldon (PGI); Eric Christopher
> Subject: Re: [LLVMdev] Debug information for outlined routine
>
>
>
>> Given that LLVM has no current support for outlining I don't think
>> we've addressed the issue of how to represent that in LLVM's IR
>> metadata (indeed I don't even know off-hand how DWARF handles this).
>>
>>
>>
>
> How do we do this for C++ lambdas and friends?
>
>
>
> Given that lambdas are separate functions (standard "operator()" member
> functions of some unnameable type (but we have a name for the purposes of
> mangling and debugging ("<lambda:foo.cpp:32>" or something like that, if I
> recall correctly))) and the lines of that function just happen to be nested
> within the lines of some other function (but debug info doesn't really care
> that the outer function has a non-contiguous range of lines anymore than if
> you had a bunch of blank lines in your function)
>
> So we can't really draw analogy from there to help with outlining, I don't
> think.
>
> ________________________________
>
> This email message is for the sole use of the intended recipient(s) and may
> contain confidential information. Any unauthorized review, use, disclosure
> or distribution is prohibited. If you are not the intended recipient,
> please contact the sender by reply email and destroy all copies of the
> original message.
>
> ________________________________
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
More information about the llvm-dev
mailing list