#if defined (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
refs = __sync_add_and_fetch (&p_gc->refs, 1);
#elif defined (WIN32) && defined (__GNUC__)
- refs = __builtin_choose_expr (sizeof (uintptr_t) == 4,
- InterlockedIncrement (&p_gc->refs),
- InterlockedIncrement64 (&p_gc->refs));
+ refs = InterlockedIncrement (&p_gc->refs);
+#elif defined (WIN64) && defined (__GNUC__)
+ refs = InterlockedIncrement64 (&p_gc->refs);
#elif defined(__APPLE__)
refs = OSAtomicIncrement32Barrier((int*)&p_gc->refs);
#else
#if defined (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
refs = __sync_sub_and_fetch (&p_gc->refs, 1);
#elif defined (WIN32) && defined (__GNUC__)
- refs = __builtin_choose_expr (sizeof (uintptr_t) == 4,
- InterlockedDecrement (&p_gc->refs),
- InterlockedDecrement64 (&p_gc->refs));
+ refs = InterlockedDecrement (&p_gc->refs);
+#elif defined (WIN64) && defined (__GNUC__)
+ refs = InterlockedDecrement64 (&p_gc->refs);
#elif defined(__APPLE__)
refs = OSAtomicDecrement32Barrier((int*)&p_gc->refs);
#else