(AIO_MISC_WAIT): Work around gcc being to clever and reloading the futex value where...
authorUlrich Drepper <drepper@redhat.com>
Sun, 8 Jan 2006 01:51:18 +0000 (01:51 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 8 Jan 2006 01:51:18 +0000 (01:51 +0000)
nptl/sysdeps/pthread/aio_misc.h

index 5aeb34e..f285083 100644 (file)
@@ -35,6 +35,7 @@
 
 #define AIO_MISC_WAIT(result, futex, timeout, cancel)                        \
   do {                                                                       \
+    volatile int *futexaddr = &futex;                                        \
     int oldval = futex;                                                              \
                                                                              \
     if (oldval != 0)                                                         \
        int status;                                                           \
        do                                                                    \
          {                                                                   \
-           status = lll_futex_timed_wait (&futex, oldval, timeout);          \
+           status = lll_futex_timed_wait (futexaddr, oldval, timeout);       \
            if (status != -EWOULDBLOCK)                                       \
              break;                                                          \
                                                                              \
-           oldval = futex;                                                   \
+           oldval = *futexaddr;                                              \
          }                                                                   \
        while (oldval != 0);                                                  \
                                                                              \