https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114536
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- The padding bit has an indeterminate value. Because the result type is an unsigned char, the indeterminate bit does not produce undefined behaviour, but it's not allowed in a constant expression. I don't think this is a bug.