[PATCH 1/1] include: types: Use __builtin_offsetof when supported

Anup Patel anup at brainfault.org
Sat Jul 17 05:52:36 PDT 2021


On Mon, Jul 12, 2021 at 6:10 PM Alex Richardson
<Alexander.Richardson at cl.cam.ac.uk> wrote:
>
> Clang provides a __builtin_offsetof which can be detected using
> __has_builtin().
>
> Signed-off-by: Alex Richardson <Alexander.Richardson at cl.cam.ac.uk>

Looks good to me.

Reviewed-by: Anup Patel <anup.patel at wdc.com>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>  include/sbi/sbi_types.h | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/include/sbi/sbi_types.h b/include/sbi/sbi_types.h
> index 38e3565..7fb1af7 100644
> --- a/include/sbi/sbi_types.h
> +++ b/include/sbi/sbi_types.h
> @@ -68,8 +68,14 @@ typedef unsigned long                physical_size_t;
>  #define likely(x) __builtin_expect((x), 1)
>  #define unlikely(x) __builtin_expect((x), 0)
>
> +#ifndef __has_builtin
> +#define __has_builtin(...) 0
> +#endif
> +
>  #undef offsetof
> -#ifdef __compiler_offsetof
> +#if __has_builtin(__builtin_offsetof)
> +#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE,MEMBER)
> +#elif defined(__compiler_offsetof)
>  #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE,MEMBER)
>  #else
>  #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
> --
> 2.32.0
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list