[llvm] r208017 - Improve 'tail' call marking in TRE. A bootstrap of clang goes from 375k calls marked tail in the IR to 470k, however this improvement does not carry into an improvement of the call/jmp ratio on x86. The most common pattern is a tail call + br to a block with nothing but a 'ret'.

Diego Novillo dnovillo at google.com
Wed May 7 09:24:25 PDT 2014

On Mon, May 5, 2014 at 7:59 PM, Nick Lewycky <nicholas at mxc.ca> wrote:

> +        if (SafeToTail) {
> +          F.getContext().emitOptimizationRemark(
> +              "tailcallelim", F, CI->getDebugLoc(),
> +              "found readnone tail call candidate");

You can use DEBUG_TYPE here, can you not?

This seems to be a transformation remark, but the text implies that it's an
analysis remark. I'm adding support for -Rpass-analysis shortly, so I want
to make sure whether this will fall under the category of 'applied
optimization' or 'analysis result' (which will have a different call,
something like emitOptimizationAnalysisRemark().

> +  for (CallInst *CI : DeferredTails) {
> +    if (Visited[CI->getParent()] != ESCAPED) {
> +      // If the escape point was part way through the block, calls after
> the
> +      // escape point wouldn't have been put into DeferredTails.
> +      F.getContext().emitOptimizationRemark(
> +          "tailcallelim", F, CI->getDebugLoc(), "found tail call
> candidate");
> +      CI->setTailCall();
> +      Modified = true;

Same question here.

Thanks. Diego.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140507/f2054f8f/attachment.html>

More information about the llvm-commits mailing list