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();
    }
}

Reply via email to