<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 --- - miscompilation of shared mem linked list code"
   href="http://llvm.org/bugs/show_bug.cgi?id=20094">20094</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>miscompilation of shared mem linked list code
          </td>
        </tr>

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

        <tr>
          <th>Version</th>
          <td>3.4
          </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>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>markokr@gmail.com
          </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>Created <span class=""><a href="attachment.cgi?id=12690" name="attach_12690" title="code that fails">attachment 12690</a> <a href="attachment.cgi?id=12690&action=edit" title="code that fails">[details]</a></span>
code that fails

clang miscompiles shlist_remove() function in attached code.

when removing only element from list, both structs should end up with zeroes,
but clang code fails.

uncommenting the magic printf() or disabling optimizations will fix it.

$ clang -v
Ubuntu clang version 3.4.1-1~exp1 (branches/release_34) (based on LLVM 3.4.1)
Target: x86_64-pc-linux-gnu
$ clang -O shlist.c
$ ./a.out
after remove:
  list: 16 / 16
  node: 0 / 0
fail: list
$ clang -O0 shlist.c
$ ./a.out
after remove:
  list: 0 / 0
  node: 0 / 0
OK</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>