Issue |
146205
|
Summary |
[rpmalloc] Fake atomic operations in case of MSVC
|
Labels |
|
Assignees |
|
Reporter |
slydiman
|
In case of MSVC dummy functions are used for atomic operations.
This can cause side effects and difficult to debug issues.
```
/// Atomic access abstraction (since MSVC does not do C11 yet)
#if defined(_MSC_VER) && !defined(__clang__)
typedef volatile long atomic32_t;
static FORCEINLINE int32_t atomic_load32(atomic32_t *src) { return *src; }
static FORCEINLINE void atomic_store32(atomic32_t *dst, int32_t val) {
*dst = val;
}
```
Is there any reason do not use intrinsics somethink like the following?
```
#include <intrin.h>
static FORCEINLINE int32_t atomic_load32(atomic32_t *src) {
return _InterlockedOr(src, 0);
}
static FORCEINLINE void atomic_store32(atomic32_t *dst, int32_t val) {
_InterlockedExchange(dst, val);
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs