https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92149
--- Comment #3 from Maxim Egorushkin <maxim.yegorushkin at gmail dot com> --- System V ABI doesn't seem to require unused bytes to contain any specific value. There is a specific note for _Bool: When a value of type _Bool is returned or passed in a register or on the stack, bit 0 contains the truth value and bits 1 to 7 shall be zero. Other bits are left unspecified, hence the consumer side of those values can rely on it being 0 or 1 when truncated to 8 bit.