<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 - LLVM_LINK_LLVM_DYLIB builds are 5~8% slower"
   href="https://bugs.llvm.org/show_bug.cgi?id=39105">39105</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>LLVM_LINK_LLVM_DYLIB builds are 5~8% slower
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

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

        <tr>
          <th>OS</th>
          <td>Linux
          </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>new bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>mh+llvm@glandium.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>For Firefox builds, we used to build clang without LLVM_LINK_LLVM_DYLIB and
recently switched it on to make the archive that is installed on every build
smaller (and faster to install). Anyways, the result of this change is that
building Firefox became between 5 and 8% slower as a consequence, which is
rather large (especially considering a large portion of build time is spent
doing things that aren't compiling C/C++).

It turns out this is because libLLVM exports a lot of symbols, and internal use
of those symbols all go through the PLT, increasing intra-libLLVM function call
overhead significantly.

FWIW, linking with -Wl,-Bsymbolic alleviates this.</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>