<div dir="ltr"><div>Interesting.</div><div>Sebastian has two problems:<br><br></div><div>1. No MemorySSA form handles *hoisting* stores (not gcc, not open64's mu/chi/etc).</div><div>It requires building the reverse problem to make these links exist.<br></div><div><br></div><div>Instead, most things *sink* stores, which MemorySSA makes easy.</div><div>See SSUPRE, etc.</div><div><br></div><div>2. If you are going to write your own walkers, etc, we don't make it easy enough.</div><div><br></div><div>My initial view is: Rather than do this as a completely separate piece by piece query interface, the intention was for folks to write custom walkers, and use those.</div><div>For example, the code in this patch could be written as a MemorySSA walker that implemented "getClobberingMemoryAccess" for stores.</div><div>It has a different definition of what it means to be a clobbering memory access than the default walker.</div><div>That's okay.</div><div><br></div><div>*Inside of walkers*, we should make instructionClobbersQuery available.<br></div><div><br></div><div>Thoughts?</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 13, 2016 at 12:10 PM, Geoff Berry <span dir="ltr"><<a href="mailto:gberry@codeaurora.org" target="_blank">gberry@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">gberry added a subscriber: gberry.<br>
gberry added a comment.<br>
<br>
I ran into the lack of an interface for this query in MemorySSA as well in the EarlyCSE changes I was working on.  I think what you want is to be able to call instructionClobbersQuery() since that knows about special intrinsics and meta-data as well.<br>
<br>
<br>
<a href="https://reviews.llvm.org/D24517" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D24517</a><br>
<br>
<br>
<br>
</blockquote></div><br></div>