<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - We should have a LiveRegUnits utility class"
   href="https://llvm.org/bugs/show_bug.cgi?id=27609">27609</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>We should have a LiveRegUnits utility class
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Common Code Generator Code
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>matze@braunis.de
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>This is not a bug but a possible code cleanup/slight performance improvement.
Just wanted to document my thoughts on it.

We currently use LivePhysRegs as a general purpose register liveness utility.
It is used after register allocation to start at the end of a basic block and
move upwards while maintaining the set of live registers.

LivePhysReg currently tracks live registers, while for most purposes it would
be enough to track liveness of the register units. In fact LivePhysRegs code
comes from a LiveRegUnits class but was changed to track registers in r197253
probably because that was needed by one of the first users
(StackMapLivenessAnalysis).
Looking at our code today I believe most users of LivePhysRegs should work as
well with LiveRegUnits while maintaining a set of register units should be
slightly more efficient than updating a set of live registers. There are also
out of tree targets with a gigantic number of tuple registers which would
certainly need a LiveRegUnits class if they ever need this functionality.

We should also look into the RegScavenger class. Part of what it does is what a
LiveRegUnits class would do, so that we could reuse the LiveRegUnits class in
the RegScavenger.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>