[llvm-dev] Less aggressive on the first allocation of CSR if detecting an early exit

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 27 16:50:04 PDT 2017


On 10/27/2017 03:32 PM, Jun Lim via llvm-dev wrote:
>
> When compiling C code below for AArach64, I saw that shrink-wrapping 
> didn't happen due to the very early uses of CSRs in the entry block. 
> So CSR spills/reloads are executed even when the early exit block is 
> taken.
>
> int getI(int i);
>
> int foo(int *P, int i) {
>
>    if (i>0)
>
>      return P[i];
>
>    i = getI(i);
>
>    return P[i];
>
> }
>
> It's not that hard to find such cases where RegAllocGreedy 
> aggressively allocates a CSRs when a live range expands across a 
> call-site.  That's because of the conservatively initialized CSRCost, 
> causing RegAllocGreedy to strongly favour allocating a CSR over 
> splitting a region. Since allocation of CSRs requires the cost of 
> spilling CSRs, allocating CSRs is not always beneficial. Like the case 
> above, if a function has an early exit code, we may want to be less 
> aggressive on the first allocation of CSR in the entry block by 
> increasing the CSRCost.
>
> Previously, I proposed https://reviews.llvm.org/D34608 in this matter, 
> but the way I detect the profitable cases and the way I increase the 
> CRSCost was somewhat unclear. Now, I'm thinking to less aggressive on 
> the first allocation of CSR in the entry block in case where the 
> function has an early exit so that encourage more shrink-wrapping and 
> avoid executing CSR spill/recover when the early exit is taken. By 
> sending this out, I just want to get any high level feedback early. 
> Please let me know if anyone has any opinion about this.
>

So the heuristic will have nothing to do with the presence of calls? 
Might this increase spilling in loops?

  -Hal

> Thanks,
> Jun
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171027/1adafae7/attachment.html>


More information about the llvm-dev mailing list