sebastien deldon (PGI)
2014-Jan-27 16:56 UTC
[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. ----------------------------------------------------------------------------------- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140127/1ad143e6/attachment.html>
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. --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. ________________________________ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140127/eb592cb3/attachment.html>
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 >