Fi.CI.CHECKPATCH: warning for compiler.h: refactor __is_constexpr() into is_const{, _true, _false}()

Vincent Mailhol mailhol.vincent at wanadoo.fr
Tue Dec 3 11:32:28 UTC 2024


Hi checkpatch maintainers,

On Tue, 03 Dec 2024 at 10:19:34, Patchwork <patchwork at emeril.freedesktop.org> wrote:
> == Series Details ==
>
> Series: compiler.h: refactor __is_constexpr() into is_const{,_true,_false}()
> URL   : https://patchwork.freedesktop.org/series/142040/
> State : warning
>
> == Summary ==
>
> Error: dim checkpatch failed
> 65c5a73cbdd2 compiler.h: add statically_false()
> 25d8e6973c58 compiler.h: add is_const() as a replacement of __is_constexpr()
> -:75: CHECK:SPACING: spaces preferred around that '*' (ctx:WxO)
> #75: FILE: include/linux/compiler.h:349:
> +	_Generic(0 ? (void *)(long)(x) : (char *)0, char *: 1, void *: 0)
>  	                                                 ^
>
> -:75: ERROR:SPACING: spaces required around that ':' (ctx:OxW)
> #75: FILE: include/linux/compiler.h:349:
> +	_Generic(0 ? (void *)(long)(x) : (char *)0, char *: 1, void *: 0)
>  	                                                  ^
>
> -:75: CHECK:SPACING: spaces preferred around that '*' (ctx:WxO)
> #75: FILE: include/linux/compiler.h:349:
> +	_Generic(0 ? (void *)(long)(x) : (char *)0, char *: 1, void *: 0)
>  	                                                            ^
>
> -:75: ERROR:SPACING: spaces required around that ':' (ctx:OxW)
> #75: FILE: include/linux/compiler.h:349:
> +	_Generic(0 ? (void *)(long)(x) : (char *)0, char *: 1, void *: 0)
>  	                                                             ^
>
> -:75: CHECK:CAMELCASE: Avoid CamelCase: <_Generic>
> #75: FILE: include/linux/compiler.h:349:
> +	_Generic(0 ? (void *)(long)(x) : (char *)0, char *: 1, void *: 0)

I submitted a patch which contained a _Generic() selection [1] and got
above checkpatch warnings and errors.

Before blindly fixing those, I wanted to discuss this with you because
it looks like a false positive to me.

I think that the _Generic() selection should follow the switch case or
the goto label style, that is to say, no space before the colon.

For example:

  _Generic(foo,
	   char: 0,
	   short: 1,
	   char *: 2,
	   short *: 3,
	   default: 4);

instead of:

  _Generic(foo,
	   char : 0,
	   short : 1,
	   char * : 2,
	   short * : 3,
	   default : 4);

The fact is that the introduction of _Generic in the kernel is fairly
recent (can be used since July 2020 following the bump to GCC 4.9 in [2]).
So I guess that it is just that the _Generic()s where never considered
in checkpatch.pl.

I would have liked to send a fix, but I am not fluent in perl, so the
best I have to offer is this report.

Let me know if it is acceptable to ignore those checkpatch errors :)

[1] compiler.h: add is_const() as a replacement of __is_constexpr()
Link: https://lore.kernel.org/intel-gfx/20241203-is_constexpr-refactor-v1-2-4e4cbaecc216@wanadoo.fr/

[2] commit 6ec4476ac825 ("Raise gcc version requirement to 4.9")
Link: https://git.kernel.org/torvalds/c/6ec4476ac825


Yours sincerely,
Vincent Mailhol


More information about the Intel-gfx mailing list