Hello Jakob,<br><br>Did you get a chance to take a look into this, and if not, can you do it when you get some spare time?<br><br>Thanks!<br><br><div class="gmail_quote">2012/12/19 Borja Ferrer <span dir="ltr"><<a href="mailto:borja.ferav@gmail.com" target="_blank">borja.ferav@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
We did something like this back when the register allocator couldn't split live ranges.<br>
</blockquote></div><div><br>Yes, I remember the isWinToJoinCrossClass() function, removed here:<br><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?r1=152016&r2=155551&diff_format=h" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?r1=152016&r2=155551&diff_format=h</a><br>

that prevented some coalescing to the cost of leaving many unnecessary copies around for very constrained regclasses like the one I have.<br> </div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
The problem is that any heuristic you can come up with only makes the problem less likely to happen. It doesn't actually fix it.<span><font color="#888888"><br></font></span></blockquote></div><div><br>Indeed, that heuristic I wrote is a nasty hack and not the way of fixing it correctly. Now that the regalloc has much more freedom on making changes in the code I hope it is fixable. If you need any other info apart of the dumps I've already attached please ask.<br>

<br>Thanks!<br></div></div><br>
</blockquote></div><br>