<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 21, 2014 at 7:31 PM, Nick Lewycky <span dir="ltr"><<a href="mailto:nlewycky@google.com" target="_blank">nlewycky@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On 21 July 2014 17:08, <a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a> <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Use isDereferenceablePointer (which checks things like argument's dereferenceable attribute) in addition to using isSafeToLoadUnconditionally (which is mostly useful for its local instruction scan). Also fixed up one of the test cases.<br>
</blockquote><div><br></div></div><div>The iteration order of the functions within an SCC is non-deterministic and may result in different attributes being added depending on pointer comparison. Consider the case of two leaf functions sharing the same parent, then add call edges between those two "leaf" functions. The df iteration may visit either of those two first, and if one of them depends on the attributes on the other, but the other does not, then you have an order dependence.</div>
</blockquote></div><br>Would iterating to fix-point within an SCC be a reasonable solution?</div></div>