<div dir="ltr"><div><div><div>Hi Haicheng,<br><br></div>We need to prevent the transform if it causes spilling, but I'm not sure yet what mechanism/heuristic we can use to do that.<br></div>Can you file a bug report with a reduced test case?<br><br></div>Thanks!<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 1, 2015 at 9:10 AM, Haicheng Wu <span dir="ltr"><<a href="mailto:haicheng@codeaurora.com" target="_blank">haicheng@codeaurora.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div link="#0563C1" vlink="#954F72" lang="EN-US"><div><p class="MsoNormal">Hi Sanjay,<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I observed some extra register spills when applying the reassociation pass on spec2006 benchmarks and I would like to listen to your advice.  <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">For example, function get_new_point_on_quad() of tria_boundary.cc in spec2006/dealII has a sequences of code like this<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal">X=a+b<u></u><u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal">Y=X+c<u></u><u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal">Z=Y+d<u></u><u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">There are many other instructions between these float adds.  The reassociation pass first swaps a and c when checking the second add, and then swaps a and d when checking the third add.  The transformed code looks like<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal">X=c+b<u></u><u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal">Y=X+d<u></u><u></u></p><p class="MsoNormal">…<u></u><u></u></p><p class="MsoNormal">Z=Y+a<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">a is pushed all the way down to the bottom and its live range is much larger now.  <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Best,<span class="HOEnZb"><font color="#888888"><u></u><u></u></font></span></p><span class="HOEnZb"><font color="#888888"><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Haicheng<u></u><u></u></p></font></span></div></div></blockquote></div><br></div>