https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70733
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- GCC and LLVM are known to implement the language extension of bitfields larger than int differently and this is one of the expected results. GCC does _not_ promote such bitfields and thus the negation is carried out in 'unsigned long : 37' and then zero-extended to long int.