<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    For the LangRef, I suggest we remove the text related to when a
    "tail" call is guaranteed.  With the addition of "musttail" these
    semantics are redundant.  Instead, "tail" should be advisory only. 
    This would involve breaking backwards compatibility.<br>
    <br>
    With the new option, should GauranteedTailCallOpt exist?  I suggest
    not.  <br>
    <br>
    In code, it would be useful to refer to the old "tail" attribute as
    "may tail".  This clarifies the semantics in code even if we don't
    change the IR name.  In particular, I'm referring to
    CallSite/Instruction here.<br>
    <br>
    In the verifier you need to handle chains of bitcasts.  These will
    reduce to a single bitcast, but InstCombine may not have run yet. 
    We don't want each opto pass to need to do this simplification.<br>
    <br>
    Otherwise, LGTM and I support the addition.  <br>
    <br>
    Philip<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 03/31/2014 06:30 PM, Reid Kleckner
      wrote:<br>
    </div>
    <blockquote
cite="mid:differential-rev-PHID-DREV-ibnox3ixixhje33xczux-req@llvm-reviews.chandlerc.com"
      type="cite">
      <pre wrap="">Hi nicholas, chandlerc,

This is similar to the 'tail' marker, except that it guarantees that
tail call optimization will occur.  It also comes with convervative IR
verification rules that ensure that tail call optimization is possible.

<a class="moz-txt-link-freetext" href="http://llvm-reviews.chandlerc.com/D3240">http://llvm-reviews.chandlerc.com/D3240</a>

Files:
  docs/LangRef.rst
  include/llvm/Bitcode/LLVMBitCodes.h
  include/llvm/IR/CallSite.h
  include/llvm/IR/Instructions.h
  lib/AsmParser/LLLexer.cpp
  lib/AsmParser/LLParser.cpp
  lib/AsmParser/LLParser.h
  lib/AsmParser/LLToken.h
  lib/Bitcode/Reader/BitcodeReader.cpp
  lib/Bitcode/Writer/BitcodeWriter.cpp
  lib/IR/AsmWriter.cpp
  lib/IR/Verifier.cpp
  lib/Target/AArch64/AArch64ISelLowering.cpp
  lib/Target/ARM/ARMISelLowering.cpp
  lib/Target/ARM64/ARM64ISelLowering.cpp
  lib/Target/Mips/MipsISelLowering.cpp
  lib/Target/PowerPC/PPCISelLowering.cpp
  lib/Target/X86/X86ISelLowering.cpp
  test/Bitcode/tailcall.ll
  test/CodeGen/X86/musttail.ll
  test/Verifier/musttail-invalid.ll
  test/Verifier/musttail-valid.ll
</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
llvm-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>