[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 01/10] qemu/atomic: Use macros for CONFIG_ATOMIC64
From: |
Peter Maydell |
Subject: |
Re: [PATCH v3 01/10] qemu/atomic: Use macros for CONFIG_ATOMIC64 |
Date: |
Mon, 19 Jul 2021 13:01:05 +0100 |
On Sat, 17 Jul 2021 at 20:24, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Clang warnings about questionable atomic usage get localized
> to the inline function in atomic.h. By using a macro, we get
> the full traceback to the original use that caused the warning.
>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> include/qemu/atomic.h | 25 +++++--------------------
> 1 file changed, 5 insertions(+), 20 deletions(-)
>
> diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h
> index 3ccf84fd46..99d6030095 100644
> --- a/include/qemu/atomic.h
> +++ b/include/qemu/atomic.h
> @@ -457,26 +457,11 @@
>
> /* Abstractions to access atomically (i.e. "once") i64/u64 variables */
> #ifdef CONFIG_ATOMIC64
> -static inline int64_t qatomic_read_i64(const int64_t *ptr)
> -{
> - /* use __nocheck because sizeof(void *) might be < sizeof(u64) */
> - return qatomic_read__nocheck(ptr);
> -}
> -
> -static inline uint64_t qatomic_read_u64(const uint64_t *ptr)
> -{
> - return qatomic_read__nocheck(ptr);
> -}
> -
> -static inline void qatomic_set_i64(int64_t *ptr, int64_t val)
> -{
> - qatomic_set__nocheck(ptr, val);
> -}
> -
> -static inline void qatomic_set_u64(uint64_t *ptr, uint64_t val)
> -{
> - qatomic_set__nocheck(ptr, val);
> -}
> +/* Use __nocheck because sizeof(void *) might be < sizeof(u64) */
> +#define qatomic_read_i64 qatomic_read__nocheck
> +#define qatomic_read_u64 qatomic_read__nocheck
> +#define qatomic_set_i64 qatomic_set__nocheck
> +#define qatomic_set_u64 qatomic_set__nocheck
Previously if you tried to do qatomic_set_i64() etc on something
that wasn't an int64_t*, the compiler would complain. Now it will
silently store a different-sized value, I think. Is there a way
to retain the typechecking in the macro versions?
thanks
-- PMM
- [PATCH v3 00/10] Atomic cleanup + clang-12 build fix, Richard Henderson, 2021/07/17
- [PATCH v3 01/10] qemu/atomic: Use macros for CONFIG_ATOMIC64, Richard Henderson, 2021/07/17
- Re: [PATCH v3 01/10] qemu/atomic: Use macros for CONFIG_ATOMIC64,
Peter Maydell <=
- [PATCH v3 03/10] qemu/atomic: Add aligned_{int64,uint64}_t types, Richard Henderson, 2021/07/17
- [PATCH v3 04/10] tcg: Rename helper_atomic_*_mmu and provide for user-only, Richard Henderson, 2021/07/17
- [PATCH v3 02/10] qemu/atomic: Remove pre-C11 atomic fallbacks, Richard Henderson, 2021/07/17
- [PATCH v3 06/10] accel/tcg: Fold EXTRA_ARGS into atomic_template.h, Richard Henderson, 2021/07/17