<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 --- - 128-bit atomic load produces ICE/bad results compared to GCC 4.9.1"
   href="http://llvm.org/bugs/show_bug.cgi?id=20663">20663</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>128-bit atomic load produces ICE/bad results compared to GCC 4.9.1
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </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>release blocker
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>michael.champigny@simplivity.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=12898" name="attach_12898" title="Simple 128-bit atomic load assembler code">attachment 12898</a> <a href="attachment.cgi?id=12898&action=edit" title="Simple 128-bit atomic load assembler code">[details]</a></span>
Simple 128-bit atomic load assembler code

I wrote a small assembly version of a 128-bit atomic load using the cmpxchg16b
instruction. I tested with both gcc 4.9.1 and clang 3.5.

On gcc, the results were as expected. For clang, the results were either
incorrect or generated an ICE depending on the optimizer flags I used. For this
example, I used "-O1". You can see the command line I used for both compilers
at the top of the attached source code file.

The use of the "-O1" flag generates an ICE in clang. If you change the flag (to
say, -O3) the compiler generates the executable but when run the results are
incorrect (as compared to the gcc version).

The code was tested on Ubuntu 14.04. I can send more information if needed.</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>