* 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.
# 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. */
# 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