Re: [PATCH 1/2] x86/bootflag: Change some static functions to bool

From: Jiri Slaby
Date: Mon Feb 24 2025 - 02:48:30 EST


On 24. 02. 25, 8:39, Uros Bizjak wrote:
The internal compiler representation of the following testcase:

_Bool foo (int x) { return x; }

is:

--cut here--
_Bool foo (int x)
{
_Bool _2;

<bb 2> [local count: 1073741824]:
_2 = x_1(D) != 0;
return _2;

Yes, exactly as dictated by the C99 standard.

}
--cut here--

For me, !!x in the source means that the change of types was
intentional. Surely, the compiler can do it by itself, so at the end
of the day, it is just a matter of personal taste.

I've just learnt, that we even have that in CodingStyle:
===
17) Using bool
--------------

The Linux kernel bool type is an alias for the C99 _Bool type. bool values can
only evaluate to 0 or 1, and implicit or explicit conversion to bool
automatically converts the value to true or false. When using bool types the
!! construction is not needed, which eliminates a class of bugs.
===

FYI, the whole function will soon be removed and replaced with a
generic parity8() function.

Yeah, your post in that thread brought me here, in fact. Though, I didn't realize it actually removes this very function in full.

thanks,
--
js
suse labs