[llvm-dev] Rerunning TailCallElim at a later stage

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Thu Sep 3 09:18:01 PDT 2015


No, this reordering is not possible. Stack coloring is part of codegen.
Passes that modify the IR cannot run as part of codegen.

Your best bet for enabling tail calls with your meta calling convention is
to write a custom pass that rewrites calls in the tail position to use the
incoming argument memory instead of a local alloca. It would be up to this
custom pass to determine exactly when this is legal.

On Thu, Sep 3, 2015 at 8:57 AM, Nat! via llvm-dev <llvm-dev at lists.llvm.org>
wrote:

> Hi
>
> from what I have figured out, the pass "TailCallElim" is being done in
> what I would call the "opt" phase of optimization. The "StackColoring" is
> being done in the "llc" phase. opt -> llc, so TailCallElim is always ahead.
>
> Now I would like to add something (my reusealloca idea) in "StackColoring"
> to get rid of some allocas, which inhibit "TailCallElim".
>
> * Is it possible to rerun (if even possible at that stage) the
> "TailCallElim" at this stage ?
>
> * Is it possible to make "StackColoring" into an "opt" pass and try to get
> it ahead of "TailCallElim" ? I guess not, though I can see how
> "RegisterColoring" is dependent on architecture, but I don't really see it
> for allocas.
>
> Ciao
>    Nat!
>
> P.S. AU.addRequired<TailCallElim>(); would not work BTW.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150903/217d4d3c/attachment.html>


More information about the llvm-dev mailing list