On Wed, Oct 09, 2019 at 11:21:30AM +0200, Paolo Bonzini wrote: > On 09/10/19 10:16, Peter Zijlstra wrote: > >> bool bitfields preserve the magic behavior where something like this: > >> > >> foo->x = y; > >> > >> (x is a bool bitfield) would be compiled as > >> > >> foo->x = (y != 0); > > > > This is confusion; if y is a single bit bitfield, then there is > > absolutely _NO_ difference between these two expressions. > > y is not in a struct so it cannot be a single bit bitfield. :) If y is > an int and foo->x is a bool bitfield, you get the following: > > foo->x = 6; /* foo->x is 1, it would be 0 for int:1 */ > foo->x = 7; /* foo->x is 1, it would be 1 for int:1 */ > Urgh, reading hard. You're right!