https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91893
--- Comment #2 from alex_lop at walla dot com --- (In reply to Richard Biener from comment #1) > I believe the type you get is actually a 33-bit type and thus the _Generic > doesn't apply. IIRC "long" bitfields are a GCC extension. I am not a lawyer but if the standard says: "All other types are unchanged by the integer promotions", then I understand that in case struct _s { uint64_t val : 33; } s; s.val has to be uint64_t, hasn't it?