Permalink
Browse files

Atomic_Win32: Replace deprecated (and since been removed) barrier int…

…rinsics

As of VS 15.7, these seem to have been removed. Given we shouldn't have
been using these for some time, just replace them with the standard
library equivalent.

This fixes building on Windows with VS 15.7
  • Loading branch information...
lioncash committed May 9, 2018
1 parent 5cd02f0 commit 593bad3253c058a977e8413b919ff0a14442825b
Showing with 7 additions and 3 deletions.
  1. +7 −3 Source/Core/Common/Atomic_Win32.h
@@ -8,6 +8,7 @@
#include <Windows.h>
#include <atomic>
#include "Common/CommonTypes.h"
// Atomic operations are performed in a single step by the CPU. It is
@@ -64,8 +65,10 @@ inline T AtomicLoad(volatile T& src)
template <typename T>
inline T AtomicLoadAcquire(volatile T& src)
{
T result = src; // 32-bit reads are always atomic.
_ReadBarrier(); // Compiler instruction only. x86 loads always have acquire semantics.
// 32-bit reads are always atomic.
T result = src;
// Compiler instruction only. x86 loads always have acquire semantics.
std::atomic_thread_fence(std::memory_order_acquire);
return result;
}
@@ -78,7 +81,8 @@ inline void AtomicStore(volatile T& dest, U value)
template <typename T, typename U>
inline void AtomicStoreRelease(volatile T& dest, U value)
{
_WriteBarrier(); // Compiler instruction only. x86 stores always have release semantics.
// Compiler instruction only. x86 stores always have release semantics.
std::atomic_thread_fence(std::memory_order_release);
dest = (T)value; // 32-bit writes are always atomic.
}

0 comments on commit 593bad3

Please sign in to comment.