mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-18 13:09:32 +03:00
Fix clang-cl compilation
This commit is contained in:
parent
9ec5da08b2
commit
10d3bbd513
2 changed files with 16 additions and 10 deletions
|
@ -115,14 +115,14 @@ static inline intptr_t mi_atomic_subi(_Atomic(intptr_t)*p, intptr_t sub);
|
||||||
#define mi_atomic_exchange_ptr_release(tp,p,x) mi_atomic_exchange_release(p,(tp*)x)
|
#define mi_atomic_exchange_ptr_release(tp,p,x) mi_atomic_exchange_release(p,(tp*)x)
|
||||||
#define mi_atomic_exchange_ptr_acq_rel(tp,p,x) mi_atomic_exchange_acq_rel(p,(tp*)x)
|
#define mi_atomic_exchange_ptr_acq_rel(tp,p,x) mi_atomic_exchange_acq_rel(p,(tp*)x)
|
||||||
#else
|
#else
|
||||||
#define mi_atomic_store_ptr_release(tp,p,x) mi_atomic_store_release(p,x)
|
#define mi_atomic_store_ptr_release(tp,p,x) (tp*)mi_atomic_store_release(p,x)
|
||||||
#define mi_atomic_store_ptr_relaxed(tp,p,x) mi_atomic_store_relaxed(p,x)
|
#define mi_atomic_store_ptr_relaxed(tp,p,x) (tp*)mi_atomic_store_relaxed(p,x)
|
||||||
#define mi_atomic_cas_ptr_weak_release(tp,p,exp,des) mi_atomic_cas_weak_release(p,exp,des)
|
#define mi_atomic_cas_ptr_weak_release(tp,p,exp,des) (tp*)mi_atomic_cas_weak_release(p,exp,des)
|
||||||
#define mi_atomic_cas_ptr_weak_acq_rel(tp,p,exp,des) mi_atomic_cas_weak_acq_rel(p,exp,des)
|
#define mi_atomic_cas_ptr_weak_acq_rel(tp,p,exp,des) (tp*)mi_atomic_cas_weak_acq_rel(p,exp,des)
|
||||||
#define mi_atomic_cas_ptr_strong_release(tp,p,exp,des) mi_atomic_cas_strong_release(p,exp,des)
|
#define mi_atomic_cas_ptr_strong_release(tp,p,exp,des) (tp*)mi_atomic_cas_strong_release(p,exp,des)
|
||||||
#define mi_atomic_exchange_ptr_relaxed(tp,p,x) mi_atomic_exchange_relaxed(p,x)
|
#define mi_atomic_exchange_ptr_relaxed(tp,p,x) (tp*)mi_atomic_exchange_relaxed(p,x)
|
||||||
#define mi_atomic_exchange_ptr_release(tp,p,x) mi_atomic_exchange_release(p,x)
|
#define mi_atomic_exchange_ptr_release(tp,p,x) (tp*)mi_atomic_exchange_release(p,x)
|
||||||
#define mi_atomic_exchange_ptr_acq_rel(tp,p,x) mi_atomic_exchange_acq_rel(p,x)
|
#define mi_atomic_exchange_ptr_acq_rel(tp,p,x) (tp*)mi_atomic_exchange_acq_rel(p,x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// These are used by the statistics
|
// These are used by the statistics
|
||||||
|
@ -145,7 +145,13 @@ static inline void mi_atomic_maxi64_relaxed(volatile int64_t* p, int64_t x) {
|
||||||
|
|
||||||
|
|
||||||
#elif defined(_MSC_VER)
|
#elif defined(_MSC_VER)
|
||||||
|
#ifdef __clang__ // clang_cl
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
#define mi_atomic_exchange_ptr_relaxed(tp,p,x) mi_atomic_exchange_relaxed(p,(tp*)x)
|
||||||
|
#else
|
||||||
|
#define mi_atomic_exchange_ptr_relaxed(tp,p,x) (tp*)mi_atomic_exchange_relaxed(p,x)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
// Legacy MSVC plain C compilation wrapper that uses Interlocked operations to model C11 atomics.
|
// Legacy MSVC plain C compilation wrapper that uses Interlocked operations to model C11 atomics.
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
|
|
|
@ -128,7 +128,7 @@ mi_decl_nodiscard mi_decl_export bool mi_is_in_heap_region(const void* p) mi_att
|
||||||
|
|
||||||
void _mi_segment_map_unsafe_destroy(void) {
|
void _mi_segment_map_unsafe_destroy(void) {
|
||||||
for (size_t i = 0; i < MI_SEGMENT_MAP_MAX_PARTS; i++) {
|
for (size_t i = 0; i < MI_SEGMENT_MAP_MAX_PARTS; i++) {
|
||||||
mi_segmap_part_t* part = mi_atomic_exchange_ptr_relaxed(mi_segmap_part_t, &mi_segment_map[i], NULL);
|
mi_segmap_part_t* part = mi_atomic_exchange_ptr_relaxed(mi_segmap_part_t, &mi_segment_map[i], 0);
|
||||||
if (part != NULL) {
|
if (part != NULL) {
|
||||||
_mi_os_free(part, sizeof(mi_segmap_part_t), part->memid);
|
_mi_os_free(part, sizeof(mi_segmap_part_t), part->memid);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue