<div dir="ltr">FWIW: I agree.<br><div>But i'd go farther.</div><div>I think at this point, ->hasSideEffects (or ->sideEffects) may just want to return a mask, so that the above just becomes</div><div><br></div><div>->sideEffects & (MayWrite | MayRead | MayThrow)</div><div><br></div><div>or whatever nice version we want.</div><div><br></div><div>I think we've added enough accessors at this point, all recursively defined,  that i think it's becoming a bit of a mess ;)</div><div><br></div><div>But others may disagree :)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 15, 2017 at 11:41 AM, Sanjoy Das via Phabricator <span dir="ltr"><<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">sanjoy added a comment.<br>
<span class=""><br>
In <a href="https://reviews.llvm.org/D28742#646705" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D28742#646705</a>, @majnemer wrote:<br>
<br>
> Instead of using `I->mayReadFromMemoryOrThrow() || I->mayWriteToMemory()`, I'd recommend using `I->mayReadFromMemory() || I->mayHaveSideEffects()`<br>
<br>
<br>
</span>What do you think about `I->mayReadFromMemory() || I->mayWriteToMemory() || I->mayThrow()`?  I don't particularly like that we club may-throw with has-side-effects.<br>
<br>
<br>
<a href="https://reviews.llvm.org/D28742" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D28742</a><br>
<br>
<br>
<br>
</blockquote></div><br></div>