<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 style=""><font face="arial, helvetica, sans-serif">Wrong type!!, x == -10!!</font></div><div style="font-family:monospace,monospace"><br></div></div><div style=""><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 style="">

<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" style="">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>