<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 26, 2019, at 3:13 PM, Justin Bogner via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Quentin Colombet via llvm-commits <</span><a href="mailto:llvm-commits@lists.llvm.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">llvm-commits@lists.llvm.org</a><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">> writes:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Author: qcolombet<br class="">Date: Tue Mar 26 14:27:15 2019<br class="">New Revision: 357032<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=357032&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=357032&view=rev</a><br class="">Log:<br class="">[LiveRange] Reset the VNIs when splitting subranges<br class=""><br class="">When splitting a subrange we end up with two different subranges covering<br class="">two different, non overlapping, lanes.<br class="">As part of this splitting the VNIs of the original live-range need<br class="">to be dispatched to the subranges according to which lanes they are<br class="">actually defining.<br class=""><br class="">Prior to this patch we were assuming that all values were defining<br class="">all lanes. This was wrong as demonstrated by <a href="http://llvm.org/PR40835" class="">llvm.org/PR40835</a>.<br class=""><br class="">Differential Revision: <a href="https://reviews.llvm.org/D59731" class="">https://reviews.llvm.org/D59731</a><br class=""><br class="">Added:<br class="">   llvm/trunk/test/CodeGen/SystemZ/regcoal-subranges-update.mir<br class="">Modified:<br class="">   llvm/trunk/include/llvm/CodeGen/LiveInterval.h<br class="">   llvm/trunk/lib/CodeGen/LiveInterval.cpp<br class="">   llvm/trunk/lib/CodeGen/LiveRangeCalc.cpp<br class="">   llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp<br class="">   llvm/trunk/lib/CodeGen/SplitKit.cpp<br class=""><br class="">Modified: llvm/trunk/include/llvm/CodeGen/LiveInterval.h<br class="">URL:<br class=""><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveInterval.h?rev=357032&r1=357031&r2=357032&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveInterval.h?rev=357032&r1=357031&r2=357032&view=diff</a><br class="">==============================================================================<br class=""><br class="">--- llvm/trunk/include/llvm/CodeGen/LiveInterval.h (original)<br class="">+++ llvm/trunk/include/llvm/CodeGen/LiveInterval.h Tue Mar 26 14:27:15 2019<br class="">@@ -789,8 +789,15 @@ namespace llvm {<br class="">    ///    L000F, refining for mask L0018. Will split the L00F0 lane into<br class="">    ///    L00E0 and L0010 and the L000F lane into L0007 and L0008. The Mod<br class="">    ///    function will be applied to the L0010 and L0008 subranges.<br class="">+    ///<br class="">+    /// \p Indexes and \p TRI are required to clean up the VNIs that<br class="">+    /// don't defne the related lane masks after they get shrunk. E.g.,<br class="">+    /// when L000F gets split into L0007 and L0008 maybe only a subset<br class="">+    /// of the VNIs that defined L000F defines L0007.<br class="">    void refineSubRanges(BumpPtrAllocator &Allocator, LaneBitmask LaneMask,<br class="">-                         std::function<void(LiveInterval::SubRange&)> Apply);<br class="">+                         std::function<void(LiveInterval::SubRange &)> Apply,<br class="">+                         const SlotIndexes &Indexes,<br class="">+                         const TargetRegisterInfo &TRI);<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">It'd be better to put the new arguments before the std::function so that</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">callers can continue to use the block-style formatting for the lambdas</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">they pass.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><div><br class=""></div><div>I don’t know if the code was manually formatted, but moving the argument before the std::function did not reverted the to the block-style formatting :(.</div><div>I am using <span style="font-family: Menlo; font-size: 11px;" class="">clang-format version 8.0.0 (tags/RELEASE_800/final)</span></div><div><br class=""></div><div>Attaching the patch in case you have an idea how to convince clang to produce the block-style thing.</div></div></body></html>