--- generic-msvc.h.orig 2017-10-14 07:05:40.172907200 +0900 +++ generic-msvc.h 2017-10-14 07:12:40.786820600 +0900 @@ -82,7 +82,7 @@ { bool ret; uint64 current; - current = _InterlockedCompareExchange64(&ptr->value, newval, *expected); + current = _InterlockedCompareExchange64((int64*)&ptr->value, newval, *expected); ret = current == *expected; *expected = current; return ret; @@ -96,7 +96,7 @@ static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { - return _InterlockedExchangeAdd64(&ptr->value, add_); + return _InterlockedExchangeAdd64((int64*)&ptr->value, add_); } #endif /* _WIN64 */