<div dir="ltr">This works in most cases, there are two it fails:<br><br><div>1. If you add invariant attributes after memoryssa (we have a unit test for this)</div><div>Here, it will not notice them unless you specifically reset optimization</div><div><br></div><div>2. Removal of blocking stores causing equal phi arguments. </div><div><br></div><div>Removal of blocking stores we can take care of by resetting their uses</div><div><br></div><div>But when they cause phi arguments to become equal, we could walk past the phi now but won't notice this.</div><div><br></div><div><br></div><div>Not sure if we care enough.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 19, 2016 at 1:03 PM, Daniel Berlin <span dir="ltr"><<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">dberlin updated this revision to Diff 75207.<br>
dberlin added a comment.<br>
<br>
- Move optimized flag to uses<br>
- Update to work in all update cases<br>
<span class=""><br>
<br>
<a href="https://reviews.llvm.org/D25172" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D25172</a><br>
<br>
Files:<br>
include/llvm/Transforms/Utils/<wbr>MemorySSA.h<br>
lib/Transforms/Utils/<wbr>MemorySSA.cpp<br>
</span> unittests/Transforms/Utils/<wbr>MemorySSA.cpp<br>
<br>
</blockquote></div><br></div>