git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] compat/posix.h: enable UNUSED warning messages for Clang

From
Patrick Steinhardt <ps@pks.im>
Date
Jun 5, 2026, 10:40 UTC
Message-ID
<aiKnqlI7WdcskDAs@pks.im>
In-Reply-To
<20260605094647.94805-1-dominik.loidolt@univie.ac.at>
On Fri, Jun 05, 2026 at 11:46:47AM +0200, Dominik Loidolt wrote:
Show 5 quoted lines
> Use a dedicated Clang version check for the UNUSED macro.
> 
> Commit 7c07f36ad2 (git-compat-util.h: GCC deprecated message arg only in
> GCC 4.5+, 2022-10-05) restricted use of the deprecated attribute's
> message argument in the UNUSED macro to GCC 4.5 or newer.

Ah. I was briefly wondering about this because the UNUSED macro already works. But the important part here is that it's really only about better diagnostics via the attribute message.

> Clang identifies itself as GNUC 4.2.1 for compatibility, so
> GIT_GNUC_PREREQ(4, 5) does not detect whether Clang supports the
> deprecated("...") form. Add GIT_CLANG_PREREQ() macro and use it to
> enable the UNUSED warning message for Clang 2.9 and newer.

There's a second user of `GIT_GNUC_PREREQ` in "git-compat-util.h", but that user checks for GCC 3.1. And as Clang identifies as a newer version we don't have to adapt any other callsites.

Show 11 quoted lines
> diff --git a/compat/posix.h b/compat/posix.h
> index faaae1b655..88ad29d74b 100644
> --- a/compat/posix.h
> +++ b/compat/posix.h
> @@ -22,6 +22,17 @@
>   #define GIT_GNUC_PREREQ(maj, min) 0
>  #endif
> 
> +/*
> + * Similar for Clang
> + */

Micronit, not worth rerolling over: this could have easily been a single line: `/* Similar for Clang. */`

Show 20 quoted lines
> +#if defined(__clang__) && defined(__clang_minor__) && defined(__clang_major__)
> +# define GIT_CLANG_PREREQ(maj, min) \
> +	((__clang_major__ > (maj)) || \
> +	 (__clang_major__ == (maj) && (__clang_minor__ >= (min))))
> +#else
> +# define GIT_CLANG_PREREQ(maj, min) 0
> +#endif
> +
>  /*
>   * UNUSED marks a function parameter that is always unused.  It also
>   * can be used to annotate a function, a variable, or a type that is
> @@ -35,7 +46,7 @@
>   * When a parameter may be used or unused, depending on conditional
>   * compilation, consider using MAYBE_UNUSED instead.
>   */
> -#if GIT_GNUC_PREREQ(4, 5)
> +#if GIT_GNUC_PREREQ(4, 5) || GIT_CLANG_PREREQ(2, 9)
>  #define UNUSED __attribute__((unused)) \
>  	__attribute__((deprecated ("parameter declared as UNUSED")))
>  #elif defined(__GNUC__)
Makes sense, thanks!
Patrick
Previous: Dominik LoidoltNext: Dominik Loidolt
Message 6 of 20 in “compat/posix.h: enable UNUSED warning messages for Clang”
  1. compat/posix.h: enable UNUSED warning messages for ClangDominik Loidolt, May 3, 2026
  2. Junio C HamanoMay 4, 2026
  3. Junio C HamanoMay 4, 2026
  4. Dominik LoidoltJun 5, 2026
  5. compat/posix.h: enable UNUSED warning messages for ClangDominik Loidolt, Jun 5, 2026
  6. Patrick SteinhardtJun 5, 2026
  7. Dominik LoidoltJun 5, 2026
  8. Patrick SteinhardtJun 5, 2026
  9. Dominik LoidoltJun 5, 2026
  10. Patrick SteinhardtJun 8, 2026
  11. 1/2 compat/posix.h: enable UNUSED warning messages for ClangDominik Loidolt, Jun 8, 2026
  12. 2/2 compat/posix.h: simplify GIT_GNUC_PREREQ() comparisonDominik Loidolt, Jun 8, 2026
  13. Patrick SteinhardtJun 12, 2026
  14. Dominik LoidoltJun 12, 2026
  15. 0/3 compat/posix.h: enable UNUSED warning messages for ClangDominik Loidolt, Jun 13, 2026
  16. 2/3 compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSEDDominik Loidolt, Jun 13, 2026
  17. 1/3 compat/posix.h: enable UNUSED warning messages for ClangDominik Loidolt, Jun 13, 2026
  18. 3/3 compat/posix.h: simplify GIT_GNUC_PREREQ() comparisonDominik Loidolt, Jun 13, 2026
  19. Junio C HamanoJun 13, 2026
  20. Patrick SteinhardtJun 15, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.