Commit 3e756a80 authored by unknown's avatar unknown

my_atomic-t.c:

  gcc bug workaround


unittest/mysys/my_atomic-t.c:
  gcc bug workaround
parent 295732b5
...@@ -18,6 +18,13 @@ ...@@ -18,6 +18,13 @@
#include <my_atomic.h> #include <my_atomic.h>
#include <tap.h> #include <tap.h>
/* at least gcc 3.4.5 and 3.4.6 (but not 3.2.3) on RHEL */
#if __GNUC__ == 3 && __GNUC_MINOR__ == 4
#define GCC_BUG_WORKAROUND volatile
#else
#define GCC_BUG_WORKAROUND
#endif
int32 a32,b32,c32; int32 a32,b32,c32;
my_atomic_rwlock_t rwl; my_atomic_rwlock_t rwl;
...@@ -30,7 +37,7 @@ int N; ...@@ -30,7 +37,7 @@ int N;
pthread_handler_t test_atomic_add_handler(void *arg) pthread_handler_t test_atomic_add_handler(void *arg)
{ {
int m=*(int *)arg; int m=*(int *)arg;
int32 x; GCC_BUG_WORKAROUND int32 x;
for (x=((int)((long)(&m))); m ; m--) for (x=((int)((long)(&m))); m ; m--)
{ {
x=x*m+0x87654321; x=x*m+0x87654321;
...@@ -102,7 +109,7 @@ pthread_handler_t test_atomic_swap_handler(void *arg) ...@@ -102,7 +109,7 @@ pthread_handler_t test_atomic_swap_handler(void *arg)
pthread_handler_t test_atomic_cas_handler(void *arg) pthread_handler_t test_atomic_cas_handler(void *arg)
{ {
int m=*(int *)arg, ok; int m=*(int *)arg, ok;
int32 x,y; GCC_BUG_WORKAROUND int32 x,y;
for (x=((int)((long)(&m))); m ; m--) for (x=((int)((long)(&m))); m ; m--)
{ {
my_atomic_rwlock_wrlock(&rwl); my_atomic_rwlock_wrlock(&rwl);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment