<div dir="ltr">I spent a few days debugging a valgrind memcheck false positive that was introduced by a new optimization in clang version 10.<br><br>Valgrind is mistakenly reporting an error due to the way that clang 10 is emitting asm.  But it's a trivial matter to fix the code.  I just needed to change this:<br><div><br></div><div>  401697:       66 0f 6e d2             movd   %edx,%xmm2<br>  40169b:       66 0f 60 d2             punpcklbw %xmm2,%xmm2<br>  40169f:       66 0f 61 da             punpcklwd %xmm2,%xmm3<br></div><div><br></div><div>to this:</div><div><br></div><div>  4016a3:       66 0f 6e da             movd   %edx,%xmm3<br>  4016a7:       66 0f 60 db             punpcklbw %xmm3,%xmm3<br>  4016ab:       66 0f 61 db             punpcklwd %xmm3,%xmm3<br></div><div><br></div><div>So instead of using $xmm2 and then $xmm3 just use $xmm3.  This was a tiny change and I was able to modify the executable to do it.</div><div><br></div><div>Is it possible to modify clang/llvm to do this where possible?  Valgrind is a popular tool for finding bugs in code and if it's not too much trouble for llvm and there's no performance penalty, maybe LLVM could accommodate?</div><div><br></div><div>I'm willing to do the work but I'm not sure where to start.help but I'm not sure where to start.</div><div><br></div><div>There are more details about the issue in the Valgrind bug report: <a href="https://bugs.kde.org/show_bug.cgi?id=432801#c12">https://bugs.kde.org/show_bug.cgi?id=432801#c12</a></div><div><br></div><div>Thanks for your help!</div><div><br></div><div>Eyal</div></div>