<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; 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 id="OLK_SRC_BODY_SECTION">
<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">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">reviews+D23824+public+bfd9f3a940dac1be@reviews.llvm.org</a>" <<a href="mailto:reviews+D23824+public+bfd9f3a940dac1be@reviews.llvm.org">reviews+D23824+public+bfd9f3a940dac1be@reviews.llvm.org</a>><br>
<span style="font-weight:bold">Cc: </span>David Callahan <<a href="mailto:dcallahan@fb.com">dcallahan@fb.com</a>>, Tim Amini Golling <<a href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>>, "<a href="mailto:nadav.rotem@me.com">nadav.rotem@me.com</a>"
 <<a href="mailto:nadav.rotem@me.com">nadav.rotem@me.com</a>>, David Majnemer <<a href="mailto:david.majnemer@gmail.com">david.majnemer@gmail.com</a>>, Taewook Oh <<a href="mailto:twoh@fb.com">twoh@fb.com</a>>, Kevin Frei <<a href="mailto:freik@fb.com">freik@fb.com</a>>,
 llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">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><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 class="">    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 class="">    %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/<wbr>D23824</a><br>
<br>
<br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</span>
</body>
</html>