<div dir="ltr">Morning all,<div><br></div><div>It feels like we're getting closer to consensus on this. Off-list, Aaron was happy that this isn't going to cause a proliferation of norecurse in the clang code generator - the general use case would be for LLVM to infer norecurse itself in FunctionAttrs and only in exceptional cases would clang have to step in (such as main in C++).</div><div><br></div><div>David, The only thing that could break norecurse is if some transform actually went and added new call edges (to non-intrinsic/builtin functions). I can't think of a transform that would do this, but if it does it does seem that would be exceptional and so making the transform remove the norecurse attribute seems reasonable to me.</div><div><br></div><div>What do you think?</div><div><br></div><div>Cheers,</div><div><br></div><div>James<br><div class="gmail_quote"><div dir="ltr">On Mon, 2 Nov 2015 at 21:34 Mehdi AMINI via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">joker.eph added a comment.<br>
<br>
The fact that a transformation may invalidate the attribute seems to me to be independent from wether we infer it or not: the same example you took could come from a specific front-end (or directly a user) adding the attributes. I think we'll have to teach such a transformation that invalidate the attribute to either not perform when the attribute is present, or remove it. Does it makes sense?<br>
Do you foresee a lot of such transformations? Or cases where it would be hard to do?<br>
<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>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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>
</blockquote></div></div></div>