<div dir="ltr"><span class="im"><div>>> <span style="line-height:1.5">In the case of user-defined allocation functions, the definitions for those functions are available</span></div><div><span style="line-height:1.5"></span></div></span><div><span style="line-height:1.5">>Are they? probably not unless you're in an LTO build.<br></span></div><div><span style="line-height:1.5">Yes, I'm assuming an LTO build.<br><br></span><div>>Printf() is a very nasty one because it can actually affect a lot 
of state. The %n modifier can cause an argument to be written to.<br></div><div>hence it would have HasInaccessibleState and ArgMemOnly set, but not ReadNone or ReadOnly set.<br><br><div>>Yes. Definitions being available should only *increase* the set of attributes that can be added to them, never decrease.</div>I agree with that. But what I meant was, during a compilation invocation, we either have the definitions available or not. That means, the attributes we set once (or not set if definition isn't available) does not change. <br><br>>That's in practice impossible to guarantee, both by the compiler and by the programmer.<br></div><div>I'm not sure I understand this. Why would it be impossible for the compiler to propagate this flag along the call graph upwards? As an example, malloc has the flag set, and this is propagated to whoever calls malloc, and then to whoever calls that function and so on.<br></div><div><br></div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">  - Vaivaswatha<br></div></div></div>
<br><div class="gmail_quote">On Fri, Dec 4, 2015 at 10:24 PM, Krzysztof Parzyszek via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@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"><span class="">On 12/4/2015 10:48 AM, Vaivaswatha Nagaraj via llvm-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This point however reminds me to add, functions that transitively call<br>
functions with HasInaccessibleState must also have the flag set.<br>
</blockquote>
<br></span>
That's in practice impossible to guarantee, both by the compiler and by the programmer.<span class="HOEnZb"><font color="#888888"><br>
<br>
-Krzysztof<br>
<br>
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div>