<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 2, 2015 at 5:03 AM, James Molloy via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">jmolloy created this revision.<br>
jmolloy added reviewers: manmanren, dexonsmith, joker.eph.<br>
jmolloy added a subscriber: llvm-commits.<br>
jmolloy set the repository for this revision to rL LLVM.<br>
<br>
This attribute allows the compiler to assume that the function never recurses into itself, either directly or indirectly (transitively). This can be used among other things to demote global variables to locals.<br></blockquote><div><br></div><div>Where would this attribute generally come from? Is it expected that this would be exposed as a source language attribute? (any prior art there?)<br>Otherwise wouldn't this be an LLVM analysis, rather than a first-class IR feature?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The norecurse attribute indicates that the function does not call itself either directly or indirectly down any possible call path.<br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="http://reviews.llvm.org/D14227" rel="noreferrer" target="_blank">http://reviews.llvm.org/D14227</a><br>
<br>
Files:<br>
  docs/LangRef.rst<br>
  include/llvm/Bitcode/LLVMBitCodes.h<br>
  include/llvm/IR/Attributes.h<br>
  include/llvm/IR/Function.h<br>
  lib/AsmParser/LLLexer.cpp<br>
  lib/AsmParser/LLParser.cpp<br>
  lib/AsmParser/LLToken.h<br>
  lib/Bitcode/Reader/BitcodeReader.cpp<br>
  lib/Bitcode/Writer/BitcodeWriter.cpp<br>
  lib/IR/Attributes.cpp<br>
  lib/IR/Verifier.cpp<br>
  test/Bindings/llvm-c/invalid-bitcode.test<br>
  test/Bitcode/attributes.ll<br>
  test/Bitcode/compatibility.ll<br>
  test/Bitcode/invalid.ll<br>
  test/LTO/X86/invalid.ll<br>
<br>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div>