<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Oct 7, 2013, at 1:15 PM, Andrew Trick <<a href="mailto:atrick@apple.com">atrick@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Oct 7, 2013, at 12:59 PM, Matthias Braun <<a href="mailto:mbraun@apple.com">mbraun@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Oct 6, 2013, at 10:52 PM, Andrew Trick <<a href="mailto:atrick@apple.com">atrick@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=us-ascii"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Thanks for the fix Matthias. It's definitely beyond the call of duty.<div><br></div><div>In the diamond case, I don't understand why you start with false-block live-ins and walk forward. We only care about liveness generated within the false block, right? We don't care about registers live out of the diamond. Why not start with an empty live set and walk backward from the end of the false-block back to the last duplicated instruction (DI2)? Adding uses and clearing defs. No need to look at kill flags. The more we can remove dependence on kill/dead flags the better.</div></div></blockquote><div>Well what I needed is the set of registers live after the last duplicated instruction, these values musn’t be killed in the true block. You are right that instead of using the live-ins and walking forward (using kill and dead flags) I could also use the live-outs and walk backwards. I’ll prepare a changed patch, maybe creating a first version of that “liveness utility”.</div></div></div></blockquote><div><br></div>That would be nice, but I don’t think we care about the live outs in this case (kill flags on the false path would already be wrong).</div><div>-Andy</div></div></blockquote><div><br></div><div>Here’s a new version of the patch with liveness computed from the end of the block so we don’t have to rely on kill flags for the computation (too bad I didn’t have that bit ready this morning). Also note that the liveness part uses ConstMIBundleOperands instead of ConstMIOperands now.</div><div><br></div><div>Greetings and thanks for the review</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>Matthias</div><div><br></div><div></div></div></body></html>