[llvm-dev] Register Spill Caused by the Reassociation pass

Sanjay Patel via llvm-dev llvm-dev at lists.llvm.org
Thu Oct 1 09:27:37 PDT 2015


Hi Haicheng,

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.
Can you file a bug report with a reduced test case?

Thanks!

On Thu, Oct 1, 2015 at 9:10 AM, Haicheng Wu <haicheng at codeaurora.com> wrote:

> Hi Sanjay,
>
>
>
> I observed some extra register spills when applying the reassociation pass
> on spec2006 benchmarks and I would like to listen to your advice.
>
>
>
> For example, function get_new_point_on_quad() of tria_boundary.cc in
> spec2006/dealII has a sequences of code like this
>
>
>
>>
> X=a+b
>
>>
> Y=X+c
>
>>
> Z=Y+d
>
>>
>
>
> 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
>
>
>
>>
> X=c+b
>
>>
> Y=X+d
>
>>
> Z=Y+a
>
>
>
> a is pushed all the way down to the bottom and its live range is much
> larger now.
>
>
>
> Best,
>
>
>
> Haicheng
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151001/cc1715e5/attachment.html>


More information about the llvm-dev mailing list