[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