Björn Pettersson A via llvm-dev
2018-Jun-21 16:28 UTC
[llvm-dev] [RFC] Removing debug locations from ConstantSDNodes
Isn't this a typcial situation when the is_stmt field in the DWARF line table should be used? If we set is_stmt=0 for the instruction loading the constant, then a debugger can choose not to stop on that instruction when doing "step" on source level. That way we can keep the original source location for a ConstantSDNode, but also telling the debugger that this isn't a recommended breakpoint location for that line. Using is_stmt=0 is ofcourse only interesting if the constant load I hoisted so that it isn't adjacent to other is_stmt=1 instructions on the same line. /Björn From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of via llvm-dev Sent: den 21 juni 2018 15:08 To: mbraun at apple.com Cc: llvm-dev at lists.llvm.org; davidxl at google.com; jbogner at apple.com Subject: Re: [llvm-dev] [RFC] Removing debug locations from ConstantSDNodes mbraun at apple.com<mailto:mbraun at apple.com> wrote: FWIW: Debug information on constants feels odd to me. They are just values not something that is executed so conceptually I would not expect them to "happen" at a specific time/place in the program. That said most numbers are copied into registers or stored into memory and that is of course an interesting action. So in the original example I would hope to see debug info on whatever instructions are used to fill the array with values. +1. Constants are not inherently interesting, but loading one as an action preparatory to computing a value or setting up a parameter in a call, the instruction ought to be associated with the relevant source statement. --paulr -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180621/2c2cbf24/attachment.html>
via llvm-dev
2018-Jun-21 16:57 UTC
[llvm-dev] [RFC] Removing debug locations from ConstantSDNodes
Which brings up yet another big pain point: We don't carry an is_stmt annotation around on instructions, we just always set is_stmt=1 on the first instruction with a source location different from the previous one, without regard to whether it's an "interesting" place to stop. --paulr From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Björn Pettersson A via llvm-dev Sent: Thursday, June 21, 2018 12:28 PM To: llvm-dev at lists.llvm.org Cc: davidxl at google.com; jbogner at apple.com Subject: Re: [llvm-dev] [RFC] Removing debug locations from ConstantSDNodes Isn't this a typcial situation when the is_stmt field in the DWARF line table should be used? If we set is_stmt=0 for the instruction loading the constant, then a debugger can choose not to stop on that instruction when doing "step" on source level. That way we can keep the original source location for a ConstantSDNode, but also telling the debugger that this isn't a recommended breakpoint location for that line. Using is_stmt=0 is ofcourse only interesting if the constant load I hoisted so that it isn't adjacent to other is_stmt=1 instructions on the same line. /Björn From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of via llvm-dev Sent: den 21 juni 2018 15:08 To: mbraun at apple.com Cc: llvm-dev at lists.llvm.org; davidxl at google.com; jbogner at apple.com Subject: Re: [llvm-dev] [RFC] Removing debug locations from ConstantSDNodes mbraun at apple.com<mailto:mbraun at apple.com> wrote: FWIW: Debug information on constants feels odd to me. They are just values not something that is executed so conceptually I would not expect them to "happen" at a specific time/place in the program. That said most numbers are copied into registers or stored into memory and that is of course an interesting action. So in the original example I would hope to see debug info on whatever instructions are used to fill the array with values. +1. Constants are not inherently interesting, but loading one as an action preparatory to computing a value or setting up a parameter in a call, the instruction ought to be associated with the relevant source statement. --paulr -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180621/2da84cf3/attachment.html>
Eric Christopher via llvm-dev
2018-Jun-21 18:51 UTC
[llvm-dev] [RFC] Removing debug locations from ConstantSDNodes
Yes, this is quite the annoying thing, but consumers are... inconsistent with how they're using it. I believe I recall a case wehere a debugger would refuse to stop on lines that didn't have is_stmt on them at all. -eric On Thu, Jun 21, 2018 at 9:57 AM via llvm-dev <llvm-dev at lists.llvm.org> wrote:> Which brings up yet another big pain point: We don't carry an is_stmt > annotation around on instructions, we just always set is_stmt=1 on the > first instruction with a source location different from the previous one, > without regard to whether it's an "interesting" place to stop. > > --paulr > > > > *From:* llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of *Björn > Pettersson A via llvm-dev > *Sent:* Thursday, June 21, 2018 12:28 PM > *To:* llvm-dev at lists.llvm.org > *Cc:* davidxl at google.com; jbogner at apple.com > > > *Subject:* Re: [llvm-dev] [RFC] Removing debug locations from > ConstantSDNodes > > > > Isn’t this a typcial situation when the is_stmt field in the DWARF line > table should be used? > > > > If we set is_stmt=0 for the instruction loading the constant, then a > debugger can choose not to stop on that instruction when doing “step” on > source level. That way we can keep the original source location for a > ConstantSDNode, but also telling the debugger that this isn’t a recommended > breakpoint location for that line. Using is_stmt=0 is ofcourse only > interesting if the constant load I hoisted so that it isn’t adjacent to > other is_stmt=1 instructions on the same line. > > > > /Björn > > > > *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> *On Behalf Of *via > llvm-dev > *Sent:* den 21 juni 2018 15:08 > *To:* mbraun at apple.com > *Cc:* llvm-dev at lists.llvm.org; davidxl at google.com; jbogner at apple.com > *Subject:* Re: [llvm-dev] [RFC] Removing debug locations from > ConstantSDNodes > > > > mbraun at apple.com wrote: > > > > FWIW: Debug information on constants feels odd to me. They are just values > not something that is executed so conceptually I would not expect them to > "happen" at a specific time/place in the program. That said most numbers > are copied into registers or stored into memory and that is of course an > interesting action. So in the original example I would hope to see debug > info on whatever instructions are used to fill the array with values. > > > > +1. Constants are not inherently interesting, but loading one as an > action preparatory to computing a value or setting up a parameter in a > call, the instruction ought to be associated with the relevant source > statement. > > --paulr > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180621/f786a92d/attachment.html>