<div dir="ltr">Are you thinking of Jump Threading? I can't say for certain whether LLVM's implementation would handle this exact case, but that's the pass I'd expect to be applicable here.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jun 22, 2019 at 3:19 PM William Moses via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<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"><div dir="ltr">Hi all,<br><div><br></div><div>Is there an existing optimization in LLVM that will get split or rid of the "merge" block into the cases of where it's from.</div><div><br></div><div>Evidently doing this for all cases could result in a blowup of code, but perhaps this exists somewhere for more limited cases (for example where the merge block could be eliminated entirely).</div><div><br></div><div>Cheers,</div><div>Billy Moses</div><div><br></div><div>A:</div><div>   ...</div><div>  br merge</div><div><br></div><div>B:</div><div>  ...</div><div>  br merge</div><div><br></div><div>merge:</div><div>  %var = phi [%a, A], [%b, B]</div><div>  %wherefrom = phi [true, A], [false, B]</div><div>   br cond %wherefrom A2, B2</div><div><br></div><div>A2:</div><div>  ....</div><div><br></div><div>B2:<br>  ....<br></div></div>
_______________________________________________<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="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>