<div dir="ltr"><div>1. Mark reaching definitions of a live phi as live<br></div><div>2. Mark the terminators of blocks control dependent on the edge of each phi edge as live.</div><div>(and #2 only has to be done one per block, so if you have multiple phis in the same block, you can skip #2 for the other phis)<br><br></div><div>If we want to go from there to something better, let's do it based on evidence it helps something :)</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 6, 2016 at 4:27 PM, David Callahan <span dir="ltr"><<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>I think your proposed simplification was to always mark the terminators of predecessor blocks of a live PHI as live as well as the reaching definitions. Is that correct?</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<span style="font-weight:bold">From: </span>Daniel Berlin <<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>><br>
<span style="font-weight:bold">Date: </span>Tuesday, September 6, 2016 at 4:23 PM<br>
<span style="font-weight:bold">To: </span>"<a href="mailto:reviews+D23824+public+bfd9f3a940dac1be@reviews.llvm.org" target="_blank">reviews+D23824+public+<wbr>bfd9f3a940dac1be@reviews.llvm.<wbr>org</a>" <<a href="mailto:reviews+D23824+public+bfd9f3a940dac1be@reviews.llvm.org" target="_blank">reviews+D23824+public+<wbr>bfd9f3a940dac1be@reviews.llvm.<wbr>org</a>><br>
<span style="font-weight:bold">Cc: </span>David Callahan <<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>>, Tim Amini Golling <<a href="mailto:mehdi.amini@apple.com" target="_blank">mehdi.amini@apple.com</a>>, "<a href="mailto:nadav.rotem@me.com" target="_blank">nadav.rotem@me.com</a>"
 <<a href="mailto:nadav.rotem@me.com" target="_blank">nadav.rotem@me.com</a>>, David Majnemer <<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>>, Taewook Oh <<a href="mailto:twoh@fb.com" target="_blank">twoh@fb.com</a>>, Kevin Frei <<a href="mailto:freik@fb.com" target="_blank">freik@fb.com</a>>,
 llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [PATCH] D23824: [ADCE] Add handling of PHI nodes when removing control flow<br>
</div><div><div class="h5">
<div><br>
</div>
<div>
<div>
<div dir="ltr">Interesting.
<div>I don't see how it legally decides to do that, but okay.</div>
<div>:)<br>
</div>
<div><br>
</div>
<div>In any case, i still think you should simplify this code unless we have anything that shows the complexity is worth it :)</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Sep 6, 2016 at 3:55 PM, David Callahan <span dir="ltr">
<<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
david2050 added a comment.<br>
<br>
This snippet<br>
<br>
  int foo(int b, int j, int N) {<br>
<span>  Â  if (b) {<br>
  Â  Â  int i;<br>
  Â  Â  for (i = 0; i < N; i++)<br>
  Â  Â  Â  ;<br>
</span>  Â  Â  j =  Â  Â  Â 0;<br>
  Â  }<br>
  Â  return j;<br>
  }<br>
<br>
via<br>
<br>
  clang -c -emit-llvm -O0 ...<br>
  opt -sroa -adce -adce-remove-loops -S ...<br>
<br>
generates<br>
<br>
  define i32 @foo(i32 %b, i32 %j, i32 %N) #0 {<br>
<span>  Â  %1 = icmp ne i32 %b, 0<br>
  Â  br i1 %1, label %2, label %3<br>
<br>
  ; <label>:2:  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  ; preds = %0<br>
  Â  br label %3<br>
<br>
  ; <label>:3:  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  ; preds = %2, %0<br>
</span>  Â  %.0 = phi i32 [ %j, %0 ], [ 0, %2 ]<br>
  Â  ret i32 %.0<br>
  }<br>
<br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D23824&d=DQMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=lFyiPUrFdOHdaobP7i4hoA&m=2JaRmei7Q_OhLkH0vL2W3_6d3ZborW1k5yIfKnsIK4g&s=T7wb6dqAIu3VNjW8aCi4dLGAwqcdFvlHOr0MXu-H3xU&e=" rel="noreferrer" target="_blank">https://reviews.llvm.org/D2382<wbr>4</a><br>
<br>
<br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div></div></span>
</div>

</blockquote></div><br></div>