<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </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 - [CompileTime] Speed up SSA renaming"
   href="https://bugs.llvm.org/show_bug.cgi?id=41240">41240</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[CompileTime] Speed up SSA renaming
          </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>Scalar Optimizations
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>florian_hahn@apple.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Currently LLVM does not do SSA renaming as efficiently as it could do. In some
places, like Mem2Reg, we use custom renaming implementations and at other
places we use SSAUpdater, which has to traverse the CFG for each renamed
variable, to decide where to place PHIs.

For bulk updates, like in Mem2Reg, we could use merge sets as described in Das
and Ramakrishna's paper (Dibyendu Das and U. Ramakrishna. 2005. A practical and
fast iterative algorithm for φ-function computation using DJ graphs) to
efficiently find the points where PHI nodes are needed, rather than using IDF,
which potentially has to traverse the full CFG for each variable.

This can be combined with a renamer similar to the one in PredicateInfo, which
does renaming in O(log(Uses to rename)).

The related PRs will be sped up by this infrastructure.</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>