I have encountered a couple of good compilers/architectures/functions where moving booleans into bitfields has drastically improved code quality and performance.
Unfortunately GCC is not one of those compilers (or was not last time I tested this).
When things go right, storing several booleans in a single register can relieve a lot of register pressure, consequently eliminating a lot of register spill to the stack and making the rest of the code much more efficient.
If the architecture has an adequate set of bit handling instructions then the test and manipulation operations can be as compact or more compact than comparable operations to extract booleans from whole registers or, worse, the stack.
Generally (even on x86), bit-packing booleans should result in more efficient code, but the limitation is the compiler.