Re: git: 9d87c1aac4a8 - main - libc: Add missing kill_dependency macro

From: Konstantin Belousov <kib_at_freebsd.org>
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.