[PATCH 1/4] x86: Simplify TCB access expressions

Andreas Schwab schwab@suse.de
Thu Sep 25 09:19:50 GMT 2025


On Sep 25 2025, Uros Bizjak wrote:

> index 445f328ac2..92b2da6cc6 100644
> --- a/sysdeps/x86_64/nptl/tcb-access.h
> +++ b/sysdeps/x86_64/nptl/tcb-access.h
> @@ -23,8 +23,7 @@
>  		     || sizeof (descr->member) == 4			      \
>  		     || sizeof (descr->member) == 8,			      \
>  		     "size of per-thread data");			      \
> -     (*(__typeof (descr->member) __seg_fs *)				      \
> -      offsetof (struct pthread, member));				      \
> +     ((__typeof (*descr) __seg_fs *)0)->member;				      \
>    })
>  
>  #define THREAD_GETMEM_VOLATILE(descr, member) \
> @@ -33,8 +32,8 @@
>  		     || sizeof (descr->member) == 4			      \
>  		     || sizeof (descr->member) == 8,			      \
>  		     "size of per-thread data");			      \
> -     (*(volatile __typeof (descr->member) __seg_fs *)			      \
> -      offsetof (struct pthread, member));				      \
> +     *(volatile __typeof (descr->member) __seg_fs *)			      \
> +       &((__typeof (*descr) __seg_fs *)0)->member;			      \

I think this can be simplified further if we add volatile in the inner
cast and drop the outer cast:

+       ((volatile __typeof (*descr) __seg_fs *)0)->member;		      \

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


More information about the Libc-alpha mailing list