<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; ">Thanks for the fix Matthias. It's definitely beyond the call of duty.<div><br></div><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><br></div><div>Anyway, I would really like a generic backward liveness analysis utility that works on postRA MI. This seems like the ideal place for it.</div><div><br></div><div>-Andy</div><div><br></div><div><div>On Oct 3, 2013, at 4:53 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=us-ascii"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Attach is a revised version of the if conversion patch with a test case included.</div><div><br></div><div>Description: remove kill flags after if conversion if necessary</div><div><div>When if converting something like:</div><div>true:</div><div>   ... = R0<kill></div><div><br></div><div>false:</div><div>   ... = R0<kill></div><div><br></div><div>then the instructions of the true block must not have a <kill> flag</div><div>anymore, as the instruction of the false block follow and do still read</div><div>the R0 value.</div><div>Specifically this patch determines the set of register live-in in the</div><div>false block (possibly after simulating the liveness changes of the</div><div>duplicated instructions). Each of these live-in registers mustn't be</div><div>killed.</div></div><div><br></div><div>Greetings<span class="Apple-tab-span" style="white-space:pre">       </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>Matthias</div><div><br></div><div></div></div><span><remove-kill-flags-after-if-conversion-if-necessary.patch></span><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;"><div></div><br><div><div>On Oct 3, 2013, at 11:02 AM, Matthias Braun <<a href="mailto:mbraun@apple.com">mbraun@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br>On Oct 3, 2013, at 10:52 AM, Eric Christopher <<a href="mailto:echristo@gmail.com">echristo@gmail.com</a>> wrote:<br><br><blockquote type="cite">The standard mechanism is one patch per email. Also, usually more<br>description as well.<br></blockquote>I hope the descriptions in the commit-messages are enough. Here they are again:<br><br>* fix bad kill flags after if conversion:<br>If the true block had kill flags on registers being used in the false<br>block, then these kill flags must be removed after if conversion.<br><br>* fix post ra scheduler setting wrong kill flags in bundles<br>The PostRA scheduler only looked at the BUNDLE marker instruction, which<br>resulted in invalid kill flags inside the bundle. This version changes<br>it so the kill flags are set inside the bundle at the latest bundle<br>instruction possible.<br><br>* MachineVerifier: allow physreg use if just a subreg is defined<br>We can't mark partially undefined registers, so we have to allow reading<br>a register in the machine verifier if just parts of a register are<br>defined.<br><br>Thanks<br><span class="Apple-tab-span" style="white-space: pre;"> </span>Matthias<br><br><blockquote type="cite"><br>-eric<br><br>On Thu, Oct 3, 2013 at 10:44 AM, Matthias Braun <<a href="mailto:mbraun@apple.com">mbraun@apple.com</a>> wrote:<br><blockquote type="cite">The attached patches improve code correctness (in the sense of -verify-machineinstrs) in codegen. This mainly improves the situation for the arm backend. Please review, thanks.<br><br>Greetings<br>      Matthias<br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br><br></blockquote></blockquote><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br></div>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits<br></blockquote></div><br></div></body></html>