https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116778
--- Comment #3 from Denis Chertykov <denisc at gcc dot gnu.org> --- Created attachment 59796 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59796&action=edit Modified test case "bf.c" I worked with a modified test case (bf.c): struct { unsigned long long u33 : 33; unsigned long long u40 : 40; unsigned long long u41 : 41; } a = { 0x100000, 0, 0x100000 }, b = { 1LL << 32, 0, 0 }; long long f = 1LL << 32, g = 1LL << 32; int main (void) { if (a.u33 * a.u33 != 0) goto abrt; if (a.u33 * a.u40 * a.u33 != 0) goto abrt; if (a.u41 * a.u33 != 1LL << 40) goto abrt; if (b.u33 + g != 1LL << 33) goto abrt; if (b.u33 + f != 1LL << 33) goto abrt; if (g + g != 1LL << 33) { abrt: __builtin_abort(); } }