<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 Sep 6, 2013, at 4:50 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;"><div>The name LiveRanges has been changed in the second iteration of the patches it’s indeed called LiveRange in singular form now (which is indeed a better name). This is the structure after applying this patchset:</div><div><br></div><div>* A LiveRange object contains a list of LiveRange::Segment objects which represent intervals</div><div>* LiveIntervall is simply a subclass of LiveRange adding a field for the register number and spill weight</div><div>* Several algorithms that operated on LiveInterval but weren’t really bound to a specific register/machine instructions now work on the LiveRange base class.</div><div>* Not in this patch series, but I’m working on this: Introduce a new LiveIntervall::SubRange class which is a subclass of LiveRange with a LaneMask added, managing liveness of a “subregister”/a group of lanes.</div></div></blockquote><div><br></div><div>I like what Matthias did in the second iteration of patches, and noticed Jakob gave the same feedback (I read patch #1 first).</div><div><br></div><div>LiveRange is now close to the traditional concept of an allocatable register unit. But instead of a disjoint set of Intervals we call them Segments. (I can't complain about that terminology being the one who started it.)</div><div><br></div><div>LiveInterval is a magical LLVM-specific thing that extends the LiveRange into a new dimension of fun overlapping subranges. The name doesn't make any mathematical sense, but it makes a lot of sense given that we don't want to rename all our passes!</div><div><br></div><div>-Andy</div><div><br></div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><div>On Sep 6, 2013, at 4:16 PM, Jakob Stoklund Olesen <<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</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 Sep 6, 2013, at 3:36 PM, Andrew Trick <<a href="mailto:atrick@apple.com">atrick@apple.com</a>> wrote:<br><br><blockquote type="cite"><br>On Aug 29, 2013, at 6:07 PM, Matthias Braun <<a href="mailto:matze@braunis.de">matze@braunis.de</a>> wrote:<br><br><blockquote type="cite"><br>LiveRanges has logic to manage a set list LiveRange instances<br>and a list of value numbers which previously was in LiveInterval,<br>without having details like spill weight or a fixed register number.<br>LiveInterval is now a direct subclass of LiveRanges and simply adds the<br>spill weight and the register number.<br>---<br>include/llvm/CodeGen/LiveInterval.h  | 143 +++++++++++++++++++++--------------<br>lib/CodeGen/LiveInterval.cpp         | 128 +++++++++++++++----------------<br>lib/CodeGen/LiveIntervalAnalysis.cpp |  20 ++---<br>3 files changed, 156 insertions(+), 135 deletions(-)<br><br><0001-refactor-LiveInterval-introduce-new-LiveRanges-class.patch>_______________________________________________<br></blockquote><br>I don’t want to hold up patches with philosophical arguments—and it’s not your fault that some terminology is already misused.<br></blockquote><br>I think we should use this opportunity to get the names right. We’re causing massive churn anyway.<br><br><blockquote type="cite">This is just something to think about:<br><br>In compiler literature a LiveRange is an allocatable entity as seen by the register allocator.<br><br>By definition, a range is a disjoint set of intervals where each interval represents all values between two end points. So in the context of a compiler, interfence is computed by checking intersection of intervals.<br></blockquote><br>It seems that one of these definitions will have to give since we want to represent the liveness of a virtual register as a linked list of {mask + disjoint set of intervals}.<br><br>/jakob<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></div></blockquote></div><br></div></blockquote></div><br></body></html>