What he said :)<div>It also, representationally, has a related  issue  our current assume does in terms of figuring out the set of assumptions applied.  Given an instruction, in extended SSA, because " assume" produces a value used by things, it's trivial to find the chain of assumptions you can use for it.  In a straight control flow representation, it requires finding which side of the branch you are on all the way up the control dependence tree</div><div><br><div class="gmail_quote"><div dir="ltr">On Sat, Jun 11, 2016, 6:07 PM Sanjoy Das via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sat, Jun 11, 2016 at 5:47 PM, Sean Silva via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> Perhaps a naive question then is: why don't we represent assume as `if<br>
> (!cond) unreachable; else <the rest of the code>`?<br>
<br>
As I understand it, in theory this is fine, but in practice it may end<br>
up breaking optimizations.  For instance, today we can hoist loads<br>
across calls to assume, but it may not be obviously safe if you have<br>
the branch-to-unreachable representation.   The control flow<br>
representation may also bloat compile time / memory usage due to more<br>
basic blocks.<br>
<br>
-- Sanjoy<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>