<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:awg@embtoolkit.org" title="Abdoulaye Walsimou GAYE <awg@embtoolkit.org>"> <span class="fn">Abdoulaye Walsimou GAYE</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Clang++ fails compiling on a RPi with sqlite3 library"
   href="http://llvm.org/bugs/show_bug.cgi?id=15429">bug 15429</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>RESOLVED
           </td>
           <td>REOPENED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>FIXED
           </td>
           <td>---
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Clang++ fails compiling on a RPi with sqlite3 library"
   href="http://llvm.org/bugs/show_bug.cgi?id=15429#c18">Comment # 18</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Clang++ fails compiling on a RPi with sqlite3 library"
   href="http://llvm.org/bugs/show_bug.cgi?id=15429">bug 15429</a>
              from <span class="vcard"><a class="email" href="mailto:awg@embtoolkit.org" title="Abdoulaye Walsimou GAYE <awg@embtoolkit.org>"> <span class="fn">Abdoulaye Walsimou GAYE</span></a>
</span></b>
        <pre>This fix does not allow atomic operations for pre v6 devices, as GCC does.

Attched, proposed improvement patch for ARM devices older than v6.
GCC supports up to 4 bytes atomic operations, through libgcc, for devices older
than v6.

Compile and runtime tested on arm926ej-s(armv5te) with various uint{x}_t with
the following code:

#include <stdio.h>
#include <stdint.h>
typedef uint32_t _Atomic_word;

_Atomic_word exchange_and_add(volatile _Atomic_word *__mem, _Atomic_word __val)
{
    return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL);
}
int main()
{
    _Atomic_word test = 40;
    _Atomic_word ret;
    _Atomic_word val = 10;

    ret = exchange_and_add(&test, val);
    printf("RET = %u\n", test);

    return 0;
}</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>