<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Jun 18, 2018 at 9:54 AM <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> Greg wrote:<br>
> > Pavel wrote:<br>
> > That said, having DWARF be able to represent the template member<br>
> > functions in an abstract way also sounds like nice thing to have from<br>
> > a debug info format.<br>
> <br>
> Yes, that would be great, but will require DWARF changes and is much more<br>
> long term.<br>
<br>
I'm curious what utility this has, other than tidying up the Clang AST<br>
interface part (because you know what templates exist inside the class).<br>
I mean, you can't instantiate new functions; and if you're trying to<br>
call an existing instance, you have to go find it anyway, in whichever<br>
CU it happens to have been instantiated.<br></blockquote><div><br>A couple of questionable reasons:<br><br>1) name/overload resolution - having the names of functions you can't call (because they've been inlined away, never instantiated, etc) means that if a debugger is evaluating an expression it won't accidentally resolve a call to a different function from the one that would've been used in the source language. (eg: a class with foo(int) and foo(T) - if you call foo(true) - but the debugger doesn't know any foo(T) exists, so it calls foo(int), which could be varying degrees of unfortunate)<br><br>This could happen for any function though, and it'd certainly be impractical to include all function declarations (especially for non-members), all types, etc, to ensure that all names are available to validate any ambiguities, etc.<br><br>2) Possible that there are libraries linked in that themselves don't have debug info - but include specializations of a template (or definitions of any declared function, really) - so having the debug info could be used to know about those functions (given at least Itanium mangling, though - I'm not sure the debug info would be necessary, maybe looking at the mangled name would be sufficient for a debugger to know "oh, this function is a member of this class and has these parameter types" - hmm, guess it wouldn't know the return type without debug info, perhaps)<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Feel free to start a new thread if this is straying too far from the<br>
discussion that already strayed from the original topic. :-)<br>
Thanks,<br>
--paulr<br>
<br>
</blockquote></div></div>