Subject: Re: [PATCH] refs: forbid clang to complain about unreachable code

From: Junio C Hamano <[email-masked]>
Date: Fri, 10 Oct 2025 08:48:56 -0700

Patrick Steinhardt <[email-masked]> writes:

> An alternative could be to fix this at the source, e.g. like the below
> (untested) patch. But I don't mind this too much, especially given that
> this here is the only callsite of that function anyway. So please feel
> free to disregard.
>
> Thanks!

Indeed that is much nicer as it targets only NO_SYMLINK_HEAD case
without affecting the other side of #ifdef/#else/#endif but as you
say, I think this falls into "once the code is written one way, it
is not worth revisiting to change it with more iterations" category.

Thanks for very sharp eyes, nevertheless.

> diff --git a/refs/files-backend.c b/refs/files-backend.c
> index bb2bec3807..cb402a2a54 100644
> --- a/refs/files-backend.c
> +++ b/refs/files-backend.c
> @@ -2115,7 +2115,7 @@ static int commit_ref_update(struct files_ref_store *refs,
>  }
>  
>  #ifdef NO_SYMLINK_HEAD
> -#define create_ref_symlink(a, b) (-1)
> +#define create_ref_symlink(a, b) NOT_CONSTANT(-1)
>  #else
>  static int create_ref_symlink(struct ref_lock *lock, const char *target)
>  {