<html>
    <head>
      <base href="http://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 --- - clang shouldn't use aligned SSE instructions on 32bit linux"
   href="http://llvm.org/bugs/show_bug.cgi?id=21414">21414</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>clang shouldn't use aligned SSE instructions on 32bit linux
          </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>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>Backend: X86
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>nicolasweber@gmx.de
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>We recently enabled clang as default compiler for chrome on linux. It mostly
went well. One problem we ran into was that chrome 38 crashed on old debians.
rnk explained this to me, and from what I understand (I probably got some of it
wrong) it was due to clang using aligned SSE instructions.

gcc changed their alignment abi on linux a while ago, and the current abi does
guarantee alignment. The old one doesn't, and I suppose on debian system
libraries still use the old abi. gcc emits unaligned SSE loads on 32bit linux,
clang should too.

As is, every provider of binary-distributed binaries on linux will run into
this and then work around it somehow. We ended up adding tons of stack
adjustments, which bloats binary size, is bad for the icache, etc. Unaligned
SSE reads are almost as fast as aligned ones, so clang should do the thing that
Just Works instead of giving a bad user experience to its users.

<a href="https://code.google.com/p/nativeclient/issues/detail?id=3935">https://code.google.com/p/nativeclient/issues/detail?id=3935</a></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>