]> granicus.if.org Git - gc/commitdiff
Eliminate warning about 64-bit pointer-to-int cast (Win64/pthreads-w32)
authorIvan Maidanski <ivmai@mail.ru>
Wed, 24 Jun 2015 11:51:14 +0000 (14:51 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 24 Jun 2015 11:51:14 +0000 (14:51 +0300)
* 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.

include/private/gc_locks.h
win32_threads.c

index 6507609bd2e8a9f9008d4683ed1809d90f1aaa89..3337b9ec9b2adccb7eedc5fb573ace1cb3ec76d1 100644 (file)
@@ -99,7 +99,7 @@
 #        define NUMERIC_THREAD_ID_UNIQUE
 #      endif
 #    else /* pthreads-win32 */
-#      define NUMERIC_THREAD_ID(id) ((unsigned long)(id.p))
+#      define NUMERIC_THREAD_ID(id) ((unsigned long)(word)(id.p))
        /* Using documented internal details of pthreads-win32 library.  */
        /* Faster than pthread_equal(). Should not change with           */
        /* future versions of pthreads-win32 library.                    */
index 24d07f32899b6bf605dffa6607ef1b215e02c3be..2fed5d4660296135409a82a9b4db45f58d1be1db 100644 (file)
@@ -1744,8 +1744,8 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
 # ifdef GC_PTHREADS_PARAMARK
 #   include <pthread.h>
 
-#   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