[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