(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.
# 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. */
# 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
/* start_mark_threads is the same as in pthread_support.c except */