tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] About stdatomic


From: kbkpbot
Subject: [Tinycc-devel] About stdatomic
Date: Mon, 05 Feb 2024 08:51:13 +0800

About stdatomic:

In lib/stdatomic.c, I found that the atomic_load/atomic_store :

#define ATOMIC_LOAD(TYPE, MODE) \
    TYPE __atomic_load_##MODE(const volatile void *atom, int memorder) \
    { \
        return *(volatile TYPE *)atom; \
    }

#define ATOMIC_STORE(TYPE, MODE) \
    void __atomic_store_##MODE(volatile void *atom, TYPE value, int memorder) \
    { \
        *(volatile TYPE *)atom = value; \
    }


I think it is better to ensure atomic_load get latest value, as follow:

#define ATOMIC_LOAD(TYPE, MODE) \
    TYPE __atomic_load_##MODE(const volatile void *atom, int memorder) \
    { \
        __atomic_thread_fence(__ATOMIC_ACQUIRE); \
        return *(volatile TYPE *)atom; \
    }

#define ATOMIC_STORE(TYPE, MODE) \
    void __atomic_store_##MODE(volatile void *atom, TYPE value, int memorder) \
    { \
        *(volatile TYPE *)atom = value; \
        __atomic_thread_fence(__ATOMIC_RELEASE); \
    }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]