From: Ivan Maidanski Date: Wed, 24 Jun 2015 11:51:14 +0000 (+0300) Subject: Eliminate warning about 64-bit pointer-to-int cast (Win64/pthreads-w32) X-Git-Tag: gc7_4_4~86 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0cda718699b8c7bb0a157f7277e2adb1c4a98fe2;p=gc Eliminate warning about 64-bit pointer-to-int cast (Win64/pthreads-w32) (Apply commit 6936df7 from 'master' branch.) * include/private/gc_locks.h (NUMERIC_THREAD_ID): Cast to unsigned long through "word" type if GC_WIN32_PTHREADS but not winpthreads (to suppress "cast from pointer to integer of different size" compiler warning). * win32_threads.c (NUMERIC_THREAD_ID): Likewise. * win32_threads.c (NUMERIC_THREAD_ID): Do not define unless GC_ASSERTIONS. --- diff --git a/include/private/gc_locks.h b/include/private/gc_locks.h index 328d13c2..bea28811 100644 --- a/include/private/gc_locks.h +++ b/include/private/gc_locks.h @@ -92,7 +92,7 @@ # define THREAD_EQUAL(id1, id2) ((id1) == (id2)) # define NUMERIC_THREAD_ID_UNIQUE # else -# define NUMERIC_THREAD_ID(id) ((unsigned long)(id.p)) +# define NUMERIC_THREAD_ID(id) ((unsigned long)(word)(id.p)) /* Using documented internal details of win32-pthread library. */ /* Faster than pthread_equal(). Should not change with */ /* future versions of win32-pthread library. */ diff --git a/win32_threads.c b/win32_threads.c index bfaca358..42c4920f 100644 --- a/win32_threads.c +++ b/win32_threads.c @@ -1728,8 +1728,9 @@ GC_INNER void GC_get_next_stack(char *start, char *limit, # ifdef GC_PTHREADS_PARAMARK # include -# ifndef NUMERIC_THREAD_ID -# define NUMERIC_THREAD_ID(id) (unsigned long)GC_PTHREAD_PTRVAL(id) +# if defined(GC_ASSERTIONS) && !defined(NUMERIC_THREAD_ID) +# define NUMERIC_THREAD_ID(id) (unsigned long)(word)GC_PTHREAD_PTRVAL(id) + /* Id not guaranteed to be unique. */ # endif /* start_mark_threads is the same as in pthread_support.c except */