[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