<div dir="ltr">Seems fair (though I feel like/wish, perhaps there should be an implicit type parameter in cases like this, but ah well).<br><br>I still think the idea that DWARF producers should create names that match exactly some specific demangler's pretty printing is problematic... but in this case there's clearly information loss that needs to be addressed.<br><br><div class="gmail_quote"><div dir="ltr">On Sat, Feb 3, 2018 at 12:38 AM Roman Popov via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div>I've noticed that Clang does not emits type suffixes to debug info,<div>so types foo<1u> and foo<1> will be both saved to debug info as foo<1>. </div><div><br></div><div>Unfortunately this leaves no chance to debugger to correctly identify dynamic type. Consider example:</div></div><div><br></div><div><div><font face="monospace, monospace">struct base {</font></div><div><font face="monospace, monospace">    virtual ~base() {}</font></div><div><font face="monospace, monospace">};</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">template< auto IVAL></font></div><div><font face="monospace, monospace">struct foo : base {</font></div><div><font face="monospace, monospace">    decltype(IVAL) x = -IVAL;</font></div><div><font face="monospace, monospace">};</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">int main()</font></div><div><font face="monospace, monospace">{</font></div><div><font face="monospace, monospace">    base * fi = new foo<10>();</font></div><div><font face="monospace, monospace">    base * fu = new foo<10u>();</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">//  BREAKPOINT HERE:</font></div><div><font face="monospace, monospace">    return 0;</font></div><div><font face="monospace, monospace">}</font></div></div><div><font face="monospace, monospace"><br></font></div><div><br></div><div><font face="arial, helvetica, sans-serif">Running in GDB:</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><div><font face="monospace, monospace">(gdb) p *fi</font></div><div><font face="monospace, monospace">$1 = (foo<10>) {<base> = {_vptr$base = 0x4009d8 <vtable for foo<10>+16>}, <b>x = 4294967286</b>}</font></div><div style="font-family:monospace,monospace"><br></div><div><font face="arial, helvetica, sans-serif">Wrong type!!, x == -10!!</font></div><div style="font-family:monospace,monospace"><br></div></div><div><div style="font-family:monospace,monospace">(gdb) p *fu</div><div style="font-family:monospace,monospace">warning: RTTI symbol not found for class 'foo<10u>'</div><div style="font-family:monospace,monospace">$2 = warning: RTTI symbol not found for class 'foo<10u>'</div><div style="font-family:monospace,monospace">warning: RTTI symbol not found for class 'foo<10u>'</div><div style="font-family:monospace,monospace">{_vptr$base = 0x400a58 <vtable for foo<10u>+16>}</div><div style="font-family:monospace,monospace"><br></div><div>

<div style="text-align:start;text-indent:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font face="arial, helvetica, sans-serif">Dynamic type not identified.</font></div><div style="color:rgb(34,34,34);font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font face="arial, helvetica, sans-serif"><br></font></div><div style="color:rgb(34,34,34);font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font face="arial, helvetica, sans-serif"><br></font></div><div style="color:rgb(34,34,34);font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font face="arial, helvetica, sans-serif">-Roman</font></div>

<br></div></div></div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>