Re: git: 9d87c1aac4a8 - main - libc: Add missing kill_dependency macro
Date: Sat, 20 Jun 2026 10:55:20 UTC
On Sat, Jun 20, 2026 at 12:24:52AM +0000, Warner Losh wrote:
> The branch main has been updated by imp:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=9d87c1aac4a84ac5e82acf872f645a7202977204
>
> commit 9d87c1aac4a84ac5e82acf872f645a7202977204
> Author: Faraz Vahedi <kfv@kfv.io>
> AuthorDate: 2026-05-01 15:41:49 +0000
> Commit: Warner Losh <imp@FreeBSD.org>
> CommitDate: 2026-06-20 00:23:28 +0000
>
> libc: Add missing kill_dependency macro
>
> Add `kill_dependency` as specified by C11 ยง7.17.3.1.
>
> The macro is required to break dependency chains in
> expressions without affecting the value.
>
> No functional impact beyond providing the required,
> value-preserving definition.
>
> Signed-off-by: Faraz Vahedi <kfv@kfv.io>
> Reviewed by: imp
> Pull Request: https://github.com/freebsd/freebsd-src/pull/2185
> ---
> sys/sys/stdatomic.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/sys/sys/stdatomic.h b/sys/sys/stdatomic.h
> index 2d565ce991be..e6eb46cd6ef3 100644
> --- a/sys/sys/stdatomic.h
> +++ b/sys/sys/stdatomic.h
> @@ -141,6 +141,8 @@ typedef enum {
> memory_order_seq_cst = __ATOMIC_SEQ_CST
> } memory_order;
>
> +#define kill_dependency(y) (y)
> +
GCC at least with the version 16 uses a different definition for the
kill_dependency(), which might have some side effects for the gcc
optimizers:
#define kill_dependency(Y) \
__extension__ \
({ \
__auto_type __kill_dependency_tmp = (Y); \
__kill_dependency_tmp; \
})
Since the semantic for kill_dependency() is believed to be not well
defined, I think we should provide gcc-compliant definition at least
for gcc.