<html>
    <head>
      <base href="https://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 --- - unsupported call to function _Z14atomic_cmpxchgPU3AS1Vjjj"
   href="https://llvm.org/bugs/show_bug.cgi?id=26926">26926</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>unsupported call to function _Z14atomic_cmpxchgPU3AS1Vjjj
          </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>normal
          </td>
        </tr>

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

        <tr>
          <th>Component</th>
          <td>OpenCL
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>rivanvx@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>When trying to compile an OpenCL kernel using atomic_cmpxchg() (e.g. one used
in GROMACS [1]), one gets the following error:

<unknown>:0:0: in function nbnxn_kernel_ElecEw_VdwLJ_F_opencl void (i32,
%struct.cl_nbparam_params*, <4 x float> addrspace(1)*, float addrspace(1)*,
float addrspace(1)*, float addrspace(1)*, float addrspace(1)*, i32
addrspace(1)*, float addrspace(1)*, float addrspace(2)*, float addrspace(2)*,
float addrspace(2)*, %struct.nbnxn_sci_t addrspace(1)*, %struct.nbnxn_cj4_t
addrspace(1)*, %struct.nbnxn_excl_t addrspace(1)*, i32, <4 x float>
addrspace(3)*, float addrspace(1)*): unsupported call to function
_Z14atomic_cmpxchgPU3AS1Vjjj

This is a regression. I bisected it down to the following commit:

commit a1ba3c7ed29f02fe3806b662cb8d8201d8e918a2
Author: John McCall <<a href="mailto:rjmccall@apple.com">rjmccall@apple.com</a>>
Date:   Tue Mar 1 22:18:03 2016 +0000

    Mangle extended qualifiers in the proper order and mangle the
    ARC ownership-convention function type modifications.

    According to the Itanium ABI, vendor extended qualifiers are
    supposed to be mangled in reverse-alphabetical order before
    any CVR qualifiers.  The ARC function type conventions are
    plausibly order-significant (they are associated with the
    function type), which permits us to ignore the need to correctly
    inter-order them with any other vendor qualifiers on the parameter
    and return types.

    Implementing these rules correctly is technically an ABI break.
    Apple is comfortable with the risk of incompatibility here for
    the ARC features, and I believe that address-space qualification
    is still uncommon enough to allow us to adopt the conforming
    rule without serious risk.  Still, targets which make heavy
    use of address space qualification may want to revert to the
    non-conforming order.

    git-svn-id: <a href="https://llvm.org/svn/llvm-project/cfe/trunk@262414">https://llvm.org/svn/llvm-project/cfe/trunk@262414</a>
91177308-0d34-0410-b5e6-96231b3b80d8

[1] <a href="http://www.gromacs.org/">http://www.gromacs.org/</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>