<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 1, 2016 at 9:39 AM, Jia Chen <span dir="ltr"><<a href="mailto:grievejia@gmail.com" target="_blank">grievejia@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span class="">On Mon, May 30, 2016 at 6:49 PM, Daniel Berlin <<a href="mailto:dberlin@dberlin.org">dberlin@dberlin.org</a>> wrote:<br>
> Sure it is. It is safe to give conservatively correct answers,  even if you<br>
> don't incrementally recompute.<br>
<br>
</span>You are right. I take back what I said before. That was a strong and<br>
blind statement.<br>
<span class=""><br>
> What transformation do you think can occur that would make the points-to set<br>
> not conservatively correct, but retain the semantics of the original<br>
> program?<br>
<br>
</span>I can't find anything on top of my head. Maybe there doesn't exist any.<br></blockquote><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
I'm not convinced that such kind of transformation must not be<br>
presented or will not be presented in the future.</blockquote><div><br></div><div>You can prove it if you like (it also depends on your definition of semantics).</div><div><br></div><div>However, i will point out that GCC recomputes points-to sets twice, and then only for precision, not for correctness.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">But for now, I agree<br>
that values not presented in StratifiedSets should be treated<br>
conservatively.<br>
<br>
I do feel suspicious about the fact that unused values are not added<br>
to StratifiedSets in the first place. But with respect to this patch,<br>
that's probably a tangential topic.<br></blockquote><div><br></div><div>Sure, and FWIW, it depends on the definition of unused.<br></div><div>GCC's andersen's analysis eliminates variables (ie prior to solving) that are not treated like pointers.</div><div>That is, if they are not dereferenced, etc, it simply ignores them.  You can prove this is correct, and is common (see <a href="https://www.lib.utexas.edu/etd/d/2009/hardekopfb48332/hardekopfb48332.pdf">https://www.lib.utexas.edu/etd/d/2009/hardekopfb48332/hardekopfb48332.pdf</a> and <a href="http://aria.cs.vt.edu/refs/docs/pldi00.ps">http://aria.cs.vt.edu/refs/docs/pldi00.ps</a> for non-pointer elimination)<div id="gmail_15sinuqqjemy" style="display:inline-block"></div></div><div><br></div><div>If unused means "unreachable", that's a different issue.</div><div><br></div><div><br></div></div><br></div></div>