[LLVMdev] Debug information for outlined routine

Robinson, Paul Paul_Robinson at playstation.sony.com
Mon Jan 27 11:53:17 PST 2014

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.)

I've never looked at OpenMP, can't speak to that at all.

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.


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140127/eb592cb3/attachment.html>

More information about the llvm-dev mailing list